I2C 介绍 :
I2C BUS 是Phililps 公司推出的一种基于两线的芯片串行传输总线.I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件片选地址的方法,从而使硬件系统具有简单灵活可扩展的特点 .
I2C总线在标准模式下,数据传输率可达100kbps 高速模式下400kbps 目前I2C广泛应用于消费电子产品,通信产品,仪器仪表及工业测控系统中 。
I2C只有有两根线 : SDA线和时钟SCL线。
每个器件都有唯一一个的地址以供识别,并在主模式或者从模式下,而且各器件都可以作为一个发送器或接收器。
微控制器包含I2C发送/接收器都可以选择主模式或从模式工作,但任任意时刻I2C总线上只允许一个微控制器工作在主模式下,作为主控器;而另一个控制器必须工作在从模式下作为被控器。
特点 :
1 二线传输 ;
2 无中心主机 ;
3 软件寻址 ;
4 应答式数据传输工程 ;
5 节点可带电接入或撤出 ;
I2C 数据传输 :
传输 第一个8位数据为寻址字节,包括7位的被控器地址和1位方向位 , 接着被控器 发出 A (应答位) ,紧接着是主控器与被控器之间的数据传输和应答 。在数据传输完成后 ,主控器要发出停止信号。
起止信号 : 在SCL 保持高电平器件 ,SDA 由高电平的跳到低电平 ,
停止信号 : SCL 保持高电平期间 , SDA由低电平往高电平跳边 。
字节格式
发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须处理一个响应位。
应答响应
数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA 线(高)。
在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。
也就是说主器件发送完一字节数据后要接收一个应答位(低电平),从器件接收完一个字节后要发送一个低电平。
STM32 的 I2C 模块 :
1 . I2C 主设备功能 : 产生 时钟 ; 产生 起始和停止信号
2 . I2C 从设备功能 : 可编程的I2C地址检测 ; 可响应 2个从地址 的双地址能力 ; 停止位检测 ;
3 . 状态标志 : 发送器/ 接收器模式标志 ; 字节发送结束标志 ; I2C总线忙标志 ;
4 . 错误标志 : 主模式时的仲裁丢失 ;地址/ 数据传输后的应答(ACK) 错误 ; 检测到起始和停止错位 ; 禁止拉长时钟功能后的上溢 和 下溢 ;
发送过程 :
起始条件后 在 SCL 上升沿 到来时 SDA 被 接收方接收数据 , SCL 下降沿 来的时候 换下一组 数据 ;
未完待续 。。。。