一般情況串口的接受和發(fā)送分別需要使用TX和RX兩個(gè)引腳來實(shí)現(xiàn),但在一些UART的實(shí)際應(yīng)用中,通信雙方身份為主機(jī)和從機(jī),數(shù)據(jù)流是半雙工的,那么當(dāng)IO口資源緊張時(shí)可以使用半雙工模式通過一個(gè)引腳實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接受,同時(shí)又保證數(shù)據(jù)不出錯(cuò)。我們一起來看下紅楓派開發(fā)板例程中是如何實(shí)現(xiàn)的?
首先GD32F303的UART是支持半雙工模式的,但想要真正使用起來,軟硬件還需要特殊設(shè)計(jì)。
首先是硬件設(shè)計(jì),在紅楓派開發(fā)板中的RS485通信使用半雙工實(shí)現(xiàn),原理圖是這樣的:

其中很重要的兩個(gè)點(diǎn)是:
1、在MCU的TX引腳上一定要增加一個(gè)上拉電阻,保證MCU發(fā)送和接受模式切換時(shí)IO口電平可以保持高電平的空閑態(tài)。
2、485端實(shí)際還是發(fā)送和接受分開兩個(gè)引腳,那為了避免MCU發(fā)送時(shí)和485芯片的發(fā)送引腳形成電平競爭,在485芯片的RO引腳上串聯(lián)一個(gè)電阻后再連接到MCU TX引腳和485的DI引腳。
如果通信雙方都是半雙工引腳,那么只需要有一個(gè)上拉電阻、雙方都使用開漏輸出模式即可。
在軟件設(shè)計(jì)方面,讓我們看下紅楓派開發(fā)板例程的實(shí)現(xiàn)過程:
1、初始化時(shí)使能半雙工模式,同時(shí)使能接受并關(guān)閉發(fā)送,因?yàn)槌薓CU發(fā)送過程,其他狀態(tài)都可以保持為接受。

2、開啟發(fā)送時(shí),首先關(guān)閉UART接受功能,再使能發(fā)送功能,否則將接受到自己發(fā)送的數(shù)據(jù)。

3、在發(fā)送過程中可以查詢TBE標(biāo)志進(jìn)行發(fā)送等待,但在執(zhí)行完最后一個(gè)字節(jié)發(fā)送后一定要等待TC標(biāo)志置位。

4、發(fā)送完畢并等待到TC標(biāo)志置位后,代表發(fā)送已經(jīng)實(shí)際完成,此時(shí)關(guān)閉UART發(fā)送,使能接受。

5、對于接受,只需要按正常的處理方式使用中斷或者DMA就可以,只要前面發(fā)送步驟正確,就不會(huì)干擾到接受功能。

此時(shí),釋放出來的串口的RX引腳可以做其他功能使用了,大家可以購買紅楓派開發(fā)板進(jìn)行這個(gè)功能的體驗(yàn)。
-
單片機(jī)
+關(guān)注
關(guān)注
6065文章
44946瀏覽量
648209 -
mcu
+關(guān)注
關(guān)注
146文章
17893瀏覽量
361827 -
嵌入式
+關(guān)注
關(guān)注
5144文章
19575瀏覽量
315776 -
GPIO
+關(guān)注
關(guān)注
16文章
1279瀏覽量
53705 -
GD32
+關(guān)注
關(guān)注
7文章
419瀏覽量
25243
發(fā)布評論請先 登錄
使用MCU GD32替代STM32的體會(huì)

節(jié)省IO的小技巧:GD32 MCU如何使用一個(gè)GPIO實(shí)現(xiàn)串口半雙工收發(fā) #GPIO #單片機(jī) #MCU
怎么用一個(gè)半雙工模塊去實(shí)現(xiàn)一個(gè)類似全雙工模塊的效果呢?
《GD32 MCU原理及固件庫開發(fā)指南》+讀后感
AN092GD32MCU GPIO結(jié)構(gòu)與使用注意事項(xiàng)

兆易創(chuàng)新GD32 MCU選型手冊,適用于GD32全系列MCU
GD32 串口接受異常的幾個(gè)原因

不同型號的GD32 MCU如何區(qū)分?

GD32 MCU如何將燒錄口配置為GPIO使用?

【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(14)RTC 模塊介紹

【GD32 MCU入門教程】GD32 MCU GPIO 結(jié)構(gòu)與使用注意事項(xiàng)

評論