RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

節(jié)省IO的小技巧:GD32 MCU如何使用一個(gè)GPIO實(shí)現(xiàn)串口半雙工收發(fā)

聚沃科技 ? 2024-03-15 09:39 ? 次閱讀

一般情況串口的接受和發(fā)送分別需要使用TX和RX兩個(gè)引腳來(lái)實(shí)現(xiàn),但在一些UART的實(shí)際應(yīng)用中,通信雙方身份為主機(jī)和從機(jī),數(shù)據(jù)流是半雙工的,那么當(dāng)IO口資源緊張時(shí)可以使用半雙工模式通過(guò)一個(gè)引腳實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接受,同時(shí)又保證數(shù)據(jù)不出錯(cuò)。我們一起來(lái)看下紅楓派開(kāi)發(fā)板例程中是如何實(shí)現(xiàn)的?

首先GD32F303的UART是支持半雙工模式的,但想要真正使用起來(lái),軟硬件還需要特殊設(shè)計(jì)。

首先是硬件設(shè)計(jì),在紅楓派開(kāi)發(fā)板中的RS485通信使用半雙工實(shí)現(xiàn),原理圖是這樣的:

wKgaomXzpmCATEZJAADP3FM-y0s818.png

其中很重要的兩個(gè)點(diǎn)是:

1、在MCU的TX引腳上一定要增加一個(gè)上拉電阻,保證MCU發(fā)送和接受模式切換時(shí)IO口電平可以保持高電平的空閑態(tài)。

2、485端實(shí)際還是發(fā)送和接受分開(kāi)兩個(gè)引腳,那為了避免MCU發(fā)送時(shí)和485芯片的發(fā)送引腳形成電平競(jìng)爭(zhēng),在485芯片的RO引腳上串聯(lián)一個(gè)電阻后再連接到MCU TX引腳和485的DI引腳。

如果通信雙方都是半雙工引腳,那么只需要有一個(gè)上拉電阻、雙方都使用開(kāi)漏輸出模式即可。

在軟件設(shè)計(jì)方面,讓我們看下紅楓派開(kāi)發(fā)板例程的實(shí)現(xiàn)過(guò)程:

1、初始化時(shí)使能半雙工模式,同時(shí)使能接受并關(guān)閉發(fā)送,因?yàn)槌薓CU發(fā)送過(guò)程,其他狀態(tài)都可以保持為接受。

wKgZomXzpmaAZnd8AAAjahjR6m4449.png

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

wKgZomXzpmuALtt6AABNh8aWLgc977.png

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

wKgaomXzpnGAd1LJAABAWuoKl-o839.png

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

wKgZomXzpnaAWXrLAABGIgvI9_c632.png

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

wKgZomXzpnuANzrCAAB0QJilucA129.png

