文章目录
I2C简介
I2C(芯片间)总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。支持标准和快速两种模式,同时与SMBus 2.0兼容。
I2C模块有多种用途,包括CRC码的生成和校验、SMBus(系统管理总线—System Management Bus)和PMBus(电源管理总线—Power Management Bus)。
根据特定设备的需要,可以使用DMA以减轻CPU的负担。
接口可以下述4种模式中的一种运行:
● 从发送器模式
● 从接收器模式
● 主发送器模式
● 主接收器模式
该模块默认地工作于从模式。接口在生成起始条件后自动地从从模式切换到主模式;当仲裁丢失或产生停止信号时,则从主模式切换到从模式。允许多主机功能。
一、总体特征
SDA 和 SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压(见图 1 )。当总线空闲时,这两条线路都是高电平,连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C 总线上数据的传输速率在标准模式下可达 100kbit/s,在快速模式下可达 400kbit/s 在高速模式下可达 3.4Mbit/s,连接到总线的接口数量只由总线电容是 400pF 的限制决定。
二、位传输
由于连接到 I2C 总线的器件有不同种类的工艺 (CMOS NMOS 双极性), 逻辑 ‘0’ (低) 和 ‘1’ (高)的电平不是固定的,它由 VDD 的相关电平决定。每传输一个数据位就产生一个时钟脉冲。
2.1 数据的有效性
SDA 线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变(见图 2)。
2.2 起始和停止条件
在 I2C 总线中,唯一出现的是被定义为起始(S)和停止(P)条件(见图 3)的情况。
其中一种情况是在 SCL 线是高电平时,SDA 线从高电平向低电平切换。这个情况表示起始条件。
当 SCL 是高电平时,SDA 线由低电平向高电平切换表示停止条件。
起始和停止条件一般由主机产生。总线在起始条件后被认为处于忙的状态。在停止条件的某段时间后总线被认为再次处于空闲状态。
如果产生重复起始(Sr)条件而不产生停止条件吗,总线会一直处于忙的状态。此时的起始条件(S)和重复起始(Sr)条件在功能上是一样的(见图 8)因此在本文档的剩余部分,符号(S)将作为一个通用
的术语既表示起始条件又表示重复起始条件,除非有特别声明的(Sr)。
如果连接到总线的器件合并了必要的接口硬件 那么用它们检测起始和停止条件十分简便。但是没
有这种接口的微控制器在每个时钟周期至少要采样 SDA 线两次来判别有没有发生电平切换。