当前位置: 首页 > article >正文

UART串口数据分析

串口基础知识详细介绍:

该链接详细介绍了串并行、单双工、同异步、连接方式

https://blog.csdn.net/weixin_43386810/article/details/127156063

该文章将介绍串口数据的电平变化、波特率计算、脉宽计算以及数据传输量的计算。

捕获工具:逻辑分析仪(LA1010)

波特率:115200

数据位:8bit

校验位:无

停止位:1bit

1.空闲态: UART总线不在传输数据的时候,总线处于空闲状态,为高电平
2.起始信号 开始信号,串口通信的开始标志位
3.数据位 串口发送数据,先发低位,再发高位
4.奇/偶校验位:校验数据是否正确
        奇校验:数据位和校验位1的个数为奇数 假设数据位0x55(0101 0101),校验位1 假设数据位0x51(0101 0001),校验位0
        偶校验:数据位和校验位1的个数为偶数 假设数据位0x55(0101 0101),校验位0 假设数据位0x51(0101 0001),校验位1
5.停止信号:发送数据结束,回到高电平状态,校准时钟信号 一帧数据发送结束后,需要校准时钟信号,为什么需要校准时钟信号呢? 因为串口采用的是异步通信方式,双方都有自己独立的时钟源,虽然设置了双方的时钟源保持一致, 但是在发送数据时,每发送一帧数据时,都会产生误差,越往后,发送的数据,累计误差越大, 所以每发送一帧数据之后,需要校准时钟信

使用逻辑分析仪(LA1010)进行捕获和分析串口数据。

截取其中一帧数据进行分析,无数据传输时为高电平:

起始位 1bit(绿色)、高电平 --> 低电平。
数据位 8bit(白色)、高 / 低电平。
停止位 1bit(红色)、高 / 低电平位 --> 高电平。

下图为起始位、数据位、停止位的具体时间:

C2-C1起始位 8.64us。
A2-A1:数据位中的某一位 8.61us。
B2-B1停止位 8.62us。
可以看出起始位停止位都是1bit。

 

根据数据位时间8.61us可以计算出大概波特率为:

1000 000 us / 8.61us ≈ 116144 bit/s
计算得出1s时间可传输约116144 bit 数据,和设定的115200波特率基本符合,偏差为约0.99%。
通信设备(主机和从机)之间的波特率偏差可以影响通信的稳定性和可靠性。一般来说,在串口通信中,波特率的偏差在正负5%以内是可以正常通信的。
波特率的偏差指的是实际通信速率与预期通信速率之间的差异。例如,如果主机和从机之间的波特率设定为115200 bps,那么在实际通信中,波特率可以偏差在115200 bps的正负5%范围内,即109440 bps到120960 bps之间。
超出正负5%的波特率偏差可能导致接收到的数据出现误码,通信错误率增加,甚至无法正常通信。因此,为了确保通信的稳定性,通常在主机和从机之间的波特率设置时应尽量控制在正负5%以内的偏差范围内。

一帧数据包含起始位停止位数据位,一共10 bit 数据,即传输一字节数据需要:

8.61us * 10bit  = 86.1us

当我们传输一组33字节的数据,则需要:

33Byte * 86.1us  =  2841.3us  =  2.8413ms

通过标尺验证该计算方法准确性:

和计算的2.8413ms差别不大,计算正确。

http://www.kler.cn/a/473011.html

相关文章:

  • openai swarm agent框架源码详解及应用案例实战
  • DeepSeek-V3与GPT-4o的对比详解
  • 【机器学习】机器学习的基本分类-自监督学习(Self-supervised Learning)
  • OSI模型的网络层中产生拥塞的主要原因?
  • Arduino IDE刷微控制器并下载对应固件的原由
  • python学习笔记—13—while和for循环
  • 一个海外产品经理的 AI 日常
  • Linux下常用命令
  • Lua协同程序(线程)
  • 【Linux】进程铺垫——冯诺依曼体系与操作系统概念
  • 代码随想录-训练营-day1
  • SQL 数据类型
  • 个人博客搭建(二)—Typora+PicGo+OSS
  • 哈密顿原理
  • 基于华为ENSP的OSPF数据报文保姆级别详解(3)
  • Python requests库过指纹检测
  • 《HeadFirst设计模式》笔记(上)
  • 深入理解 Java 接口的回调机制
  • 认识+安装ElasticSearch
  • MySQL的三大日志
  • 【机器视觉】OpenCV 滤波器(卷积、方盒/均值滤波、高斯滤波、中值/双边滤波、sobel/scharr/拉普拉斯算子、边缘检测Canny)
  • 深入解读MVCC中的三大日志:Undo Log、Redo Log和B-Log
  • Julia语言的数据结构
  • 应急响应——Windows / Linux 排查笔记
  • HTML5语义化编程
  • Unity 加载Dicom文件进行三维模型重建,可以查看不同MPR断层图像,横截面、冠状面、矢状面、伪彩色显示,窗宽窗位调节。模型剖切功能。