百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

怎么测量实际的波特率、比特率?串口通讯协议用代码怎么验证?

haoteby 2024-12-02 19:14 26 浏览

通常用串口打印乱码大多是因为串口波特率不对。那么我们应该如何测量实际的波特率呢?在此之前,让我们回顾一下波特率的概念。

什么是波特率和比特率?

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

波特率的英文是Baudrate,它表示每秒传输的码元符号的个数,是衡量数据传输速率的指标。

码元是通信信号调制的概念。具有相同时间间隔的符号通常用于表示通信中的二进制数。这种的信号称为码元。

在普通通信传输中,0V代表数字0,5V代表数字1,所以一个码元可以代表0和1两种状态,所以一个码元等于一个二进制位,波特率与比特率一致。

如果0V、2V、4V和6V在通信传输中分别代表二进制数00、01、10和11,那么每个码元可以代表四种状态,即两个二进制位,因此码元数是二进制位数的一半,此时波特率是比特率的一半。

因为在许多常见的通信中,例如串口通讯中,一个码元代表两种状态,所以我们通常直接用波特率来表示比特率。

串口通讯协议

在串口通信的协议层,它规定了数据包的内容,由起始位、主数据、校验位和停止位组成。通讯双方的数据包格式应一致,才能正常收发数据。数据帧的组成如下:

让我们实际验证数据帧是否真的是这样,编写以下代码:

代码非常简单,即使用串口连续向外发送数据0xAA(当然也可以发送其他数据)。我们的串口配置如下:

我们可以用示波器或逻辑分析仪抓取实际信号,看数据是否符合上述格式。在这里,我们用逻辑分析仪来捕捉usart1的传输信号线(TX):

从实际结果中,我们可以看出它确实是按照帧格式发送的。有些人可能对此有所怀疑。在上面的数据帧的图片中存在空闲状态。这是什么?空闲、空闲,当然不是在发送数据的状态,我们把代码改为:

初始化完成后,只发送一个0XAA,逻辑分析仪捕获的数据是:

可见,空闲状态是高电平。在前面的示例中,我们在while循环中发送了数据0XAA,因此没有空闲状态。

在这个实验中,我们需要知道两点是:

串口发送的数据首先是低位的。我们的单片机发送0XAA(10101010B),逻辑分析仪采集的有效数据为01010101b。

单片机的串口使用TTL电平,这是一个正的逻辑电平信号。逻辑分析仪采集的数据0对应实际电压0~0.5V,数据1对应实际电压2.4v~5V。

RS-232电平标准常与TTL电平标准相比较。例如,

TTL电平标准常用于普通电子电路中。在理想状态下,5V表示二进制逻辑1,0V表示逻辑0。为了提高串口通信的远距离传输和抗干扰能力,RS-232电平标准用-15V表示逻辑1,+15V表示逻辑0。

在旧的台式计算机中,通常有一个RS-232标准的COM端口(也称 DB9 接口):

在这个示例程序中,我们将串口波特率设置为115200bps。在串口通信中,符号只由一个二进制数表示(即只有0 和 1两种状态),因此波特率和比特率是相等的。

比特率代表每秒传输的二进制位数,所以我们知道传输一比特数据的时间,我们能推导出波特率吗?从逻辑分析仪上我们可以知道,发送一位数据的时间如下:

发送一位数据的时间约为8.667us,因此可以计算出一秒钟发送多少位数据:

计算出的波特率为115380bps,非常接近115200bps。最后,肯定是有一定的错误。这个错误的原因包括逻辑分析仪的质量和我们的测量环境。但这个误差也在允许范围内。您可以看到串口助手接收到的数据是否正确:

可以看到接收到的数据是正确的,即波特率是正确的。

串口波特率对不上怎么解决?

在实践中。我们可能会遇到这样情况,即代码中配置的波特率与串口助手上设置的波特率相同,但仍然存在一个异常。

例如,如果我们向串口助手发送一个字符串,那么应该显示在串口助手上的字符串就被乱码了。或者我们发送一个数据到串口助手,发现数据被移动了。

在这种情况下,大多数波特率都不对应,因此我们必须检查底层文件。如果代码中波特率计算相关值(时钟)与实际情况不符,就会出现这样的现象。例如,我的一位同事以前遇到过这种情况,这就是原因。

在使用STM32时,通常使用外部晶体振荡器,如STM32F103系列。外置晶体振荡器的输入范围为4~16mhz:

经验值一般为8MHz,而且一般的demo工程底层代码里默认的也是设置为8MHz,比如:

但是如果实际晶体振荡器没有粘贴8m,就会出现问题(例如串口波特率不正确)。追溯到源代码,串口波特率被分配到USART_Init函数中的,打开这个函数:

