2021-05-08

I2C总线初级使用

 

I2C总线是一种PCB板上的片上总线,其传输距离仅有两米,用于板子上各芯片模块间的通信,其能作为片上总线的原因是I2C总线是同步通信,能够保证各模块间的时序一致,不易出错,另一个很重要原因是它仅需要两根线即可完成数据的发送与接收,即半双工通信,大大减少了板子上的布线数量,降低布线难度。

I2C介绍:

I2C总线可用于多点通信,但是它具有主从模式之分,只有主设备才可发起通信,从设备可接收或者返回数据,同一时刻只能有一个主设备,并且主设备与主设备之间不可通信。

I2C总线有两根线,分别是时钟线(I2C_SCL)和数据线(I2C_SDA),两根线需要连接最大阻值为2K的上拉电阻,所有设备均需要连接同一个地线,时钟线是主设备发送时序时钟的线,并且只能由主设备发送,它为总线提供通信时钟,实现同步通信。数据线是设备间发送数据的线,可来自主设备或从设备。

 

I2C使用:

I2C总线中接入的每一个设备都有自己独有的器件地址,其次在器件中还有各种功能寄存器和数据寄存器,这些寄存器也有地址,被称为子地址;当要读取或操作寄存器时,主机需发送器件地址与子地址,然后接收由从设备发送的数据。

 

读写数据流程如下(省略清除标志位等待):

发送N个字节的数据

  1. 等待I2C总线退出忙碌状态
  2. 起始信号
  3. 发送器件地址
  4. 发送寄存器地址
  5. 循环发送N个数据
  6. 终止信号

读取N个字节数据

  1. 起始信号
  2. 发送器件地址,目标为发送方向
  3. 发送寄存器地址(可作为起始地址,读取之后的N个字节地址的数据)
  4. 重复起始信号
  5. 发送器件地址,目标为接收方向
  6. 循环接收N个数据
  1. 接收最后一个数据时,关闭ACK应答,使能终止信号,并接收信息
  2. 开启ACK应答

I2C总线协议

7位地址格式:

在发送数据时,首先是一个起始信号(SCL高电平时,SDA由高电平转向低电平),接着发送一个字节数据,此字节包括7位器件地址和1位读/写请求(1:读信息,2:写信息),然后是

ACK响应:

由接收器产生响应脉冲,响应脉冲期间,发送器会释放SDA线电平,此时为高电平,接收器会输出低电平,在时钟线SCL为高电平期间,使SDA保持稳定的低电平

未完待续:

同步

仲裁

下一步学习目标: 自定义I2C协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值