当前位置: 首页 > 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.hskmm.com/?act=detail&tid=30424

相关文章:

  • WebApi 交叉观察者- IntersectionObserver复盘
  • [KaibaMath]1009 关于||a|-|b||≤|a+b|的证明
  • AMPopTip - 优雅的iOS动画提示框库
  • 2026年深度对比值得推荐的10个在线客服系统
  • 文件名中有空格比较烦人
  • 20232421 2024-2025-1 《网络与系统攻防技术》实验一实验报告
  • 十月总结
  • 20251013 之所思 - 人生如梦
  • Markdown 基本语法
  • 简单工单系统的实现-客服系统中增加创建工单功能
  • 日总结 10
  • # 20232421 2024-2025-1 《网络与系统攻防技术》实验一实验报告
  • 20232317 2025-2026-1《网络与系统攻防技术》实验一实验报告
  • 给一个字符串数组,输出不同的部分
  • 连接 USB 设备
  • SpringBoot-day1(快速上手SpringBoot,SpringBoot简介,SpringBoot基础配置,属性配置,yaml文件) - a
  • Chroma私有化:本地部署完整方案
  • 嵌入式-C++面经2
  • PHP转Go系列 | 如何将 PHP 项目快速迁移到 Go 上?
  • 详细介绍:【OpenHarmony】用户文件服务模块架构
  • 详细介绍:全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!
  • “环境变量”是什么, 为什么要配置环境变量 --初学者
  • AI元人文:对大模型的召唤——未来哪吒
  • https与http区别思维拓扑图 - krt
  • Java 装饰器模式(Decorator) - krt
  • Python INI 文件读写利器 configparser
  • tcp/ip五层协议模型--思维拓扑图 - krt
  • springboot模式与应用案例--思维拓扑图 - krt
  • DAY04
  • AlexNet vs LeNet 对比实验