Usart:抗干扰能力差,双线全双工

        usart  I²C是怎么降低噪声的? 

USART 和 I²C 作为嵌入式中常用的串行通信协议,降低噪声的核心思路是「从物理层设计 + 协议层机制」双管齐下—— 物理层减少噪声的产生和耦合,协议层校验噪声带来的数据错误。两者的降噪手段因总线结构不同(USART 是点对点,I²C 是多主多从)有明显差异,下面分别拆解:

一、USART 的降噪手段

USART 是 异步串行通信,通常用 TX/RX 两根信号线 实现点对点通信,噪声主要来自电磁干扰(EMI)和信号反射。它的降噪设计分为 物理层硬件措施协议层容错机制 两类。

1. 物理层:从根源减少噪声干扰

这是 USART 降噪的核心,也是嵌入式开发中最常配置的部分。

  • (1)采用差分信号传输(RS-485/RS-422 标准)

  • 工业级场景会把 USART 升级为 差分传输(如 RS-485):用两根线(A/B)传输互补的差分信号,噪声会同时耦合到两根线上,接收端通过计算两根线的电压差还原信号,共模噪声会被抵消。这是 USART 抗干扰能力提升最显著的手段,适合远距离(几百米)、强电磁干扰的场景(如工业现场)。

  • 差分线的特点为:(1)双线|四线,(2)双线半双工,双线收发一致;(3)双线频率相同,极性相反。

  • 差分线的布线要求:(1)尽可能挨着(2)长度尽可能一致。

  • RS232等于串口、RS485双线半双工、RS422四线全双

  • (2)匹配阻抗,消除信号反射

  • 当 USART 通信速率较高(如超过 115200bps)或传输距离较远时,信号在导线末端会发生反射,反射信号会和原信号叠加,形成噪声干扰。解决方法是 在总线末端并联匹配电阻(通常 120Ω,和导线特性阻抗一致),吸收反射信号,减少信号畸变。

  • (3)电平标准优化

  • 普通 TTL 电平(高电平 3.3V/5V,低电平 0V)抗干扰阈值低,噪声容易误触发电平翻转。改用 RS-232 电平(高电平 +12V,低电平 -12V),电平摆幅更大,抗干扰能力更强;缺点是需要电平转换芯片(如 MAX232),且传输距离较短(几十米)。

  • (4)硬件滤波

  • 在 TX/RX 信号线靠近芯片引脚的位置,串联 小阻值电阻(如 10Ω~100Ω) 或并联 小电容(如 100pF),组成 RC 低通滤波器,滤除高频噪声(如电磁辐射带来的尖峰干扰)。注意:电容不能太大,否则会导致信号边沿变缓,限制通信速率。

  • (5)过采样

  • 在一个比特周期内采样 3 次 / 5 次,取多数值作为最终结果(比如 3 次采样中有 2 次是高电平,就判定为 1),这就是串口通信中的 「3 次采样法则」,是硬件层面的过采样,能有效抵抗噪声导致的比特错误,一般情况下使用的采样频率位16倍的波特率,判断的标准是取任意3份,结果应该一致,同为1或者同为0,其他数据为被干扰无效数据。 若大于16倍成本高,若采样频率低,数据容易很粗糙。如果三个值都一样也有可能会出现问题,很严重的硬件问题。

    2. 协议层:容错 + 校验,修正噪声导致的错误

    即使物理层有降噪措施,仍可能出现比特错误,USART 协议层通过以下机制兜底:

  • 起始位 + 停止位的帧同步机制USART 采用异步帧格式:1位起始位(低电平) + n位数据位 + 1位校验位 + 1位停止位(高电平)。 一般情况下是10位(没有校验位)

  • 奇偶校验位在数据位后添加 1 位校验位,分为奇校验 / 偶校验:

    • 奇校验:整个帧(数据位 + 校验位)的 1 的个数为奇数;
    • 偶校验:整个帧的 1 的个数为偶数。接收端会重新计算 1 的个数,若和校验位不符,判定为帧错误,丢弃该数据。缺点:只能检测奇数个比特错误,无法检测偶数个比特错误,适合对可靠性要求不高的场景。
  • 软件层面的重传 + 校验(自定义机制)对于高可靠性需求的场景,会在 USART 数据帧中自定义 校验字段(如 CRC 校验、和校验),接收端计算校验值,若不一致则请求发送端重传,进一步降低错误率。

