关于MSP430单片机串口通信丢失数据

本文介绍了在使用MSP430单片机进行串口通信时遇到的数据丢失问题及解决方案。通过研究官方示例和User’s Guide,发现波特率配置不当会导致数据丢失。在1MHz的晶振下,设置波特率为9600时,正确配置UCBRx、UCBRFx、UCBRSx和UCOS16参数,问题得到解决。提供了一段修复后的代码示例。
摘要由CSDN通过智能技术生成

研究摸索了接近一个星期,把所遇到的问题写出来以供参考。
最开始看一个官方的串口收发数据的示例,然后自己操作后收发数据老是会丢失一个数据,然后看User’s Guide,取消了函数收发的方法直接用寄存器操作,问题解决。
接下来写一个组帧协议,收发完全正常。但是看上去非常的杂乱就想美化一下,就开始写函数,进行函数调用。好了,这下问题又来了,数据又会丢失。
接近一个星期的思前想后,发现不是自己写的代码有问题,是官方示例的波特率配置问题。大家都知道波特率表示每秒钟传送的码元符号的个数,是衡量数据传输速率的指标,它用单位时间内载波调制状态改变的次数来表示。晶振为1MHz波特率为15200,我自己改成了9600,问题解决。如何配置波特率在User’s Guide里面有想要的答案,详阅即可。MSP430FR2311在586页:
Setting a Baud Rate
For a given BRCLK clock source, the baud rate used determines the required division factor N:
N = fBRCLK/Baud Rate
The division factor N is often a noninteger value, thus, at least one divider and one modulator stage is
used to meet the factor as closely as possible.
If N is equal or greater than 16, it is recommended to use the oversampling baud-rate generation mode by
setting UCOS16.
NOTE: Baud Rate settings quick

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值