I2C通信协议

   I2c是一种个非常常见的串行通信协议,由SDA,SCL两根线组成,分别为数据信号线和时钟信号线。直接从它的时序图开始分析


起始信号:SCL高电平期间,SDA由高电平到低电平表示为起始信号。I2C设备检测到起始信号知道要开始接受传输的设备。

结束信号:SCL高电平期间,SDA由低电平到高电平表示为结束信号。I2C设备检测到结束信号后知道对方已经结束数据传输。



数据传递:I2C设备只在SCL为高电平时读取SDA的状态,也就是说SDA的电平状态必须在SCL高电平时保持稳定,在SCL低电平期间再产生变化。

响应信号:CPU把数据发给I2C设备,CPU怎么知道I2C设备接受到了数据呢?这就需要到这个响应信号(ACK)——在设备接受完八位数据后,在第九个时钟周期,SDA引脚相对于CPU变为输入模式,并拉低SDA为低电平,在之后释放SDA数据线。


一条I2C(或者说两条...)可以访问多个设备,是怎么访问的呢?


访问设备:先发送一个起始信号(START),传送7位设备地址(根据设备的数据手册得知),第八位是读写选择位(0是写,1是读),如果有这个地址该设备就会给CPU发送一个响应信号(ACK)


读数据:发送完设备地址后先写地址位置0选择写模式,为什么要选择’写‘?因为要先选择你要读存储芯片内部哪一地址的数据,这里的WORD ADRESS就是你通过CPU写下这个地址告诉存储芯片我要读访问这地址的数据,写完后对方回应。再写一次设备地址,这次选择’读‘模式,把数据给读回来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值