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

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

3天内不再提示

HK32MCU应用笔记(四)| 关于老版本HK32F103串口USART偶尔出现数据错误

jf_pJlTbmA9 来源:航顺芯片 作者:航顺芯片 2023-09-18 11:00 次阅读

有部分客户在使用HK32F103系列芯片的串口通讯时,偶尔出现数据错误的原因具体有以下几点:

1.串口通讯时因为可能存在累计误差偶尔造成数据错误。

2.用户在配置串口波特率参数时因为HK有细微地方与ST不同。

下面就以上原因,用户根据如下修改,可以使串口通讯正常工作。

对于波特率累计误差,用户可以采用三种方式来解决:

1. 修改STOP bit位数,把stop bit设成0.5,但是我们芯片的发送stop bit宽度也会变成0.5。这种方法要注意的是:对方芯片有可能无法接受0.5 stop bit。

2.把波特率设置稍微提高1%左右。比如对方发出115200bps,HK的芯片波特率需要设置为115200*1.01=116352bps(偏差小于1%)。

3.建议HK芯片和对方发送数据时,都不要背靠背发送。

关于上述第二种波特率参数配置,主要是用户需要较高的波特率时,导致波特率配置寄存器的整数部分为1,还存在小数部分的情况。这时HK芯片对小数部分会被忽略掉,导致USART输出的bit宽度不对。出现这种应用时,用户需要调整USART工作频率和波特率的关系,避免波特率配置寄存器的整数部分为1,还存在小数部分。

另外应用串口(USART)还应注意以下2点:

1.串口USART RX IDLE中断问题

用户串口通讯打开了RX IDLE中断后出现反复进入的原因是因为IDLE中断标志不能清除。

解决方法:

Step 1. 关闭IDLE 中断.

Step 2. 在RXNE 事件后:

A. 清除IDLE标志.

B. 然后使能IDLE中断.

Step 3. 在IDLE中断触发后: 除能IDLE中断.

2.串口USART使用DMA传输时, DMA通道关闭后DMA_CNDTRn值Reload的问题。

这个与我们HK的DMA设置与ST略有不同,HK的DMA通道在关闭后,对应的DMA_CNDTRn的值会被重新加载为本次发送开始前用户配置的值(即已经发送的数据个数)。如果客户在dma发送完成后关闭了对应的通道,然后读取其DMA_CNDTRn的值就会出现非零值。如果用户想要使用拼接方式发送数据(在一次数据未发完前追加新的数据发送)且前一次数据已发送完成的情况下就会出现错误的数据拼接。

处理数据拼接的解决方案:

如果是单次数据发送模式,用户在DMA数据发送完成后不用关闭DMA通道,在追加新的数据发送时,先在未关闭DMA通道的情况下调用库函数读出DMA_CNDTRn寄存器的值,再关闭DMA通道,然后追加新的数据到缓存buffer(可能是用户在RAM中定义的一个数组),再启用DMA发送,这样来完成数据的拼接发送。

来源:航顺芯片

审核编辑:汤梓红

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

    关注

    30

    文章

    5032

    浏览量

    117746
  • 串口
    +关注

    关注

    14

    文章

    1483

    浏览量

    74523
  • USART
    +关注

    关注

    1

    文章

    186

    浏览量

    30423
