0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

节省IO的小技巧:GD32 MCU如何使用一个GPIO实现串口半双工收发

聚沃科技 2024-03-15 09:39 次阅读

一般情况串口的接受和发送分别需要使用TX和RX两个引脚来实现,但在一些UART的实际应用中,通信双方身份为主机和从机,数据流是半双工的,那么当IO口资源紧张时可以使用半双工模式通过一个引脚实现数据的发送和接受,同时又保证数据不出错。我们一起来看下红枫派开发板例程中是如何实现的?

首先GD32F303的UART是支持半双工模式的,但想要真正使用起来,软硬件还需要特殊设计。

首先是硬件设计,在红枫派开发板中的RS485通信使用半双工实现,原理图是这样的:

wKgaomXzpmCATEZJAADP3FM-y0s818.png

其中很重要的两个点是:

1、在MCU的TX引脚上一定要增加一个上拉电阻,保证MCU发送和接受模式切换时IO口电平可以保持高电平的空闲态。

2、485端实际还是发送和接受分开两个引脚,那为了避免MCU发送时和485芯片的发送引脚形成电平竞争,在485芯片的RO引脚上串联一个电阻后再连接到MCU TX引脚和485的DI引脚。

如果通信双方都是半双工引脚,那么只需要有一个上拉电阻、双方都使用开漏输出模式即可。

在软件设计方面,让我们看下红枫派开发板例程的实现过程:

1、初始化时使能半双工模式,同时使能接受并关闭发送,因为除了MCU发送过程,其他状态都可以保持为接受。

wKgZomXzpmaAZnd8AAAjahjR6m4449.png

2、开启发送时,首先关闭UART接受功能,再使能发送功能,否则将接受到自己发送的数据。

wKgZomXzpmuALtt6AABNh8aWLgc977.png

3、在发送过程中可以查询TBE标志进行发送等待,但在执行完最后一个字节发送后一定要等待TC标志置位。

wKgaomXzpnGAd1LJAABAWuoKl-o839.png

4、发送完毕并等待到TC标志置位后,代表发送已经实际完成,此时关闭UART发送,使能接受。

wKgZomXzpnaAWXrLAABGIgvI9_c632.png

5、对于接受,只需要按正常的处理方式使用中断或者DMA就可以,只要前面发送步骤正确,就不会干扰到接受功能。

wKgZomXzpnuANzrCAAB0QJilucA129.png

此时,释放出来的串口的RX引脚可以做其他功能使用了,大家可以购买红枫派开发板进行这个功能的体验。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43982

    浏览量

    620916
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16022

    浏览量

    343694
  • 嵌入式
    +关注

    关注

    4983

    文章

    18295

    浏览量

    288597
  • GPIO
    +关注

    关注

    16

    文章

    1137

    浏览量

    50596
  • GD32
    +关注

    关注

    7

    文章

    333

    浏览量

    23748
收藏 人收藏

    评论

    相关推荐

    GD32 MCU移植

    gd32款国产单片机。该芯片在很多方面和STM32有异曲同工之处。资料不是很多! GD32在外设方面、和STM32没有多大区别。 只是需要注意资源的引脚分配。虽然和STM32使用方式
    发表于 03-23 13:40

    GD32MCU介绍

    样吧,但是基本上有99%,有部分寄存器比特位存在区别。另外兆芯的手册写的实在是不够精确,很多时候出现种情况就是,我命名特么的用的是GD32MCU,写个驱动还要参考ST的手册?!真是见了鬼了。比如USB的这个寄存器,兆芯的描述
    发表于 11-01 06:03

    怎么用半双工模块去实现类似全双工模块的效果呢?

    怎么用半双工模块去实现类似全双工模块的效果呢
    发表于 02-14 06:59

    GD32串口回环的设置解析

    GD32串口IO该怎样去设置呢?GD32串口接收该怎样去设置呢?
    发表于 02-28 06:33

    GD32 MCU学习这本书的理由

    首先,学习GD32 MCU原理固件库开发指南可以让我了解这个芯片的内部结构和工作原理,从而深入理解如何在嵌入式系统中使用它。其次,固件库是嵌入式系统中必不可少的软件组件之,它提供了基本的底层
    发表于 03-10 20:06

    GD32 MCU原理及固件库开发指南》 + 初读感悟

    的含义,快速实现各种应用开发功能。通过对该书的学习,也解决了我日常开发过程中遇到的些问题,还是比较有收获,该书对初学者很友好,对熟练者也有很好的帮助,可以作为GD32开发的必备工具书之
    发表于 03-31 22:11

    GD32 MCU原理及固件库开发指南》+读后感

    ,所以从STM32切换到GD32能够很快实现节省了很多精力和时间成本。并且刚好出了《GD32 MCU原理及固件库开发指南》这本书,能帮助快
    发表于 06-06 21:52

    GD32GD32读取ADC数据

    GD32的ADC有很多模式,这里教大家使用最简单的软件触发读取ADC,我使用的芯片是 GD32F350K8U6使用步骤1.初始化IO引脚设置为模拟输入模式2.初始ADC时钟和配置ADC3.软件触发
    发表于 12-02 15:06 26次下载
    【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b>读取ADC数据

    AN092GD32MCU GPIO结构与使用注意事项

    AN092 GD32 MCU GPIO结构与使用注意事项
    发表于 03-01 18:48 0次下载
    AN092<b class='flag-5'>GD32MCU</b> <b class='flag-5'>GPIO</b>结构与使用注意事项

    兆易创新GD32 MCU选型手册,适用于GD32全系列MCU

    兆易创新GD32MCU选型手册,适用于GD32全系列MCUGD32MCU选型手册,适用于GD32全系列MCU
    发表于 10-19 17:26 44次下载

    你了解GD32 MCU的命名规则吗

    下面为大家介绍GD32 MCU的通用命名规则,以GD32F303ZGT6为例,其中,GD32代表GD32
    的头像 发表于 01-13 09:38 1584次阅读
    你了解<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的命名规则吗

    GD32 MCU的选项字节是什么?

    GD32 MCU的选项字节是什么,有什么功能呢?选项字节被误篡改如何回复?
    的头像 发表于 01-17 09:42 486次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的选项字节是什么?

    不同型号的GD32 MCU如何区分?

    大家是否碰到过以下应用场景:同一套软件代码希望跑在不同型号的GD32 MCU中,但有些地方需要根据MCU型号进行调整?或者上位机或其他MCUGD3
    的头像 发表于 01-27 09:32 354次阅读
    不同型号的<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何区分?

    GD32 MCU如何将烧录口配置为GPIO使用?

    如果大家在进行GD32 MCU开发时发现GPIO引脚使用不足,可以尝试将烧录口配置为GPIO使用,这样就可以多出几个引脚使用,但使用的时候如何配置以及有哪些注意事项,本视频将会为大家进
    的头像 发表于 02-20 10:18 495次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何将烧录口配置为<b class='flag-5'>GPIO</b>使用?