64位系统下串口打印出现乱码_干货 | 串口通讯你真的会了吗?不妨看看这些经验...

本文探讨了串口通讯中的波特率概念,解释了波特率与比特率的关系,并通过实例展示了如何通过逻辑分析仪验证数据帧格式。在遇到串口通讯乱码问题时,可能是波特率配置不一致导致,解决方法包括检查底层代码中的波特率计算和晶振频率设置。文章强调了实际应用中正确理解和设置波特率的重要性。
摘要由CSDN通过智能技术生成

平时使用串口打印出现乱码的绝大部分原因是串口波特率没对。那么我们怎么测量实际的波特率呢?在这之前,顺便一起回顾一下波特率的概念。

什么是波特率、比特率?

  • 比特率(Bitrate)表示每秒钟传输的二进制位数,单位为比特每秒(bit/s)。

  • 波特率(Baudrate)表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标。

  • 码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。

常见的通讯传输中,用 0V 表示数字 0, 5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致。

如果在通讯传输中,有 0V、2V、 4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。

因为很多常见的通讯(比如串口通讯)中一个码元都是表示两种状态,所以大家常常直接以波特率来表示比特率 。

串口通讯协议

在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据,其数据帧组成如下:

191707d182dbe04a7739b00c6cbc7f07.png

下面我们来实际验证一下其数据帧是不是真的是这样的。编写如下代码:

cacbe1c3b56239c6aa6b9dbeb7248982.png

代码很简单,就是使用串口不断地往外发数据0xAA(当然发送其它数据也是可以的) 。我们的串口配置如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值