收藏 人收藏

    评论

    相关推荐

    HK32MCU用笔记(四)| 关于老版本HK32F103串口USART偶尔出现数据错误

    有部分客户在使用HK32F103系列芯片的串口通讯时,偶尔出现数据错误的原因具体有以下几点。
    发表于 02-08 15:23 0次下载
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(四)| <b class='flag-5'>关于</b><b class='flag-5'>老版本</b><b class='flag-5'>HK32F103</b><b class='flag-5'>串口</b><b class='flag-5'>USART</b><b class='flag-5'>偶尔</b><b class='flag-5'>出现</b><b class='flag-5'>数据</b><b class='flag-5'>错误</b>

    HK32MCU用笔记(二十)| HK32F103xC/D/E USB枚举情况分析(二)

    HK32MCU用笔记(二十)| HK32F103xC/D/E USB枚举情况分析(二)
    的头像 发表于 09-18 10:58 347次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(二十)| <b class='flag-5'>HK32F103</b>xC/D/E USB枚举情况分析(二)

    HK32MCU用笔记(十九)| HK32F103xC/D/E USB枚举情况分析

    HK32MCU用笔记(十九)| HK32F103xC/D/E USB枚举情况分析
    的头像 发表于 09-18 10:58 443次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(十九)| <b class='flag-5'>HK32F103</b>xC/D/E USB枚举情况分析

    HK32MCU用笔记(十八)| HK32F103xC/D/E-DAC的应用及注意事项

    HK32MCU用笔记(十八)| HK32F103xC/D/E-DAC的应用及注意事项
    的头像 发表于 09-18 10:58 654次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(十八)| <b class='flag-5'>HK32F103</b>xC/D/E-DAC的应用及注意事项

    HK32MCU用笔记(十七)| HK32F103xC/D/E-flash擦写应用及注意事项

    HK32MCU用笔记(十七)| HK32F103xC/D/E-flash擦写应用及注意事项
    的头像 发表于 09-18 10:58 705次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(十七)| <b class='flag-5'>HK32F103</b>xC/D/E-flash擦写应用及注意事项

    HK32MCU用笔记(十六)| HK32F103xC/D/E-Timer的应用及注意事项

    HK32MCU用笔记(十六)| HK32F103xC/D/E-Timer的应用及注意事项
    的头像 发表于 09-18 10:58 483次阅读

    HK32MCU用笔记(十四)| HK32F103x/C/D/E-TIM1的应用及注意事项

    HK32MCU用笔记(十四)| HK32F103x/C/D/E-TIM1的应用及注意事项
    的头像 发表于 09-18 10:58 480次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(十四)| <b class='flag-5'>HK32F103</b>x/C/D/E-TIM1的应用及注意事项

    HK32MCU用笔记(十三)| HK32F103xC/D/E-ADC的应用及注意事项

    HK32MCU用笔记(十三)| HK32F103xC/D/E-ADC的应用及注意事项
    的头像 发表于 09-18 10:58 732次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(十三)| <b class='flag-5'>HK32F103</b>xC/D/E-ADC的应用及注意事项

    HK32MCU用笔记(十二)| HK32F103xC/D/E的GPIO的应用及注意事项

    HK32MCU用笔记(十二)| HK32F103xC/D/E的GPIO的应用及注意事项
    的头像 发表于 09-18 10:58 664次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(十二)| <b class='flag-5'>HK32F103</b>xC/D/E的GPIO的应用及注意事项

    HK32MCU用笔记(十一)| HK32F103xC/D/E的flash读保护应用及注意事项

    HK32MCU用笔记(十一)| HK32F103xC/D/E的flash读保护应用及注意事项
    的头像 发表于 09-18 10:58 691次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(十一)| <b class='flag-5'>HK32F103</b>xC/D/E的flash读保护应用及注意事项

    HK32MCU用笔记(九)| HK32F103x8xB系列CAN的应用解决方案

    HK32MCU用笔记(九)| HK32F103x8xB系列CAN的应用解决方案
    的头像 发表于 09-18 10:59 421次阅读

    HK32MCU用笔记(七)| 航顺HK32MCU闩锁效应问题研究及预防措施

    HK32MCU用笔记(七)| 航顺HK32MCU闩锁效应问题研究及预防措施
    的头像 发表于 09-18 10:59 1091次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(七)| 航顺<b class='flag-5'>HK32MCU</b>闩锁效应问题研究及预防措施

    HK32MCU用笔记(六)| HK32MCU芯片调试心得

    HK32MCU用笔记(六)| HK32MCU芯片调试心得
    的头像 发表于 09-18 10:59 475次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(六)| <b class='flag-5'>HK32MCU</b>芯片调试心得

    HK32MCU用笔记(五)| 关于应用HK32F030延时效率问题

    HK32MCU用笔记(五)| 关于应用HK32F030延时效率问题
    的头像 发表于 09-18 11:00 402次阅读

    HK32MCU用笔记(二)| 国外品牌采用航顺HK32F030R8T6代替出现串口不兼容解决方法

    HK32MCU用笔记(二)| 国外品牌采用航顺HK32F030R8T6代替出现串口不兼容解决方法
    的头像 发表于 09-18 11:00 1383次阅读
    <b class='flag-5'>HK32MCU</b>应<b class='flag-5'>用笔记</b>(二)| 国外品牌采用航顺<b class='flag-5'>HK</b>32F030R8T6代替<b class='flag-5'>出现</b><b class='flag-5'>串口</b>不兼容解决方法