二、I²C 的降噪手段

I²C 是 同步串行通信,采用 SDA(数据线)+ SCL(时钟线) 两根线实现多主多从通信,总线挂载多个设备,噪声干扰的风险更高。它的降噪手段同样分为物理层和协议层,且有独特的总线机制。

1. 物理层:总线结构优化 + 硬件防护

  • 上拉电阻的关键作用I²C 是 开漏输出 总线,SDA 和 SCL 必须外接上拉电阻(通常 1kΩ~10kΩ)才能输出高电平。上拉电阻的取值直接影响抗干扰能力:

    • 电阻太小:总线电平翻转速度快,但功耗大,且容易引入电源噪声;
    • 电阻太大:总线电平翻转慢,通信速率降低,但抗干扰能力更强(电平更稳定)。实际开发中需要根据通信速率和总线长度匹配上拉电阻(如 100kHz 速率用 4.7kΩ,400kHz 用 2.2kΩ)。
  • 总线电容控制I²C 总线上所有设备的引脚电容会叠加,总线电容过大会导致 SDA/SCL 信号边沿变缓,容易被噪声干扰触发误采样。降噪措施:

    1. 减少总线上挂载的设备数量;
    2. 缩短导线长度,使用屏蔽线降低电磁干扰;
    3. 选择引脚电容小的芯片(datasheet 中会标注 C_pin 参数)。
  • 差分 I²C(I3C 或工业级 I²C 标准)普通 I²C 是单端信号,抗共模干扰能力弱。工业场景会采用 差分 I²C:SDA/SCL 各用一对差分线传输,原理和 RS-485 类似,能抵消共模噪声,适合远距离、强干扰环境。

  • 硬件滤波和静电防护和 USART 类似,可在 SDA/SCL 线上串联小电阻(如 22Ω)抑制高频噪声,并联 TVS 管或压敏电阻,防止静电放电(ESD)损坏总线和芯片。

2. 协议层:总线仲裁 + 应答机制 + 校验

I²C 协议本身设计了多种容错机制,应对噪声导致的通信异常:

  • (1)位同步机制(时钟同步)

  • I²C 是同步通信,SCL 时钟由主设备控制,所有从设备的采样时刻都和 SCL 上升沿同步。只有在 SCL 高电平时,SDA 的电平才被判定为有效,噪声导致的 SDA 电平抖动(发生在 SCL 低电平时)会被忽略,大大降低误采样概率。

  • (2)应答(ACK/NACK)机制

  • 每传输一个字节(8 位)后,接收端必须回复一个 应答位(ACK,低电平)

    • 若接收端成功接收字节,回复 ACK,发送端继续传输下一字节;
    • 若接收端未成功接收(如噪声导致比特错误),回复 NACK,发送端会停止传输或重传。这个机制是 I²C 保证数据传输可靠性的核心,能及时发现单字节传输错误。
  • (3)总线仲裁机制(多主设备场景)

  • 当多个主设备同时抢占总线时,噪声可能导致总线冲突。I²C 的仲裁机制会让每个主设备在发送数据时,同时监听 SDA 电平:若自己发送的电平和总线实际电平不一致,说明发生冲突,立即退出总线竞争,避免数据错乱。

  • (4)软件校验(自定义 CRC)

  • 标准 I²C 协议没有内置 CRC 校验,对于高可靠性需求(如传感器数据传输),可以在数据帧末尾添加 CRC 校验字节,接收端通过 CRC 算法验证数据完整性,错误则重传。

额外补充USART中断触发的情况(题外话)

中断触发 一般是由事件标志和使能位功能触发

(1)中断事件触发事件标志位(有事件再有中断,中断事件发生,事件标志位被置位)。

(2)在(1)的前提下,使能位此时被置为1,才会触发中断事件。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