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