亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

SPI、I2C、UART:通信协议及其应用

单片机开发是电子组装核心过程。串行协议和通信接口输入促进此项工作。本文旨在详尽探讨 SPI、I2C、UART 等串行通信协议,分析其特性、优缺点及示例。

1. UART 接口

什么是 UART?

SPI、I2C、UART:通信协议及其应用

图 1:Arduino 上的 UART 协议

通用异步收发器 (UART) 是串行通信协议,便于主机与辅助设备通信。主要实现串行数据传输,支持异步通信和双向传输。简单协议有两条数据线:发送 (Tx) 和接收 (Rx)。通常发送通过数字引脚 0,接收通过数字引脚 1。也协助同步计算机与外部串行设备管理。

如何工作?

SPI、I2C、UART:通信协议及其应用

图 2:DIY 电子 USB UART 板

UART 通过以下方式管理两设备间信号通信:单工、半双工、全双工。单工单向传输;半双工双向非同时通信;全双工双向同时传输。连接后,数据从发送 UART 数据线传至接收 UART,原则:

  1. 发送 UART 将主设备并行数据转串行传给接收 UART;接收 UART 将串行数据转并行供接收设备用
  2. UART 异步通信无时钟,生成起始位和停止位指示消息始末
  3. 两 UART 必须相同波特率(传输速率),差超 10% 数据无效

UART 工作协议

数据发送与接收

  1. 发送 UART 从数据总线(如 CPU)接收数据
  2. 添加起始位、校验位、停止位三位,组成数据包经 TX 引脚传给接收 UART
  3. 发送 UART 数据耗尽后停止传输

中断控制

数据中断用于自动发送缓冲内容。以下场景触发中断控制:FIFO 溢出错误、换行错误、帧错误、奇偶校验错误;数据接收、发送、接收超时时。

FIFO 操作

SPI、I2C、UART:通信协议及其应用

图 3. Arduino 上的 UART 接口

Stellaris 系列 UART 模块含两个 16 字节 FIFO,分别用于接收和发送。可配置不同深度产生不同中断,如 1/8、1/4、1/2 深度。发送 FIFO 工作过程:数据录入后开始发送,耗时长持续录入直到 FIFO 满;满后停止录入防新数据丢失;逐位发送直到空,创建额外槽位。接收 FIFO 工作过程:硬件存储接收数据,程序自动接收擦除保证空间;含收发 FIFO 解决 CPU 低效和频繁 UART 中断问题;预先封堵丢失途径实现无数据丢失。

回环

UART 内部回环用于调试诊断,RX 输入接收发送数据。

串行红外协议

UART 含 IrDA 串行红外 (SIR) 编解码模块,转换半双工串行 SIR 接口和异步 UART 数据流。串行通信协议向 UART 提供解码输入和数字编码输出。

UART 优势

  1. 简单通信协议,文档完善易用
  2. 无需串行时钟线
  3. 校验位支持错误检查

UART 劣势

  1. 数据帧限 9 位,传输速度慢
  2. 不支持多主多从系统
  3. 强制波特率误差 10% 内防数据丢失
  4. 设备间数据传输普遍较慢

单片机 UART 示例

2. I2C 接口

什么是 I2C?

SPI、I2C、UART:通信协议及其应用

图 4:差分压力传感器使用 I2C

集成电路总线 (I2C) 通信协议类似 UART。但 UART 用于 PC-设备通信,I2C 用于传感器和模块应用。双向双线同步串行总线,凭借共享总线和地址系统连接多设备不妥协通信路径。代价是通信速度相对 SPI 较慢,速度依赖外部噪声、线材质量、数据速率。双线接口连接低速设备:EEPROM、AD/DA 转换器、单片机。

如何工作?

I2C 协议两线:串行数据线接收口 (SDA) 和串行时钟线 (SCL)。SCL 同步传输,SDA 为收发数据位数据线。传输时主设备提示总线数据传输,同时产生时钟打开传输设备。被寻址设备为从设备。主从设备无恒定传输速率,关系依赖传输时数据方向。主设备发起传输前须告知从设备,接收从设备数据前也须告知。必须上拉电阻接 I2C 电源以最佳运行。

I2C 工作协议

SPI、I2C、UART:通信协议及其应用

图 5:引脚 0.96 英寸 OLED 128X64 OLED 显示模块 IIC I2C

数据传输方法

