嵌入式常见协议---CAN协议 IIC SPI RS485 USB PCI PCIe

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适用于远距离和高可靠性的通信。不同的应用场景下,可以选择合适的串行通信协议。

五.USB

六.PCI

七.PCIe

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
USART、IICSPI、CAN是常用的通信协议。USART是一种通用的串行通信协议,常用于单片机与外部设备之间的通信。IIC(Inter-Integrated Circuit)是由飞利浦公司开发的同步半双工通信协议,适用于多个集成电路之间的通信。SPI(Serial Peripheral Interface)是一种串行外设接口协议,常用于连接微控制器与外部设备,具有高速传输和多设备连接的特点。CAN(Controller Area Network)是一种用于实时应用的串行通信协议,主要用于汽车电子和工业控制领域。这些协议在不同的应用场景中具有各自的特点和优势,可以根据具体需求选择合适的协议来进行通信。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [【嵌入式】串行通信协议总结:UART,SPIIIC,CAN](https://blog.csdn.net/ZHOU_YONG915/article/details/122666235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [常见的通讯协议总结(USART、IICSPI、485、CAN)](https://blog.csdn.net/lsw15834115977/article/details/127375167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [常用的嵌入式硬件通信接口协议(UART、IICSPI、RS-232、RS-485、RS-422、CAN、USB、IRDA)(一)](https://blog.csdn.net/m0_46582811/article/details/123899074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值