通常用串口打印乱码大多是因为串口波特率不对。那么我们应该如何测量实际的波特率呢?在此之前,让我们回顾一下波特率的概念。
什么是波特率和比特率?
比特率的英文是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这个值要与实际做对应。
遇到这种问题找谁说理去。经验就是不断采坑不断积累的一个过程,早点遇到坑可能也是一件好事。像类似底层的问题很少遇到,但是一旦遇到那就得比较棘手的问题了,需要很有耐心地去查找。
能用稳定的芯片是一件很幸福的事情,用不稳定、不成熟的芯片的时候,那个才是真的难啊,遇到问题真是让人怀疑人生啊,软件、硬件、芯片都可能有问题。
1 问 如果是人工繁殖的蟹苗,应询问蟹苗的日龄、饵料投喂情况、淡化处理过程以及池内蟹苗的密度。饲养管理较好的蟹苗,日龄一般在4~5天,经过4~5天的淡化处理后,池内蟹苗的密度较大,且比较活跃。如果购买的是天然蟹苗,则要了解蟹苗捕捞的天数及淡化处理情况;如未经淡化处理千万不要购买。 2 称 将准备出...
相信大家都很熟悉平台盈利的逻辑。基本上开通了创作者身份后就可以发表作品了,有了播放量就有收益了。不过,这部分钱也不是那么容易拿到的。对于新手来说,最不可控的就是根本不知道自己发哪种视频,播放量才会高,所以很多新手做自媒体,基本上不到7天就放弃了。 那么有没有什么活动只要发布视频就能赚到钱的? 答...
传统行业一般通过地图、独立、小程序和4种方法进行拓展客户。传统行业拓展渠道很难,即使有一小部分拓展成功的传统,也是一路跌跌撞撞被骗了无数次,兜兜转转绕了无数圈,才能拨开重重迷雾,真正建立起来网络获客渠道。一路上弯路很多,忽悠的人也很多,因为个人也是这样一路走过来的。过时的推广方法前几天忽然有人加好友...
因为比较受到环境限制,所以小城市可落地的项目真的不是很多,你会发现,小城市,人流基本都聚集在学校附近,或者景区附近,或者儿童游乐场,这些地方,并且大多数的孩子是由爷爷奶奶来照顾的,所以消费能力基本比较有限制,所以能落地的,就会较少了。 看市场 前面我们有说到过,小城市,基本都是爷爷奶奶在照顾...
跟前几年比,现在的钱是真的难赚。对普通人来说,有哪些比较靠谱的创业机会?投入最低的,当然也是零成本的,是去蜂鸟众包或者美团做骑手,如果还有点钱,可以做网约车司机。如果钱再多一点,很多人都会选择做加盟,自己当老板,给自己打工。前两年很多人都选择加盟奶茶店或者某些连锁餐饮小店,很不巧,赶上了疫情...
讲真,如果说你安装监控的地方没有WiFi,没有无线网络,有想要远程查看实时视频,这种情况下有没有符合条件的摄像头呢?不要怀疑,这种还真的有。毕竟在科技高度发展的今天,上太空的飞船都造出来,还造不出这种物联网技术运用的无线传输设备吗?所以,今天速名网要说到的话题就是在没有网络的情况下,我们可以...
在淘宝上购物的次数多了之后难免会有需要换货的情况,因为现在很多店铺的规格太多了,一不小心就可能下错单,导致需要换货,很多人还不知道怎么去进行换货,下面说说淘宝换货的流程吧。我们如果 在淘宝上购物的次数多了之后难免会有需要换货的情况,因为现在很多店铺的规格太多了,一不小心就可能下错单,导致需要换货,...
快手和抖音是现在发展的比较好的短视频平台,越来越多的商家们开始利用这些平台达到带货的目的,也有很多的达人愿意利用自己的名气来接广告获取佣金,快手直播带货平台怎么收费?一、快手直播带 快手和抖音是现在发展的比较好的短视频平台,越来越多的商家们开始利用这些平台达到带货的目的,也有很多的达人愿意利用自己...
看到有人将用了5年的AppleWatch一代转出去,还值三百块钱。这是几年前的产品,而且苹果公司每年都推出换代新品,到现在竟然还能值几百块钱。你觉得AppleWatch保值吗? 看到有人将用了5年的Apple Watch一代转出去,还值三百块钱。这是几年前的产品,而且苹果公司每年都推出换代新品,到...
寒露节气是在每年十月初,这个时候的天气会比较凉爽舒适,有些地区可能会有点冷,这个主要看各个地区的天气情况,大多数情况下,寒露过了之后,天气就会开始慢慢变冷,大多数地区都不会有高温天气了,有些地区还会有冷空气。2022寒露 寒露节气是在每年十月初,这个时候的天气会比较凉爽舒适,有些地区可能会有点冷,...
寒衣节是很多北方地区都有的风俗习惯,但由于一些在外地上班的人无法回家为亲人烧纸,所以十字路口便成了很多友友都会去烧纸的地点,下面小编就和大家一起看看2022年寒衣节允许十字路口烧纸吗。2022年寒衣节允许十字路口烧纸吗看 寒衣节是很多北方地区都有的风俗习惯,但由于一些在外地上班的人无法回家为亲人烧...
立冬烧纸钱还是冬至烧纸钱很多人在问的,毕竟冬至作为部分地区的祭祀日,烧纸是肯定避免的,所以该话题一度成为了大家讨论的焦点,下面小编就和大家一起看看冬至烧纸要不要去坟上。立冬烧纸钱还是冬至烧纸钱看地方讲究。北方立冬和冬至都 立冬烧纸钱还是冬至烧纸钱很多人在问的,毕竟冬至作为部分地区的祭祀日,烧纸是肯...
板栗是生活中比较常见的一种食物,它吃起来粉粉糯糯的,含有多种营养成分,适量食用对身体有一定好处。板栗一般要吃熟的,不建议吃生的,半生半熟的板栗也可以吃,但是不容易消化,可能会引起肠胃不适。红薯和螃蟹可以一起吃吗红薯和螃蟹 板栗是生活中比较常见的一种食物,它吃起来粉粉糯糯的,含有多种营养成分,适量食...
红薯是秋季比较常见的一种食物,它的吃法比较多,可以蒸着吃,可以煮着吃,还可以烤着吃等,烤红薯吃起来会比较香,并且饱腹感会比较强,深受人们喜欢。烤红薯最好现烤现吃,这样味道最好,也可以放到第二天,但是要保持得当,不然就会变 红薯是秋季比较常见的一种食物,它的吃法比较多,可以蒸着吃,可以煮着吃,还可以...
中秋旅游十大必去景点 中国十大中秋赏月地? 中秋月自古以来就是文人墨客的灵感来源; 在这一天,作为中华民族的后裔,无论身在何处,总是想仰望月亮,想念家人,期待团圆。 下面我就来说说中国十大中秋赏月胜地,看看你的家乡是否在名单上? 1、杭州西湖 杭州西湖是杭州十大名胜之一。...