连接过程:

  1. 主机输出发送传输信号给连接从机,主将 SDA 从高电平拉低,再将 SCL 从高电平拉低
  2. 主机发送 7 位或 10 位地址和读/写位给各从机
  3. 从机比对地址,匹配返回 ACK 位拉低 SDA,不匹配 SDA 保持高
  4. 主机发送数据帧或接收(视匹配地址),传输完成后接收组件返回 ACK 位确认完整传输
  5. 主机将 SCL 拉高再拉高 SDA 通知通信结束

时钟同步

每个主机必须在 SCL 线生成时钟信号传输数据。I2C 传输中仅时钟高电平期间数据有效。

传输模式

主要两种传输方式:

快速模式

快速模式设备 400 kbit/s 收发数据。快速模式 I2C 总线显著抑制毛刺,输出带斜率控制功能。

高速模式

高速模式 I2C 总线 3.4 Mbit/s 收发,传输速率超快速模式。

I2C 优势

  1. 连接众多设备时引脚/信号数显著有限
  2. 多主多从能力提供灵活性
  3. 仅需两根双向线连接众多设备,简单易用
  4. 广泛适应性,支持多主机

I2C 劣势

  1. 速度相对慢,需上拉电阻(SPI 只需推挽电阻),开漏设计限制速度
  2. 电阻占空间,PCB 组装中空间宝贵
  3. 连接众多设备时不易用

单片机 I2C 示例

3. SPI 接口

什么是 SPI?

SPI、I2C、UART:通信协议及其应用

图 6:SPI 接口用于显示模块

串行外设接口 (SPI) 用于单片机。全双工工作,允许同时收发数据。SPI 比 I2C 快,传输速率至少 8 位。简单协议实现更快数据率,对显示模块、SD 卡等需速度应用重要。也用于信息突变应用如温度计。

如何工作?

SPI、I2C、UART:通信协议及其应用

图 7:SD 卡利用 SPI

SPI 设备两种操作方式:片选线选中设备(每设备需唯一片选线);或菊花链方式。可连接任意多设备,但通常受硬件片选线限制。点对点通信时模块无需寻址操作。

SPI 工作协议

SPI 通过四端口工作:

  1. 主机数据输出,从机数据输入 (MOSI)
  2. 主机数据输入,从机数据输出 (MISO)
  3. 时钟信号 (SCLK)
  4. 从机使能信号 (NSS)

多从机系统每从机需唯一使能信号,硬件需求比 I2C 复杂。SPI 接口含两移位寄存器,实现单主设备(如 CPU)与外设同步串行数据传输。

使用 SPI 优势

  1. 简单易用,无 I2C 复杂从机寻址系统
  2. 所有串行接口中最快(快于 UART 和 I2C)
  3. 无 UART 起始停止位,允许连续数据传输无中断
  4. 独立 MISO MOSI 线实现同时收发

使用 SPI 劣势

  1. 引脚占用多,限制连接设备数
  2. 无指定流控,无 I2C 确认收发机制
  3. 需 4 线,无 UART 纠错机制
  4. 单主机

单片机 SPI 示例

UART、I2C、SPI 对比

SPI、I2C、UART:通信协议及其应用

哪个通信外设“最好”?UART、SPI 还是 I2C?

三者无绝对优劣,各有关键优劣势。根据项目选最适配协议。如追求速度选 SPI;连接众多设备避免复杂阵列选 I2C。

总结

我们揭示了 UART、I2C、SPI 通信接口及其传输速率所有关键洞见。我们随时解答通信协议疑问。联系我们,即刻助您。

工业技术

  1. 树莓派必备扩展板指南:I2C、UART、GPIO 等 – 套件、排针与保护
  2. 理解数据流:从单工到全双工通信
  3. 光数据通信:利用光实现高带宽、无干扰传输
  4. 理解网络协议:从物理层到高级仲裁
  5. 数字存储器基础:寻址、访问与易失性
  6. 14大纳米技术创新应用:从医疗诊断到太空探索全景图
  7. 银钎焊工艺详解:原理、材料选择与典型应用
  8. 解锁生产效能:验证有效的数据驱动制造策略
  9. 优化数据摄入,驱动更智能决策
  10. 木材种类及其实际用途:从建筑到造纸生产
  11. 钨:从 2007 年应用回眸到现代创新的跨时代演进
  12. MQTT 与 DDS:为物联网选择正确的 M2M 协议