一般情況串口的接受和發送分別需要使用TX和RX兩個引腳來實現,但在一些UART的實際應用中,通信雙方身份為主機和從機,數據流是半雙工的,那么當IO口資源緊張時可以使用半雙工模式通過一個引腳實現數據的發送和接受,同時又保證數據不出錯。我們一起來看下紅楓派開發板例程中是如何實現的?
首先GD32F303的UART是支持半雙工模式的,但想要真正使用起來,軟硬件還需要特殊設計。
首先是硬件設計,在紅楓派開發板中的RS485通信使用半雙工實現,原理圖是這樣的:
其中很重要的兩個點是:
1、在MCU的TX引腳上一定要增加一個上拉電阻,保證MCU發送和接受模式切換時IO口電平可以保持高電平的空閑態。
2、485端實際還是發送和接受分開兩個引腳,那為了避免MCU發送時和485芯片的發送引腳形成電平競爭,在485芯片的RO引腳上串聯一個電阻后再連接到MCU TX引腳和485的DI引腳。
如果通信雙方都是半雙工引腳,那么只需要有一個上拉電阻、雙方都使用開漏輸出模式即可。
在軟件設計方面,讓我們看下紅楓派開發板例程的實現過程:
1、初始化時使能半雙工模式,同時使能接受并關閉發送,因為除了MCU發送過程,其他狀態都可以保持為接受。
2、開啟發送時,首先關閉UART接受功能,再使能發送功能,否則將接受到自己發送的數據。
3、在發送過程中可以查詢TBE標志進行發送等待,但在執行完最后一個字節發送后一定要等待TC標志置位。
4、發送完畢并等待到TC標志置位后,代表發送已經實際完成,此時關閉UART發送,使能接受。
5、對于接受,只需要按正常的處理方式使用中斷或者DMA就可以,只要前面發送步驟正確,就不會干擾到接受功能。
此時,釋放出來的串口的RX引腳可以做其他功能使用了,大家可以購買紅楓派開發板進行這個功能的體驗。
-
單片機
+關注
關注
6023文章
44376瀏覽量
628393 -
mcu
+關注
關注
146文章
16667瀏覽量
347784 -
嵌入式
+關注
關注
5046文章
18817瀏覽量
298558 -
GPIO
+關注
關注
16文章
1175瀏覽量
51515 -
GD32
+關注
關注
7文章
400瀏覽量
23974
發布評論請先 登錄
相關推薦
評論