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

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

3天内不再提示

GD32 485发送异常最常见原因

聚沃科技 2024-01-16 09:39 次阅读

相信有小伙伴们遇到过这样的问题,在使用GD32进行串口485发送的时候,明明发送了特定长度的数据,但从机就是不响应,现在就让我们来解析下最常见的一个原因。

我们先来看一段代码:

wKgaomWl3gqAJZXVAABoigA4cuY198.png

这是采用轮训方式进行485发送的函数,首先将485传输方向设置为发送,然后进行长度为len的数据发送,发送完成后将485传输方向设置为接收。看似这段代码没有问题,但当放在MCU上运行后发现,从机会少收到两个字节的数据。

这是因为,串口是有数据寄存器和移位寄存器,当最后一次判断TBE不为“0”并调用usart_data_transmit函数后,实际上倒数第二个字节的数据正在发送移位寄存器中对外发送,最后一个字节在数据寄存器中,此时如果将485传输方向改为接收,那么最后两个字节的数据将不会发送到485总线上。

wKgaomWl3g6AGAiqAAFHRDPXKl8257.png

解决这个问题的办法也很简单,只需要增加一个判断TC的过程就可以了。

wKgZomWl3hOAb3ZeAACHd7DUbGU502.png

TC标志位用来指示是不是所有的数据(包括数据寄存器和发送移位寄存器)都已经发送完成,如果发送完成则置“1”。

前面讲述的是使用轮训方式进行发送,如果用DMA发送和中断发送怎么办呢?其实道理是一样的,在DMA发送和中断发送两种模式中都要打开TC中断,只有进入了TC中断后,才能将传输方向切换为接收,小伙伴们明白了吗?

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

    关注

    6029

    文章

    44480

    浏览量

    631596
  • 串口
    +关注

    关注

    14

    文章

    1540

    浏览量

    75991
  • GD32
    +关注

    关注

    7

    文章

    403

    浏览量

    24088
收藏 人收藏

    评论

    相关推荐

    GD32和STM32单片机的区别

     GD32和STM32都是常见的32位单片机系列。STM32是意法半导体(STMicroelectronics)公司推出的产品线,而GD32则是国内公司长盛电子推出的产品线。
    发表于 08-07 17:36 5468次阅读
    <b class='flag-5'>GD32</b>和STM32单片机的区别

    GD32 485发送异常最常见原因#GD32 #单片机 #单片机开发 #嵌入式开发

    mcu电工单片机开发
    聚沃科技
    发布于 :2024年01月17日 09:46:38

    什么是GD32

    一、前言什么GD32GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。所以GD32和STM32有很多地方都是一样的,不过
    发表于 08-12 07:46

    GD32芯片包添加步骤有哪些

    **GD32芯片包添加步骤**GD32开发环境可以有多个选择,常见的开发编译环境有:Keil4,keil5,IAR。本教程针对keil5如何添加GD32系列mcu芯片型号做出讲解。1.
    发表于 11-22 08:30

    如何利用stm32f407+485发送modbus RTU协议

    任务内容用485发送modbus TCP协议,用modbus调试软件modsim32 查看发送及响应的数据。用的是正点原子的开发板,stm32f407.任务实现485
    发表于 02-21 07:04

    RS485发送时,影响其他串口接收?为什么呢?

    今天做了一个小项目1变连接的是航模遥控器接收SBUS数据。使用的是stm32的串口3。2还有一边连接的是485控制云台摄像头,使用的是串口2转485。正常sbus数据不会停,会一直接收。即使失控也会有数据,只要不掉电。但是当我给485
    发表于 11-12 16:39

    STM32F103ZET6基于RS485发送接收简单例程

    这是一个STM32F103ZET6基于HAL库的RS485发送接收简单例程,如需后期开发只需要添加自己的串口协议。
    发表于 08-29 16:08 306次下载

    GD32 DMA串口通讯DEMO

    GD32 DMA串口通讯GD32 USART0 DMA发送与接收不定长数据GD32E230简介GD32E230采用DMA进行串口通讯例程
    发表于 11-26 19:36 74次下载
    <b class='flag-5'>GD32</b> DMA串口通讯DEMO

    stm32f407+485发送modbus RTU协议 适合初学者

    任务内容用485发送modbus TCP协议,用modbus调试软件modsim32 查看发送及响应的数据。用的是正点原子的开发板,stm32f407.任务实现485
    发表于 12-24 19:16 54次下载
    stm32f407+<b class='flag-5'>485</b><b class='flag-5'>发送</b>modbus RTU协议 适合初学者

    485发送接收切换问题讨论

    485发送接收切换导致最后一位数据停止位丢失)现象现象单片机485发送接收常规做法是在发送完成中断控制4
    发表于 01-14 13:20 6次下载
    <b class='flag-5'>485</b><b class='flag-5'>发送</b>接收切换问题讨论

    GD32芯片怎么样?GD32芯片运行速度慢的原因

    STM32、TI MSP、Freescale Kinetis等常见的MCU产品相比,GD32芯片具有低功耗、高性价比和良好的性能等特点。
    发表于 08-07 18:25 3999次阅读

    gd32和stm32哪个好?

    gd32和stm32哪个好? GD32和STM32是两种常见的微控制器系列,是开发者们常用的开发板核心。尽管它们相似之处很多,但它们也存在着差异,本文将深入探讨GD32和STM32,分
    的头像 发表于 08-16 11:32 1565次阅读

    GD32与STM32兼容吗?

    GD32与STM32兼容吗? GD32与STM32是两个不同的微控制器系列,是由两个不同的公司设计和生产的。GD32系列是由国内的长沙国芯微电子设计和生产的,而STM32系列则是由欧洲
    的头像 发表于 08-16 11:32 2781次阅读

    GD32 串口接受异常的几个原因

    前面我们介绍过GD32 485发送时出现异常最常见原因,有小伙伴反馈想要知道
    的头像 发表于 01-18 09:57 4025次阅读
    <b class='flag-5'>GD32</b> 串口接受<b class='flag-5'>异常</b>的几个<b class='flag-5'>原因</b>

    GD32 MCU ISP失败的原因

    玩过GD32的小伙伴们都知道,GD32 MCU支持ISP,即在系统编程,前面的常见问题也给大家讲过什么是ISP,什么是IAP?那有没有小伙伴遇到过ISP失败的情况,失败的原因是什么呢?
    的头像 发表于 02-28 09:23 1335次阅读
    <b class='flag-5'>GD32</b> MCU ISP失败的<b class='flag-5'>原因</b>