I²C、SPI、UART、RS-232、RS-485、Modbus特性总结

特性比较

特性I²CSPIUARTRS-232RS-485Modbud
线数(常用)SCL, SDAMOSI,MISO, SCK, SS/CSTX, RX, GNDTX, RX, GNDA, B, GND取决于底层协议
通信模式多主多从主从(单主多从)点对点点对点多点(最多32个设备)多点(通常基于 RS-485)
传输距离10~20cm;最长 1 米10~20cm;最长 50 cm几米到几十米最长 15 米最长 1200 米取决于底层协议
最大速度100Kb/S,最高 5 Mbps最高 50 MHz最高 1 Mbps最高 115.2 kbps最高 10 Mbps取决于底层协议)
抗干扰能力中等中等较弱较弱强(依赖底层协议)
拓扑结构菊花链或星型星型点对点点对点总线总线
电平标准电源电压决定,为 3.3V 或 5V电源电压决定,为 3.3V 或 5V

1:2.4~5V

0:0~0.5V

1:-15V~-3V

0:+3V~15V

-7V 至 +12V(差分信号)

是否同步同步同步异步异步同步取决于底层协议
半双工/全双工半双工全双工全双工全双工半双工取决于底层协议
位发送顺序MSB 优先MSB 优先可配置,常见 LSB 优先可配置,常见为 LSB 优先通常为 LSB 优先可配置(常见为 LSB 优先)
应用场景短距离低速器件间通信高速器件间通信简单的点对点串行通信短距离低速串行通信长距离、高噪音环境通信工业自动化、楼宇自动化等场景

其中:

  • 其中,硬件层协议:解决0和1的可靠传输,为RS232、RS485、CAN、IIC、SPI;软件层协议:解决传输目的,为Modbus、TCP/IP、CANopen。
  • 51单片机一般没有内置SPI模块,所以整个时序需要自己写程序去模拟,简称模拟SPI。STM32单片机一般有内置SPI,就不用自己写程序去模拟时序,直接应用。但是如果用内置SPI有一个细节,特别容易被忽略,就是你读数据的时候,读一个字节之前要先发一个字节任意值数据。(哑数据)发送一个字节的哑数据是为了维持主从设备之间的通信时序同步,确保数据的可靠传输。这个细节容易被忽略,但它在SPI通信中非常重要。
  • 常用Modbus RTU模式,Modbus RTU是一种紧凑的,十六进制表示数据的方式,Modbus ASCII是一种采用Ascii码表示数据,并且每个8Bit 字节都作为两个ASCII字符发送的表示方式。RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。

I2C协议层

信号格式及读写时序

开始信号SCL为高,SDA由高到低
结束信号SCL为高,SDA由低到高
应答信号SDA拉低(从机)
空闲SCL和SDA均为高(接上拉电阻)
初始状态同空闲状态
数据传输SCL为低,SDA数据变化
写时序开始信号读时序开始信号

发送I2C地址,(D0-D6)

7位数据位,(D7)读或写操作

设备地址+读写控制位
从机应答信号从机应答
开始信号开始信号
发送写入的寄存器地址发送读取寄存器地址
从机ACK应答信号从机应答
发送数据开始信号
从机应答信号重新发送设备地址+读写控制位
停止信号 从机应答
读取数据
主机发送NO ACK信号

SPI协议层

开始信号SS拉低
结束信号SS拉高
应答信号
读写时序开始信号
24位内存地址+读写控制
接收/发送数据
停止信

Modbus通讯协议

协议格式

写时序

从站地址(1 byte)+功能码(1 byte、读03H、写06H)起始地址(高)+起始(低)

+数据+校验(CRC/LRC 2 bytes)

从站地址+功能码(06)+起始地址(高)+起始(低)+数据+校验
读时序从站地址+功能码(03)+起始地址(高)+起始(低)+数量+数量(低)+校验
从站地址+功能码+返回字节数+字节1+…+字节n+校验
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值