Forum: Mikrocontroller und Digitale Elektronik STM32F0 wie sauber Uart senden per DMA mit Timer event


von Uli (Gast)


Lesenswert?

Hallo,
ich will mich an ein bestehendes Sensor System dran klemmen und habe da 
ein paar Probleme.
Der ganze UART kram läuft mit ca. 460kbit, das ist aber nicht das 
Problem!
Das original System macht sozusagen 3,5 Stoppbits, also es gibt eine 
Pause zwischen den gesendeten Bytes.

Nach kurzem nachdenken kommt man drauf das man am besten per DMA mit 
Timerevent sendet.
Hat den Vorteil das man nicht ständig im UART int steckt.
Ich muss 128 Byte pro MSG senden und dann auf IN umschalten (RS485)!

Jetzt aber mein Problem:
Ich stelle den Timer und den DMA (128Byte) ein sowie den DMA ende Int.
Dann sende ich das erste Byte und starte den Timer.
allerdings wenn ich das letzte Byte gesendet habe wird noch eins 
gesendet.
Leider kommt das immer schon raus bevor ich den DMA Ende Int bekomme und 
die Richtung umschalte.


Also, wie kann man die 128byte senden mit dem DMA über timer und am ende 
sauber die Richtung vom RS485 Bus drehen?

VG, Uli

von Jim M. (turboj)


Lesenswert?

Uli schrieb:
> Also, wie kann man die 128byte senden mit dem DMA über timer und am ende
> sauber die Richtung vom RS485 Bus drehen?

Man sende 127 Bytes mit DMA. Im DMA Interrupt macht man den UART TXC (TX 
Complete) Interrupt an und sendet das letzte Byte. Im TXC Handler wird 
dann der RS485 Bus umgeschaltet.

Es gibt µC die RS485 Umschaltung in Hardware können, z.B. EFM32 (USART) 
und LPC17xx (UART1). Dort sind solche Kopfstände nicht nötig.

: Bearbeitet durch User
von Uli (Gast)


Lesenswert?

Also doch umständlich, ich hatte es schon befürchtet.
Aber immer noch besser als alles im TX Int zu machen.

Hardware nützt nicht wirklich was, da ich ja diese blöde Pause zwischen 
den Bytes rein bauen muss. Der Entwickler von dem System hat sich wohl 
was dabei gedacht, nur was?
Ich hatte es mal mit 2 Stoppbits als Pause probiert-> ging nicht.
Es müssen wirklich 3,5 sein, ach da kann man nun lange über ein fremdes 
System nachdenken. Ist vielleicht eine Art Kopierschutz vom Hersteller.

VG, Uli

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.