此時(shí),釋放出來(lái)的串口的RX引腳可以做其他功能使用了,大家可以購(gòu)買(mǎi)紅楓派開(kāi)發(fā)板進(jìn)行這個(gè)功能的體驗(yàn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634628
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17123

    瀏覽量

    350979
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304796
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52051
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    24326
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用MCU GD32替代STM32的體會(huì)

    GD32作為國(guó)產(chǎn)MCU里的佼佼者,產(chǎn)品線也比較豐富,是替代STM32的個(gè)很好的選擇。前段時(shí)間有個(gè)項(xiàng)目用到
    發(fā)表于 07-29 08:53 ?9803次閱讀

    怎么用個(gè)半雙工模塊去實(shí)現(xiàn)個(gè)類(lèi)似全雙工模塊的效果呢?

    怎么用個(gè)半雙工模塊去實(shí)現(xiàn)個(gè)類(lèi)似全雙工模塊的效果呢
    發(fā)表于 02-14 06:59

    GD32串口回環(huán)的設(shè)置解析

    GD32串口IO該怎樣去設(shè)置呢?GD32串口接收該怎樣去設(shè)置呢?
    發(fā)表于 02-28 06:33

    GD32 MCU原理及固件庫(kù)開(kāi)發(fā)指南》+讀后感

    ,所以從STM32切換到GD32能夠很快實(shí)現(xiàn),節(jié)省了很多精力和時(shí)間成本。并且剛好出了《GD32 MCU原理及固件庫(kù)開(kāi)發(fā)指南》這本書(shū),能幫助快
    發(fā)表于 06-06 21:52

    AN092GD32MCU GPIO結(jié)構(gòu)與使用注意事項(xiàng)

    AN092 GD32 MCU GPIO結(jié)構(gòu)與使用注意事項(xiàng)
    發(fā)表于 03-01 18:48 ?0次下載
    AN092<b class='flag-5'>GD32MCU</b> <b class='flag-5'>GPIO</b>結(jié)構(gòu)與使用注意事項(xiàng)

    兆易創(chuàng)新GD32 MCU選型手冊(cè),適用于GD32全系列MCU

    兆易創(chuàng)新GD32MCU選型手冊(cè),適用于GD32全系列MCUGD32MCU選型手冊(cè),適用于GD32全系列MCU
    發(fā)表于 10-19 17:26 ?49次下載

    你了解GD32 MCU的命名規(guī)則嗎

    下面為大家介紹GD32 MCU的通用命名規(guī)則,以GD32F303ZGT6為例,其中,GD32代表GD32
    的頭像 發(fā)表于 01-13 09:38 ?3623次閱讀
    你了解<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的命名規(guī)則嗎

    GD32 MCU的選項(xiàng)字節(jié)是什么?

    GD32 MCU的選項(xiàng)字節(jié)是什么,有什么功能呢?選項(xiàng)字節(jié)被誤篡改如何回復(fù)?
    的頭像 發(fā)表于 01-17 09:42 ?1358次閱讀
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的選項(xiàng)字節(jié)是什么?

    GD32 串口接受異常的幾個(gè)原因

    前面我們介紹過(guò)GD32 485發(fā)送時(shí)出現(xiàn)異常的最常見(jiàn)原因,有小伙伴反饋想要知道GD32 串口接受異常的可能原因,今天我們就來(lái)安排。
    的頭像 發(fā)表于 01-18 09:57 ?4217次閱讀
    <b class='flag-5'>GD32</b> <b class='flag-5'>串口</b>接受異常的幾個(gè)原因

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

    大家是否碰到過(guò)以下應(yīng)用場(chǎng)景:同套軟件代碼希望跑在不同型號(hào)的GD32 MCU中,但有些地方需要根據(jù)MCU型號(hào)進(jìn)行調(diào)整?或者上位機(jī)或其他MCU
    的頭像 發(fā)表于 01-27 09:32 ?989次閱讀
    不同型號(hào)的<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何區(qū)分?

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

    如果大家在進(jìn)行GD32 MCU開(kāi)發(fā)時(shí)發(fā)現(xiàn)GPIO引腳使用不足,可以嘗試將燒錄口配置為GPIO使用,這樣就可以多出幾個(gè)引腳使用,但使用的時(shí)候如何配置以及有哪些注意事項(xiàng),本視頻將會(huì)為大家進(jìn)
    的頭像 發(fā)表于 02-20 10:18 ?1964次閱讀
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何將燒錄口配置為<b class='flag-5'>GPIO</b>使用?

    GD32 MCU 入門(mén)教程】GD32 MCU 常見(jiàn)外設(shè)介紹(14)RTC 模塊介紹

    GD32 MCU內(nèi)部提供了個(gè)RTC(實(shí)時(shí)時(shí)鐘)模塊,通過(guò)RTC可以實(shí)現(xiàn)日歷時(shí)鐘、鬧鐘等功能。RTC也可以用于深度睡眠或待機(jī)模式的低功耗喚醒
    的頭像 發(fā)表于 08-23 09:18 ?452次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入門(mén)教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 常見(jiàn)外設(shè)介紹(14)RTC 模塊介紹

    GD32 MCU 入門(mén)教程】GD32 MCU FPU 使用方法

    GD32 MCU FPU 使用方法
    的頭像 發(fā)表于 08-25 09:24 ?572次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入門(mén)教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> FPU 使用方法

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

    本文是專(zhuān)門(mén)為基于GD32 MCU開(kāi)發(fā)的工程設(shè)計(jì)人員提供,主要介紹了GPIO的功能配置、內(nèi)部結(jié)構(gòu)以及在不同場(chǎng)景使用時(shí)的注意事項(xiàng),旨在幫助GD32 MC
    的頭像 發(fā)表于 09-07 10:34 ?719次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>入門(mén)教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>GPIO</b> 結(jié)構(gòu)與使用注意事項(xiàng)
    RM新时代网站-首页