Linux I2C协议

Linux I2C协议

I2C总线协议是NXP公司设计的,I2C使用两条线在主控制器和从机之间进行数据通信。一条是SCL(串行时钟线),另外一条是SDA(串行数据线),这两条数据线需要接上拉电阻(4.7K),空闲状态的时候处于高电平。I2C总线标准模式下速度可以达到100Kb/S, 快速模式下可以达到400Kb/S。

起始位

SCL高电平且SDA下降沿则是起始位。

停止位

SCL高电平且SDA上升沿则是停止位。

应答信号

主机发送完8位数据之后会在时钟周期内等待从机应该,也就是将SDA信号拉低。

I2C写时序

  1. 主机发送开始信号
  2. 发送I2C设备地址,发送8bit数据,高7位是从机地址,最后1位是读写位(0表示写,1表示读)
  3. 等待从机ACK应答
  4. 重新发送开始信号
  5. 发送要写入数据的寄存器地址
  6. 等待从机ACK应答
  7. 发送要写入寄存器的数据
  8. 等待从机ACK应答
  9. 主机发送停止信号

I2C读时序

  1. 主机发送开始信号
  2. 发送设备地址写信号
  3. 等待从机ACK应答
  4. 重新发送开始信号
  5. 发送要读取的寄存器地址
  6. 等待从机ACK应答
  7. 重新发送开始信号
  8. 重新发送要读取的从设备地址以及读信号
  9. 等待从机ACK应答
  10. 从I2C器件读取数据
  11. 主机发出NO ACK信号表示读取完成,不需要从机再发送ACK信号
  12. 主机发送停止信号

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值