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

STM32——UART

UART通信协议(串口通信)
1、两根通信线(发送和接收),TX与RX要交叉连接。只需进行单向通讯时可只连接一根通信线。
2、仅支持点对点的通信,不像I2C、SPI支持一对多通信。
3、进行通信的两设备电平标准必须一致,当电平标准不一致时应该加上电平转换芯片。
串口参数:
波特率:串口通信的速率
起始位:标志一个数据帧的开始,固定为低电平
数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
校验位:用于数据验证,根据数据位计算得来
停止位:用于数据帧间隔,固定为高电平

  • 可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
  • 可选校验位(无校验/奇校验/偶校验)
    图片
    图片

为什么UART通信要采用16倍过采样技术?
主要目的是提高数据传输的可靠性和抗干扰能力。通过更高的采样率,接收器能够更准确地检测数据位,避免因边沿失真或时钟不同步而导致的错误。
工作原理:
在UART通信中,数据传输以一个起始位“0”开始,接收器(RX)通过检测从逻辑“1”到“0”的跳变来识别起始位。16倍采样的具体过程如下:

  1. 接收器在检测到低电平后,连续采样8个时钟周期
  2. 如果这8个周期均为低电平,则确认起始位有效。
  3. 确认起始位后,接收器每隔16个时钟周期采样一次,确保采样点位于每个数据位的中间位置。
  4. 通过对数据位的7、8、9三个采样点进行“三取二”原则判断,最终确定数据位的值。
    关于接收器RX的设计最重要的一点就是如何提高采样的准确率,最好是采样点处于被采样数据位的中心点。所以就要采用一种比波特率高n倍的采样方式进行采样,来避免边沿失真和时钟不同步引起的采样不准确。
    此处用比波特率高16倍的过采样技术:
    1781698-20231228164452560-525460978
    按照该图进行分析:
    1.t1-t2:当t1时刻检测到低电平,就从这开始进行采样检测,当进行8个时钟周期的采样到t2时,采样结果都是低电平那就说明起始位有效,否则判定为噪声。
    2.t2-t3:当起始位有效之后接收器每隔16个周期进行一次采样,这就是会确保在后续对data位的每次采样都位于每个data位的中心位置。
    从此循环往复下去知道data位的采样结束,并且检测坚持到停止位。
http://www.rkmt.cn/news/20540.html

相关文章:

  • WebApi 交叉观察者- IntersectionObserver复盘
  • css: Bootstrap5 Accordions
  • AMPopTip - 优雅的iOS动画提示框库
  • 文件名中有空格比较烦人
  • 软工大三开学总结
  • 连接 USB 设备
  • SpringBoot-day1(快速上手SpringBoot,SpringBoot简介,SpringBoot基础配置,属性配置,yaml文件) - a
  • elk time
  • 详细介绍:【OpenHarmony】用户文件服务模块架构
  • 详细介绍:全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!
  • “环境变量”是什么, 为什么要配置环境变量 --初学者
  • Java 装饰器模式(Decorator) - krt
  • Python configparser 模块 - INI 文件读写利器
  • QT:获取文件信息之创建日期方法created()方法--废弃
  • 排列组合 容斥 总结
  • C/C++ 指针详解与各种指针定义 - 指南
  • 玄机——第一章 应急响应-Linux日志分析 wp
  • 第四周第五天4.5
  • 12 10.11
  • 09 面向对象基础概念的总结
  • CSP-S 2025 提高级模拟赛 Day6 复盘 B.连通子图
  • 基于Java的家政服务管理优秀的系统的设计与完成-计算机毕设 附源码05300
  • 业务定义与指标体系搭建
  • centos7 离线安装mysql8 并建立主从架构
  • 项目计划管理实战:从“纸上谈兵”到“动态导航”的艺术 - 实践
  • 分享一个知乎高赞回答生成AI指令:让技术人也能写出有深度的回答
  • SSL证书批量申请终极指南:一次搞定所有域名
  • PDF转图片工具:基于PyQt5的完整实现与深度解析 - 详解
  • 统计学习方法学习Day01
  • gpt-5-codex vs gpt-5