计算串口波特率需要一个apbclock变量,而这个值得来源从RCC_GetClocksFreq函数来,再打开这个函数:

所以要注意的是,HSE_VALUE这个值要与实际做对应。

遇到这种问题找谁说理去。经验就是不断采坑不断积累的一个过程,早点遇到坑可能也是一件好事。像类似底层的问题很少遇到,但是一旦遇到那就得比较棘手的问题了,需要很有耐心地去查找。

能用稳定的芯片是一件很幸福的事情,用不稳定、不成熟的芯片的时候,那个才是真的难啊,遇到问题真是让人怀疑人生啊,软件、硬件、芯片都可能有问题。

(注:本篇图文源于网络整理,如有侵权请联系删除,谢谢!)

相关推荐

Chrome OS 41 用 Freon 取代 X11_chrome os atom

在刚发布的ChromeOS41里,除了常规的Wi-Fi稳定性提升(几乎所有系统的changelog里都会包含这一项)、访客模式壁纸等之外,还存在底层改变。这一更新中Google移除...

苹果iPad Pro再曝光 有望今年六月发布

自进入2015年以后,有关大屏iPad的消息便一直不绝于耳,之前就有不少媒体猜想这款全新的平板电脑将会在三月发布,不过可惜的是我么只在那次发布会上看到了MacBookPro。近日@Ubuntu团队便...

雷卯针对香橙派Orange Pi 5 Max开发板防雷防静电方案

一、应用场景高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居、Linux桌面计算机、Linux网络服务器、Android平板、Android游戏机...

Ubuntu Server无法更新问题解决_ubuntu server not found

上周老家的一台运行UbuntuServer的盒子无法连接上了,中秋这两天回来打开,顺手更新一下发现更新报错。提示`E:Releasefileforhttps://mirrors.aliyun...

虚幻引擎5正式版发布:古墓丽影&巫师新作采用、新一代实时渲染

机器之心报道编辑:杜伟、陈萍虚幻引擎5的目标是「助力各种规模的团队在视觉领域和互动领域挑战极限,施展无限潜能」。...

AMD Milan-X双路霄龙7773X平台基准测试曝光 CPU缓存总量超1.5GB

OpenBenchmarking基准测试数据库刚刚曝光了AMDMilan-X双路霄龙7773X平台的跑分成绩,虽然很快就被撤下,但我们还是知晓了高达1.6GB的总CPU缓存。早些时...

ROS机器人建模_ros机器人硬件搭建

...

全网最新的Dify(1.7.2)私有化离线部署教程(ARM架构)

Hello,大家好!近期工作中有涉及到Dify私有化离线部署,特别是针对于一些国产设备。因此特别整理了该教程,实测有效!有需要的小伙伴可以参考下!本文主要针对Dify1.7.2最新版本+国产操作系...

在ubuntu下新建asp.net core项目_创建ubuntu

本文一步步讲述在ubuntu下用visualstudiocode创建asp.netcore项目的过程。step1:环境操作系统:virtualbox下安装的lubuntu。请不要开启“硬件...

在晶晨A311D2处理器上进行Linux硬件视频编码
在晶晨A311D2处理器上进行Linux硬件视频编码

在KhadasVIM4AmogicA311D2SBC上,我更多的时间是在使用Ubuntu22.04。它的总体性能还不错,只不过缺少3D图形加速和硬件视...

2025-08-26 17:22 haoteby

Nacos3.0重磅来袭!全面拥抱AI,单机及集群模式安装详细教程!

之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JD...

电影质量级渲染来了!虚幻引擎5.3正式发布:已开放下载

快科技9月8日消息,日前,Unrealengine正式发布了虚幻引擎5.3,带来了大量全方位的改进。...

2025如何选购办公电脑?极摩客mini主机英特尔系列选购指南

当下,迷你主机的性能越来越强,品类也越来越多。但是CPU是不变的,基本都是AMD和英特尔的。有一个小伙伴在评论区提问,我应该如何在众多机器中选购一台符合自己的迷你主机呢?那今天我们优先把我们的系列,分...

ubuntu 20.04+RTX4060 Ti+CUDA 11.7+cudnn

ububtu添加国内源sudocp/etc/apt/sources.list/etc/apt/sources.list.backupsudovim/etc/apt/sources.lis...

Linux Mint 18将重新基于Ubuntu 16.04 带来更好硬件支持

项目负责人ClementLefebvre在本月6日披露了关于LinuxMint18“Sarah”操作系统的大量信息,包括带来全新扁平化体验的Mint-Y主题。而现在,这款将于年底之前上线的操作...