1 简介
IIC-BUS的英文全称是Inter-Integrated Circuit Bus,其主要的目的是实现微控制器与外围设备进行数据传输。它是一种半双工通信方式,通信方式简单,仅包含SDA(数据总线)和SCL(时钟总线)组成。通信总线通常由主设备和从设备组成,从设备是通过设备地址来进行区分,在同一时刻,设备之间数据传送只能由一个设备传送给对应地址的设备。
什么是I2C总线主设备和从设备?
主设备 :I2C总线的主导者,能向从西安发送起始信号和中止信号,且能决定总线数据的发送与接收。另外,主设备能发送指令,同时既能向从设备读取数据也能向从设备写入数据。
从设备 :I2C总线的被动者,对主设备发送的数据做出及时响应。从设备的类型比较多,具体可以是EEROM、各种传感器等。
I2C总线最大可以挂在多少个设备?
最大电容限制(标准模式和快速模式为400pF,高速模式为500pF)。且在实际的应用过程中最好保证I2C设备不超过8个(经验之谈)。
有些设备预留地址线的仅3位(相同设备最多挂在8个,2^3=8),甚至更少。
I2C总线最大的传输速率为多少?
序号 | 模式 | 最大速率 |
---|---|---|
1 | 标准模式 | 100kb/s |
2 | 快速模式 | 400kbit/s |
3 | 高速模式 | 3.4Mbit/s |
之前在讲串口电路时,有讲过一个“波特率”概念,不知道是否有人知道波特率和比特率的区别?
波特率:单位时间内传输的码元个数。
比特率:单位时间内传输的二级制位数。
二者换算关系为:比特率=波特率×log2n,此处分享一个计算的案例:
2 I2C总线特点
3 编码规则
注意: 在IIC空闲时,SDA、SCL都是保持高电平 。(I2C信号出现故障时,先查看SCL和SDA的电平)
4 信号传输
IIC总线上面的每一个设备都有唯一的地址与之对应,信号传输时也是根据指定的地址找到设备来传输信号。
5 总线仲裁
总线上存在两个及两个以上主设备时,每个节点都可以作为主设备向总线上发送命令或者数据。当总线上同时存在两个或者两个以上主设备发送信号时,就会造成总线冲突。此时,就需要进行I2C总线仲裁。分以下两个方面来说:
时钟同步
时钟总线(SCL)具有“线与”的逻辑功能,就是当总线有任意一个节点向总线发送低电平时,总线就会呈现低电平的状态。(所有节点呈现高电平时,总线表现为高电平)
SDA仲裁
SDA仲裁也是基于“线与”的逻辑功能,节点发送数据后,比较总线与发送的数据是否一致,保持一致则继续发送,否则退出竞争。SDA仲裁这种机制保证了I2C中线上即使有多个主设备,也不会造成数据丢失。
仲裁过程
5 上拉电阻计算
由于I2C总线端口的高电平是通过上拉电阻实现,线上的电平从低变高时,电源通过上拉电阻对线上负载电容CL充电,这需要一定的上升时间。
电容充电一般公式:
整理可得:
I2C规范将低于VIL或0.3VDD的电压定义为逻辑低电平,同样将高于VIH或0.7VDD的电压定义为逻辑高电平。由上式可以求得:
即T1=0.356675*CL
所以最大上拉电阻为:
结论:电源电压决定上拉电阻的最小值,总线负载电容决定上拉电阻的最大值。
当Tr取最大值,CL取最小值时,R有最大值。
模式 | 上升沿的最大时间 | 总线负载最大容限 |
---|---|---|
标准模式 | 1000ns | 400pF |
快速模式 | 300ns | 400pF |
高速模式 | 120ns | 550pF |
所以快速模式下,负载电容为50pF:
全部0条评论
快来发表一下你的评论吧 !