各种总线协议简介

IIC

I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。
它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上,IIC是半双工通信方式。多主机I2C总线系统结构 需要将SDA和SCL两根线接上拉电阻拉高。

开始信号+7位设备地址+R/W+ASK+8bit数据+ASK+8bit数据+NASK+停止信号

这里写图片描述

(1)空闲状态
I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。

(2)起始信号与停止信号
起始信号:当SCL为高期间,SDA由高到低的跳变。
停止信号:当SCL为高期间,SDA由低到高的跳变。

(3)应答信号ACK
对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。

(4)数据有效性
数据在SCL的上升沿到来之前就需准备好,并在在下降沿到来之前必须稳定。也就是要求数据在SCL高电平期间保持稳定。

SPI

SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

4根线:

  1. MISO 主机输入从机输出
  2. MOSI 主机输出从机输入
  3. SCLK 时钟信号 主设备产生
  4. CS 片选 主设备产生

主机对外设的读写操作都是同步的,如果只进行写操作,主机只需忽略接收到的字节;
若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

配置CPOL(时钟极性)CPHA(时钟相位)4种模式

00 空闲状态低电平,第1个边沿数据传输
01 空闲状态低电平,第2个边沿数据传输
10 空闲状态高电平,第1个边沿数据传输
11 空闲状态高电平,第2个边沿数据传输

CAN

简介:
CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后,CAN通过ISO11898及ISO11519进行了标准化。现在在欧洲已是汽车网络的标准协议。CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。

特点:

  1. 多主控制。
  2. 系统柔软性。连接总线的单元,没有类似“地址”的信息,因此,在总线上添加单元时,已连接的其他单元的软硬件和应用层都不需要做改变。
  3. 速度快,距离远。最高1Mbps(距离<40M),最远可达10KM(速率<5Kbps)。
  4. 具有错误检测、错误通知和错误恢复功能。
  5. 故障封闭功能。
  6. 连接节点多。

物理特征:

这里写图片描述

  1. CAN-H和CAN-L的电位差确定总线电平:显性电平0(压差2V)和隐性电平1(压差0V)。
  2. 显性优先,只要一个单元输出显性电平,总线上即为显性电平;
    隐性包容,只有所有单元输出隐性电平,总线上即为隐性电平。
  3. 如果超过一个单元在同一时刻发送信息,优先级竞争,具有最高优先级ID的单元获得发送的资格,其他单元执行接收操作。
  4. 在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。

数据帧:发送单元通过此帧向接收单元发送信息。
遥控帧:接收单元通过此帧向相同ID的发送单元请求数据。
数据帧和遥控帧标准格式有11bit的ID,扩展格式有29bit的ID。

数据帧:由发送单元使用,用来发送信息给接收单元
(1)帧开始(SOF):这个域表示数据帧的开始 1bit显性电平
(2)仲裁域(ID+RTR):这个域表示一个帧的优先级
(3)控制域:这个域表示保留位和数据字节数
(4)数据域:0~8个字节的数据内容
(5)CRC 域:这个域用于检查帧的传输错误
(6)ACK 域:是对帧已经被正常接收的一个证实
(7)帧结束(EOF):指示数据帧结束

遥控帧:是接收单元请求发送单元发送一个信息
(1)帧开始:这个域表示数据帧的开始 1bit显性电平
(2)竞争域:这个域表示数据的优先级,具有同样ID的数据帧被请求
(3)控制域:这个域表示保留位和数据字节数
(4)CRC 域:这个域用于检查帧的传输错误
(5)ACK 域:是对帧已经被正常接收的一个证实
(6)帧结束:指示遥控帧的结束

11位基本ID禁止高7位为隐性,即不能ID=1111111XXXX,所以理论上基本ID模式CAN总线上最多可以挂载2048-16=2032个节点
相同ID的数据帧和遥控帧竞争时,仲裁段最后一位RTR为显性电平的数据帧具有优先权

总线仲裁
1.总线空闲时,最先发送的单元获得发送优先权,一但发送,其他单元无法抢占
2.如果有多个单元同时发送,则连续输出显性电平多的单元具有较高的优先级
3.从ID开始比较,如果ID相同,比较RTR

STM32 CAN控制器-标识符筛选器
1.标识符掩码模式-过滤出一组标识符-CAN_F0R1=0xFFFF0000,CAN_F0R2=0xFF00FF00 期望收到0xFFFF0000 可收到0xFFXX00XX。
2.标识符列表模式-过滤出一个标识符。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值