【车载开发系列】一文读懂IIC通信

【车载开发系列】一文读懂IIC通信

【车载开发系列】一文读懂IIC通信

  • 【车载开发系列】一文读懂IIC通信
    • 一. 概念
    • 二. 两条总线
    • 三. 特点
    • 四. 主机和从机
    • 五. 软件和硬件IIC
      • 1)软件IIC
      • 2)硬件IIC
      • 3)区别
    • 六.与CAN总线区别
      • 1)传输特征
      • 2)应用场景
      • 3)协议标准
    • 七. 读数据
    • 八. 写数据

一. 概念

IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS飞利浦)公司开发的两线式串行总线,广泛用于连接微控制器及其外围设备。

二. 两条总线

IIC总共有两条总线:SDA与SCL。
SDA(Serial data)是数据线,D代表Data也就是数据,Send Data也就是用来传输数据的SCL(Serial clock line)是时钟线,C代表Clock也就是时钟也就是控制数据发送的时序的。
I2C总线上的每个设备都自己一个唯一的地址也叫做DeviceAddress,来确保不同设备之间访问的准确性。

三. 特点

1.IIC是半双工,而不是全双工。只有SPI和uart通信为全双工通信。
2.SCL和SDA都需要接上拉电阻 (大小由速度和容性负载决定一般在3.3K-10K之间) 保证数据的稳定性,减少干扰。
3.支持不同速率的通讯速度,标准速度(最高速度100kHZ),快速(最高400kHZ)
4.小数据量通信,传输距离短,适用于主从器件之间通信。
5.IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI
6.IIC地址是8位地址,减去1位广播地址,是 7位地址。

四. 主机和从机

主机就是负责整个系统的任务协调与分配,从机一般是通过接收主机的指令从而完成某些特定的任务,主机和从机之间通过总线连接,进行数据通讯。一般情况下,发布主要命令的称为主机,而接受命令的称为从机。
I2C总线是一种多主机总线,连接在I2C总线上的器件分为主机和从机。
1)主机有权发起和结束一次通信,从机只能被动呼叫;
2)当总线上有多个主机同时启用总线时,I2C具备冲突检测和仲裁的功能来防止错误产生
3)每个连接到 I2C 总线上的器件都有一个唯一的地址(7 bit),且每个器件都可以作为主机也可以作为从机(但同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;
4)I2C 总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器。

五. 软件和硬件IIC

IIC分为软件IIC和硬件IIC两种类型。

1)软件IIC

通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。

2)硬件IIC

一块硬件电路,硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件(固件)I2C是直接调用内部寄存器进行配置。

3)区别

硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。

六.与CAN总线区别

I2C和CAN总线是两种不同的串行通信协议,主要区别体现在传输特性、应用场景和协议标准上。

1)传输特征

I2C‌采用同步串行通信,而CAN‌支持差分信号传输,速率范围灵活。

2)应用场景

I2C适用于微控制器与外围设备连接,如消费电子、通信设备等低速数据传输场景;而CAN‌广泛应用于汽车、工业自动化等领域,支持多节点同时通信,复杂系统的实时交互数据。 ‌

3)协议标准

I2C‌由恩智浦公司开发,采用主从架构,支持半双工双向通信,而CAN支持ISO国际标准化协议,包含J1939等扩展协议,支持高可靠性数据传输。

七. 读数据

1.主机首先产生START信号
2.然后紧跟着发送一个从机地址,注意此时该地址的第8位为0,表明是向从机写命令
3.然后主机等待从机的应答信号(ACK)
4.当主机收到应答信号时,主机发送要访问的地址,继续等待从机的应答信号
5.当主机收到应答信号后,主机要改变通信模式(主机将由发送变为接收,从机将由接收变为发送)所以主机重新发送一个开始start信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表明将主机设置成接收模式开始读取数据
6.这时候主机等待从机的应答信号,当主机收到应答信号时,就可以接收1个字节的数据,当接收完成后,主机发送非应答信号,表示不在接收数据
7.主机进而产生停止信号,结束传送过程

八. 写数据

1.主机首先产生START信号
2.然后紧跟着发送一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位(R/W),0表示主机发送数据(写),1表示主机接收数据(读)
3.主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,若相同,则认为自己正在被主机寻址,根据R/T位将自己确定为发送器和接收器
4.此时主机等待从机的应答信号(Ack)
5.当主机收到应答信号时,发送要访问从机的那个地址, 继续等待从机的应答信号
6.当主机收到应答信号时,发送N个字节的数据,继续等待从机的N次应答信号
7.主机产生停止信号,结束传送过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值