
一、IIC主要特点:
1、IIC(Inter-Integrated Circuit)是两线式串行总线,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短。支持不同速率的通讯速度,● 标准模式(100kHZ),● 快速模式(400kHZ),● 高速模式(3.4MHz)。
2、IIC是半双工,而不是全双工 ,同一时间只可以单向通信。
(I2C通信方式为半双工,只有一根SDA线同一时间只可以单向通信,485也为半双工,SPI和uart通信为全双工。)
3、SCL和SDA都需要接上拉电阻 (大小由速度和容性负载决定一般在3.3K-10K之间) 保证数据的稳定性,减少干扰。为了避免总线信号的混乱,IIC的空闲状态只能有外部上拉,使SDA和SCL线都保持高电平。 而此时空闲设备被拉到了高阻态,也就是相当于断路, 整个IIC总线只有开启了的设备才会正常进行通信,而不会干扰到其他设备。
4、IIC一共有只有两个总线: 一条是双向的串行数据线SDA,一条是串行时钟线SCL:
SDA(Serial data)是数据线,D代表Data也就是数据,Send Data 也就是用来传输数据的;
SCL(Serial clock line)是时钟线,C代表Clock 也就是时钟,也就是控制数据发送的时序的。
5、IIC器件地址:每一个IIC器件都有一个器件地址,有的器件地址在出厂时地址就设定好了,来确保不同设备之间访问的准确性。
6、IIC总线理论最多可以挂载128个设备。IIC总线最多可以挂多少个设备由IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件。但是规定了总线电容不能超过400pF,实际设计中经验值大概是不超过8个器件。
二、IIC总线相关问答:
Q1、为什么要使用俩条信号线?
答:节省资源。
Q2、为什么SCL时钟线由主设备控制?
答:进行通信的主动权是掌握在主机手中。
Q3、为什么SDA是双向串行数据线?
答:因为设备和设备之间要通信,交换数据。
Q4、为什么通过设备号区分?
答:因为主设备发送数据是全部从设备都接收到了,就要通过一个特殊的id来区分,一般是厂家设置。
Q5、上拉电阻的作用?
答:避免数据冲突,如果主设备和从设备同时输出高电平,造成短路。空闲时,电平也会自动拉高。
三、IIC总线协议
主机发送起始信号 → 发送需要通信的从设备地址 → 读写信息 → 等待应答(ACK) → 主机发送停止信号。
1、起始信号:scl高电平时,sda从高电平向低电平跳变。
2、停止信号:scl高电平时,sda从低电平向高电平跳变。
3、只有scl为高电平,sda的数据才有效。
4、读数据时:sda会被主机释放掉,由从机控制sda,主机通过sda接收数据;
写数据时:sda由主机控制,从机通过sda接收;iic的设备地址有7位和11位。
5、响应,不管是主机和从机接收到数据都要发送应答,为了信号的完整性。有发送应答ack和发送非应答nack,接收到nack会停止数据发送。比如在主机发送完数据后,从机会立马得到sda的控制权,0是应答,1是非应答。
四、软件IIC和硬件IIC的区别
1、软件IIC
软件IIC是指使用MCU的通用GPIO引脚模拟IIC通信协议的方式,输出IIC时序。
好处:不用依赖硬件资源,灵活,操作简单。
坏处:
①占用MCU资源:由于IIC通信需要由CPU通过GPIO引脚进行模拟,因此CPU的负载较大;
②通信速率低:由于GPIO引脚的性能限制,软件IIC通常不能支持和硬件IIC一样高的通信速率。
2、硬件IIC
硬件IIC是指使用微控制器(MCU)内部集成的IIC模块进行通信的方式。这种方式的优点在于,由于IIC通信由硬件模块自动完成,因此CPU的负载较小,可以同时处理其他任务。此外,硬件IIC通常能够支持更高的通信速率。
待补充。。。。。。
3070

被折叠的 条评论
为什么被折叠?



