Forum: Mikrocontroller und Digitale Elektronik RS485 mit STM32 & SN65HVD72DR


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Moot S. (mootseeker)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich würde mich gerne etwas mit RS-485 beschäftigen um ein kleines 
Netzwerk aufbauen zu können.

Als RS-485 Wandler verwende ich folgenden Chip: SN65HVD72DR

Steuern möchte ich das ganze mit einem STM32L412KBT6 welchen ich über 
UART angeschlossen habe. Schema zum RS Wandler liegt im Anhang.

Das Schema habe ich mit aus Referenzschalungen von Ti kopiert.

Auf was muss ich nun bei der Programmierung achten. Gibt es da Beispiel 
Codes?
Kann ich normal mein UART String abschicken und der Chip Wandelt das 
automatisch?

Vielen Dank für eure Hilfe!

von STK500-Besitzer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moot S. schrieb:
> Auf was muss ich nun bei der Programmierung achten. Gibt es da Beispiel
> Codes?
Manche STM32 können die RS485-Pin-Steuerung in Hardware.
Dazu muss das USART nur entsprechend konfiguriert werden.

> Kann ich normal mein UART String abschicken und der Chip Wandelt das
> automatisch?

ja, nur muss die Richtung de Transceivers zeitlich richtig geschaltet 
werden.

von A. K. (foxmulder)


Bewertung
0 lesenswert
nicht lesenswert
Du musst zusätzlich zum UART noch die Datenrichtung mitgeben.
Manche Mikrocontroller haben das in Hardware integriert, zB. der 
Atmega4809 dort kann man eine Pin zur Bestimmung der Datenrichtung 
festelegen.

mfg

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
was meinst du mit 'wandelt der Chip'? Die Transceiver Bausteine machen 
nur eine elektrische Anpassung.
Für so ein RS485 Netz haben die STM32 die automatische Steuerung der 
Sendefreigabe oder eine Multidrop Funktion. Mit 9 Bit hat man 8 Daten + 
Unterscheidung Daten/Adressen. Der Empfänger kann sich schlafen legen 
und mit der eingestellten Adresse geweckt werden. Dazu DMA und man kann 
auch hohe Bitraten effizient nutzen.

von Moot S. (mootseeker)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hätte ich in diesem Fall diesen Hacken setzten sollen?

und wie sieht das im Code aus mit der Adresse (ich kann mir das noch 
nicht ganz vorstellen). Hat jemand ein Beispiel wie ich ein Gerät 
Adressiere um diesem Daten zu senden?

von Johannes S. (jojos)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
in CubeMX den Multidrop Modus wählen, dann kann man die weiteren 
Einstellungen setzen.
Und noch 9 Bit für Daten einstellen, hatte ich in dem Beispiel nicht 
gemacht.

: Bearbeitet durch User
von STK500-Besitzer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moot S. schrieb:
> Hätte ich in diesem Fall diesen Hacken setzten sollen?

Nö.

von STK500-Besitzer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Etwas längere Antwort:
https://www.st.com/resource/en/reference_manual/dm00151940-stm32l41xxx42xxx43xxx44xxx45xxx46xxx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

Seite 1223.
Ob CubeMX das einfach so unterstützt, musst du mal gucken (jojos hatte 
ja schon eine Beschreibung gepostet).

von Moot S. (mootseeker)


Bewertung
0 lesenswert
nicht lesenswert
STK500-Besitzer schrieb:
> Seite 1223

Ich glaube das ist nicht, das was ich brauche?

von STK500-Besitzer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moot S. schrieb:
> Ich glaube das ist nicht, das was ich brauche?

Ist das jetzt eine Aussage oder eine Frage?

von Moot S. (mootseeker)


Bewertung
0 lesenswert
nicht lesenswert
STK500-Besitzer schrieb:
> Ist das jetzt eine Aussage oder eine Frage?

Ja... beides, ich möchte ja RX/TX verwenden (Hab ich im Schema ja auch 
so verbunden). Darum glaube ich das ich kein onewire Modus über den TX 
Pin benötige. Ausser ich habe das jetzt falsch verstanden.

von STK500-Besitzer (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Moot S. schrieb:
> so verbunden). Darum glaube ich das ich kein onewire Modus über den TX
> Pin benötige. Ausser ich habe das jetzt falsch verstanden.

OneWire ist natürlich falsch.
Da war ich zu schnell.

jojos hatte doch schon die Multiprozessor Communication angespochen.

Lies dir einfach mal das USART-Kapitel im (geposteten) Reference Manual 
durch.
Irgendwo müsste da was zu dem Thema stehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.