0、常见片外总线
IIC(I²C)
SPI
RS485
CAN Flex CAN FD CAN Classis CAN
USB
(多路串行构成并行)
PCI
PCIe
同步:设备接收或者发送(带时钟线的)
异步:设备可同时接收和发送
串行:一位一位的发送
并行:一个字节发送
单工:主设备或从设备只能接收或者只能发送
全双工:主设备或从设备既能接受又能发送
一.IIC(I²C)
二.SPI
1.SPI协议是什么?
SPI是串行外设接口(Serial Peripheral Interface)的缩写。是一种高速 全双工 同步串行的通信总线。
2.SPI通信原理:
2.1SPO传输需要至少四根线 单向传输需要三根线, MISO(输设备数据输入),MOSI(主设备数据输出),SCLK(时钟),CS/SS(片选)
CS/SS(片选):输入高低电平决定哪个从机(从机片选为0时有效)--选择芯片 (IIC寻址 --发送)
2.2写数据和读数据 :当SS置1,时钟信号为上升沿时写数据有效;
写数据 顺序 1.SCLK 2.SS 3.MOSI
SPI主设备与从设备之中都有串行一位寄存器,主设备通过向他的SPI串行寄存器写入一个字节来发起一次传输
时钟信号的上升沿和下降沿发送数据,在下一个下降沿或上升沿从数据线上读取数据;八个始终周期完成一个一节的传送
3.SP两种模式 :
一主一从 一主多从 (常规模式 菊花链模式) (IIC多主机)
常规模式:主和所有的MOSI都连接
菊花链模式: 主连接MOSI一个从之后 从和其他的从连接
4.极性和相位:
spi四种模式SPI的相位(CPHA)和极性(CPOL)分别可以为0或1,对应的4种组合构成了SPI的4种模式(mode)
Mode 0 CPOL=0, CPHA=0
在模式0下,时钟信号的空闲状态为低电平(0)。数据采样发生在时钟的第一个边沿(从低电平到高电平),数据传输发生在时钟的第二个边沿(从高电平到低电平)。
Mode 1 CPOL=0, CPHA=1
在模式1下,时钟信号的空闲状态为低电平(0)。数据采样发生在时钟的第二个边沿(从高电平到低电平),数据传输发生在时钟的第一个边沿(从低电平到高电平)。
Mode 2 CPOL=1, CPHA=0
Mode 3 CPOL=1, CPHA=1
时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(1:空闲时高电平; 0:空闲时低电平)
时钟相位
CPHA: 即SPI在SCLK第几个边沿开始采样(0:第一个边沿开始; 1:第二个边沿开始)
sd卡的spi常用的是mode 0 和mode 3,这两种模式的相同的地方是都在时钟上升沿采样传输数据,区
别这两种方式的简单方法就是看空闲时,时钟的电平状态,低电平为mode 0 ,高电平为mode 3。
5.SPI和IIC的区别
相同点:
1.都是串行、同步方式
2.均采用TTL电平,传输距离较近和应用场景类似
3.均采用主从方式工作
不同点:
1.IIC为半双工 SPI 全双工
2.IIC有应答机制,SPI无应答机制(片选接口) ----不用检查数据
3.IIC通过总线广播从机地址来寻址,SPI通过(片选)0向对应从机发送使能信号来寻址
4.IIC 的时钟极性和时钟相位相对固定,SPI的时钟极性和时钟相位可调
总线协议之SPI协议通信原理及通信过程详解,极性和相位讲解_哔哩哔哩_bilibili
深入理解SPi通讯协议,5分钟看懂!_哔哩哔哩_bilibili
三.RS485
远距离传输
四.CAN
1.can总线是什么
1.1 CAN (Controller Area Network)控制器局域网
控制器-ECU(Eletronic Control Unit)电子控制单元--超小型计算机
使用CAN总线代替铜线 使用CAN总线和ECU可以组成局域网通讯
从CAN通讯网络图可了解到,CAN总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通讯。由于CAN通讯协议不对节点进行地址编码,而是对数据内容进行编码的,所以网络中的节点个数理论上不受限制,只要总线的负载足够即可,可以通过中继器增强负载。
CAN通讯节点由一个CAN控制器及CAN收发器组成,收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。
采用查分信号进行传输 CAN收发器可以将单片机的普通信号转换为查分信号 也可以逆转换 传回单片机;
低电平对应 压差为3.5-1.5压差为2 显性电平表示逻辑0 高电平对应 2.5-2.5 压差为0 表示逻辑1 采用双绞线连接
差分信号的优点
1.抗感染能力强:如果受到 干扰两条线同时受到干扰 压差不变 利于远距离传输;
2.能有效抑制他对外部磁场的干扰;
3.时序定位精确,由于差分信号的开关变化是位于两个信号的交点,而不像普通单端信号依靠高低两个阈值电压判断,因而受工艺,温度的影响小,能降低时序上的误差,同时也更适合于低幅度信号的电路;
由于差分信号线具有这些优点,所以在USB协议、485协议、以太网协议及CAN协议的物理层中,都使用了差分信号传输。
2.can总线优点
总线 总线上的多设备
速度快
距离远
容错性强
多主机
3.CAN发送的是什么?
3.1报文:
在SPI通讯中,片选、时钟信号、数据输入及数据输出这4个信号都有单独的信号线,I2C协议包含有时钟信号及数据信号2条信号线,它们能轻易进行数据同步或区分数据传输方向。而CAN使用的是两条差分信号线,只能表达一个信号,简洁的物理层决定了CAN必然要配上一套更复杂的协议,如何用一个信号通道实现同样、甚至更强大的功能呢?CAN协议给出的解决方案是对数据、操作命令(如读/写)以及同步信号进行打包,打包后的这些内容称为报文。
3.2报文的种类:
在原始数据段的前面加上传输起始标签、片选(识别)标签和控制标签,在数据的尾段加上CRC校验标签、应答标签和传输结束标签,把这些内容按特定的格式打包好,就可以用一个通道表达各种信号了,各种各样的标签就如同SPI中各种通道上的信号,起到了协同传输的作用。当整个数据包被传输到其它设备时,只要这些设备按格式去解读,就能还原出原始数据,这样的报文就被称为CAN的”数据帧”。
数据帧
用于节点向外传送数据
遥控帧
用于向远端节点请求数据
错误帧
用于向远端节点通知校验错误,请求重新发送上一个数据
过载帧
用于通知远端节点:本节点尚未做好接收准备
帧间隔
用于将数据帧及遥控帧与前面的帧分离开来
3.3.数据帧的结构
a.起始位
b.11位识别码--可判断这一帧信息是发给哪一设备
c.RTR位---区分数据帧(0)还是远程请求帧(1)
d.控制码-控制数据长度
第一位 IDE区分标准格式(11位)还是拓展格式(29位)
e预留位 逻辑0
f.DLC位 数据长度代码如果是1(0001)则后面数据位(1个字节8位 );如果是(1000)则后面数据位是8个字节64位
g.16位CRC码 循环冗余校验位----设备接收端根据数据计算若不一致 则数据出现问题 重新发送帧
h.CRC界定符 将后面的隔开
4.can总线如何工作
5.can总线如何实现
6. uart IIC SPI CAN 区别
1.通信方式: UART-2 lIC-2 SPI-4 CAN总线
UART (Universal Asynchronous Receiver/Transmitter) 是异步串口通信,只有1对数据线 (TX和RX)
lIC (Inter.Intearated Circuit)是双线制的串行总线,包括SCL (时钟线)和SDA(数据线)。
SPI Serial Peripheral lnterface) 是四线制的串行总线,包括SCK (时钟线) 、MISO (Masterln Slave 0ut) 、MOSI (Master 0ut Slave n) 和CS (片选线)
CAN (ControlleiArea Network)是CAN总线通信,一般是在电气层面上实现的
2.数据传输速率: UART慢
UART通信速率较低,一般在1Mbps以下,而IC、SPI和CAN的通信速率较高,可以达到几Mbps甚至更高。
3.通信距离: CAN长
UART通信距离较短,般在数米以内,而IIC和SPI的通信距离也比较短,一般在几十厘米以内。CAN可以实现较远的通信距离,达到数百米甚至几千米。
4.设备连接数量
UART 一对一 IIC 可多对多 SPI 一对一 或多对多 can 一对多
5.硬件复杂度
UART 通信硬件简单 使用简单串行 IIC和SPI通信需要复杂硬件支持 如时钟和数据线等,CAN通信硬件较为复杂 需要专用的CAN控制器和收发器
总的来说,UART适用于短距离低速率的通信,IIC适用于简单的多设备通信,SPI适用于高速数据传输,CAN适用于远距离和高可靠性的通信。不同的应用场景下,可以选择合适的串行通信协议。