STM32 串行传输总线I2C

I2C 介绍 :

I2C BUS 是Phililps 公司推出的一种基于两线的芯片串行传输总线.I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件片选地址的方法,从而使硬件系统具有简单灵活可扩展的特点 .

 

I2C总线在标准模式下,数据传输率可达100kbps  高速模式下400kbps 目前I2C广泛应用于消费电子产品,通信产品,仪器仪表及工业测控系统中 。

 

I2C只有有两根线 :  SDA线和时钟SCL线。

 

每个器件都有唯一一个的地址以供识别,并在主模式或者从模式下,而且各器件都可以作为一个发送器或接收器。

微控制器包含I2C发送/接收器都可以选择主模式或从模式工作,但任任意时刻I2C总线上只允许一个微控制器工作在主模式下,作为主控器;而另一个控制器必须工作在从模式下作为被控器。

STM32 串行传输总线I2C_第1张图片

特点 : 

1 二线传输  ;

2 无中心主机 ;

3  软件寻址 ;

4 应答式数据传输工程 ;

5 节点可带电接入或撤出 ;

 

I2C  数据传输  : 

传输 第一个8位数据为寻址字节,包括7位的被控器地址和1位方向位 , 接着被控器 发出 A (应答位) ,紧接着是主控器与被控器之间的数据传输和应答 。在数据传输完成后 ,主控器要发出停止信号。

STM32 串行传输总线I2C_第2张图片

 

起止信号  :  在SCL 保持高电平器件 ,SDA 由高电平的跳到低电平 , 

                                STM32 串行传输总线I2C_第3张图片

停止信号 : SCL 保持高电平期间 , SDA由低电平往高电平跳边 。

                                    

 

字节格式

  发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须处理一个响应位。

 

应答响应   

       数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA 线(高)。   

       在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。

       也就是说主器件发送完一字节数据后要接收一个应答位(低电平),从器件接收完一个字节后要发送一个低电平。

 

 

STM32  的 I2C 模块 :

 

1 . I2C 主设备功能  : 产生 时钟  ; 产生 起始和停止信号 

 

2 . I2C 从设备功能  : 可编程的I2C地址检测  ;  可响应 2个从地址 的双地址能力  ;  停止位检测 ;

 

3 . 状态标志 :  发送器/ 接收器模式标志  ;   字节发送结束标志  ;   I2C总线忙标志  ;

 

4 . 错误标志 : 主模式时的仲裁丢失 ;地址/ 数据传输后的应答(ACK) 错误 ; 检测到起始和停止错位 ; 禁止拉长时钟功能后的上溢  和 下溢  ; 

   

  发送过程  : 

起始条件后 在 SCL 上升沿 到来时 SDA  被 接收方接收数据 , SCL 下降沿 来的时候 换下一组 数据 ;

STM32 串行传输总线I2C_第4张图片

 

 

未完待续 。。。。

 

 

 

 

 

你可能感兴趣的:(嵌入式/uboot/stm32)