常见通信协议


前言

为了加深对通信协议的理解,方便后续使用,粗略整理了一下各种通信协议的基本特征

一、IIC通信

1.1、IIC特点:

半双工 同步 串行通信
高位先行 多主多从(谁控制时钟线的高低电平切换谁就是主设备)

1.2、不同信号时序:

·空闲模式:SDA 和 SCL 全为高电平(被上拉电阻拉高)
·开始信号:当 SCL 为高电平时,SDA 由高到低的跳变表示数据传输的开始
·停止信号:当 SCL 为高电平时,SDA 由低到高的跳变表示数据传输的结束
·应答信号:从设备在接收到 8bit 数据(先传输最高位)后,通过拉低 SDA 来进行应答。

1.3、主机指定地址写数据信号时序:

1.主机发送起始信号
2.主机发送8位数据(7位从机地址+0:主机写)
3.从机应答(主机移交SDA控制权给从机)
4.主机发送8位数据,在从及内部寻址(给一个地址指针赋值,定位到要写的地址)
5.从机应答(主机移交SDA控制权给从机)
6.重复上面4、5操作。
7.主机发出停止信号。

主机指定地址写时序图

1.4、主机指定位置读数据信号时序:

1.主机发送起始信号。
2.主机发送8位数据(7位从机地址+0:主机写)
3.从机应答
4.主机发送8位数据(定位到要进行操作的地址)
5.从机应答
6.主机重新发送起始信号
7.主机发送8位数据(7位从机地址+1:主机读) 此时,SDA的控制权被移交给从机。
8.从机先应答,然后从当前地址读数据发送给主机。
9.主机应答,继续进行读数据 或者主机不应答,从机交还SDA控制权给主机,
10.主机发出停止信号,结束任务传输。

主机指定位置读数据

1.5、注意事项:

1.数据传输时,当 SCL 为高电平,SDA 的电平不允许跳变,只有当 SCL 为低电平时,SDA 电平才能跳变 。因为当SCL为高电平时,不管SDA是由低变高还是由高变低,都会被认为是发出了起始或终止信号,导致信息传输被截断。
2.从机不允许主动对 SDA 发起控制,任何时候都是主机完全掌控 SCL 线。
3.每一帧都由起始位+中间的多个数据(八位数据位+一位应答位)+停止位构成。

二、SPI

2.1、SPI特点:

全双工 同步 串行总线
高位先行 一主多从
通信速度可达几十 Mbps

2.2、组成:

输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入
CS\SS :从设备使能信号
SCLK:时钟信号,由主设备产生(故读写操作都由主设备发起)
MOSI:主设备输出,从设备输入
MISO:主设备输入,从设备输出

2.3、通信操作模式:

四种模式:时钟极性和时钟相位同时决定了 4 种不同的 SPI 通信操作模式。
时钟极性
CKP=0,时钟空闲时为低电平。
CKP=1, 时钟空闲时为高电平。
时钟相位
CKE=0, 在时钟信号 SCK 的第一个跳变沿采样
CKE=1,在时钟信号 SCK 的第二个跳变沿采样

2.4、数据读写过程:

1.主机拉低对应的SS信号线,启动通信。
2.主机通过发送SCLK时钟信号,来告诉从机写数据或者读数据。
3.主机(Master)将要发送的数据写入发送数据缓存区,缓存区经过移位寄存器(0~7),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时将MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
4.**从机(Slave)**也将自己的串行移位寄存器(0~7)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据

2.5、注意事项:

1.SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作同步完成。
2.主机要读数据,只需发送空字节来引发从机传输,
3.主机要写数据,只需忽略接收到的字节。

三、UART

3.1、UART特点:

全双工 一对一 串行/并行
异步 TTL电平

3.2、串口的组成:

由波特率发生器、UART接收器、UART发送器组成。
有 RXD、TXD两根线。

3.2、串口的参数配置:

1.波特率:9600、19200、115200等
2.起始位:发出一个逻辑“0”的信号
3.数据位:可配置传输5~8位数据
4.检验位:奇校验、偶校验、无校验
5.停止位:可配置为0.5、1、1.5、2个时钟周期的逻辑“1”

四、RS232

4.1、RS232特点:

