STM32 串行传输总线I2C

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 下降沿 来的时候 换下一组 数据 ;

 

 

未完待续 。。。。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值