TXE-Bit in der USART-Kommunikation nicht zurückgesetzt

Ich programmiere einen STM32F2 Cortex M3 Chip (Referenzhandbuch hier ). Insbesondere möchte ich Bits über den USART übertragen. Wenn ich die Seiten 620 und folgende lese, verstehe ich, dass das TXEBit des USART-Statusregisters durch Hardware zurückgesetzt werden sollte, nachdem Daten in das Datenregister geschrieben wurden.

Ich habe es nicht geschafft, das TXEzurückzusetzen. Es wird beim Booten gesetzt und bleibt auch nach dem Schreiben in das Datenregister gesetzt.

Der Grund, warum ich das TXEBit lese, ist, dass ich sicherstellen möchte, dass ich den USART nicht mit Übertragungsanforderungen überlaste. Wie kann ich das TXEBit zum Zurücksetzen bringen? Soll das TXEBit bei normaler Kommunikation gelesen werden?

Antworten (1)

Das scheint in dem Abschnitt mit der Bezeichnung "Senden und Empfangen" ungefähr auf halbem Weg nach unten behandelt zu werden. Nämlich (insbesondere siehe fett.)

  • Bevor Daten gesendet werden können, muss der Sender zuerst aktiviert werden, indem das USARTx_CR1_TE-Bit in USARTx_CR1 gesetzt wird. Laut Referenzhandbuch wird unmittelbar nach dem Setzen dieses Bits automatisch ein Idle-Frame gesendet. Beim mehrmaligen Löschen und Setzen des TE-Bits konnte ich dies nicht beobachten.

    Bevor Sie ein Zeichen an das Datenregister senden, sollten Sie das USARTx_SR_TXE-Bit testen.

    Dieses Bit zeigt an, dass das Datenregister Daten enthält, die noch nicht an das TDR-Schieberegister gesendet wurden.

    Es besteht keine Notwendigkeit, das TXE-Flag direkt zu setzen oder zu löschen, es wird gelöscht, wenn Daten in USARTx_DR geschrieben werden, und gesetzt, wenn diese Daten an das TDR übertragen werden. An dieses Bit kann ein Interrupt angeschlossen werden, wenn Daten unter Interrupt-Steuerung gesendet werden sollen.

    Wenn Sie USARTx_DR schreiben, wenn das Schieberegister leer ist, gehen die Daten direkt in das Schieberegister, die Übertragung beginnt sofort und das TXE-Flag wird sofort gesetzt.

Lesen Sie mehr: http://www.micromouseonline.com/2009/12/31/stm32-usart-basics/#ixzz1pl0toOU6


Text ab Seite 606 unten und Abb. 225 auf Seite 607 [!!!!!!!!] im
RM0033-Referenzhandbuch STM32F205xx, STM32F207xx, STM32F215xx und STM32F217xx erweiterte ARM-basierte 32-Bit-MCU scheint sich zu beziehen.