全双工 一对一 低位先行
最长通信距离20米左右,通信速度最块20Kbps
常用 DB9 接口,最少接 TXD、RXD、GND(抑制干扰、有助于通信)三根线
电平传输方式与普通串口(TTL)不同,其采用负逻辑,-3~-15V 为逻辑 1,3~15V 为逻辑 0.
相对于 RS485,这种共地传输容易产生共模干扰。

五、RS485

5.1、RS485特点:

一对多,一般最大支持 32 个节点,若使用特制的 485 芯片,可达到 128 或 256 个节点
半双工(主设备先发送询问信息,被询问从设备返回信息) 低位先行
最长通讯距离 1200 米 最大通信速度可达 10Mbps
RS485 采用差分工作方式 使用 A(Data+)和 B(Data-)两根信号线,
A-B 在 2~6V 为逻辑 1,在-2~-6V 为逻辑 0
理想情况下 RS485 需要 2 个终端匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为 120Ω)。

六、CAN

6.1、CAN特点:

多对多 异步半双工 高位先行 传输距离可达 1000 米
CAN 收发器是用于 TTL 电平和差分电压信号相互转换的。
CAN 通信由 CAN_High 和 CAN_Low 两根线完成的。
无信号传输或传输数据 1 时,两条线的电平均为 2.5V;差分信号(H-L=0V)为逻辑 1(隐性电平)
传输数据 0 时,H 升高为 3.5V, L 降低为 1.5V。差分信号(H-L=2V)为逻辑 0(显性电平)
显性(逻辑0)的优先级比隐性(逻辑1)高

6.2、帧的类型:

1.数据帧:用于节点向外传送数据
2.远程帧:用于向远端节点请求数据
3.错误帧:用于像远端节点通知校验错误,请求重发上一个数据
4.过载帧:用于通知远方节点,本节点尚未做好接收准备
5.帧间隔:用于将数据帧及遥控帧与前面的帧分离开来

6.3、标准数据帧(数据报、报文):

帧起始,位宽 1, 是显性逻辑“0”
仲裁段:位宽 11。 本数据帧的 ID 信息,作为优先级仲裁;
RTR: 位宽 1。 0:数据帧;1:远程帧
IDE: 位宽 1。 用于区分标准格式(显性 0)和扩展格式(隐性 1)
保留位 R0:位宽 1。 1bit 保留位,固定为显性 0
DLC:位宽 4。 表示报文中有多少个字节
数据段:位宽 0-64。 高位先行
CRC 段:位宽 15。 暗号校验。此值与接收方根据数据计算出来的相同时,数据正确
CRC 界定符:位宽 1。用于前后分隔,为固定的隐形电平 1。
ACK 槽:位宽 1. 发送端发送隐性位,接收端回发显性位以示应答。
ACK 界定符:位宽 1. 将 ACK 槽和帧结束符分隔开,为隐性位
帧结束:位宽 7. 七个隐性位表示结束。

CAN标准数据帧

总结

1.UART、RS232、RS485之间的关系:

1.UART、RS232和RS485之间有密切的关系,它们都涉及串行通信,但是在传输距离和标准上有所不同。
2.UART(通用异步收发传输器)是一种硬件电路,用于在计算机系统中实现串行通信。UART采用TTL电平标准,提供了对数据的基本格式和传输速率进行配置的功能。
3.RS232和RS485都是一种电平标准,定义了串行通信所需的电气信号特性和机械连接规范。
4.其中RS232使用负逻辑电平规范,并适用于短距离通信。
5.RS485则是采用差分信号电平规范,适用于远距离通信和多设备共享
6.RS232、RS485通常与UART结合使用,在计算机和外部设备之间进行串口通信。

2.归纳整理:

IICSPIUARTUSARTRS232RS485CAN
半双工全双工全双工全双工全双工半双工半双工
同步同步异步异步/同步异步异步异步
串行串行串行串行串行串行串行
高位先行高位先行低位先行低位先行低位先行低位先行高位先行
几米几米几米几米15~50米500~1200米10千米(最远)
几百Kbps几十Mbps波特率决定波特率小于20Kbps110Kbps~10Mbps5Kbps~1Mbps

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值