I2C | 如何读 I2C 波形()
分析I2C时序波形时需要注意如下几点:
- I2C 发出字节的bit顺序是
从高位-->低位
。
注意,这里有个很容易想当然犯错误的地方 – 有些人错误的看波形的方式是"先发出的波形被后发出的波形推着往前(右)走"。
正确看懂波形的方式是“波形是从左往右增加的,已发出的bit波形位置固定了不会移动;简单理解就是左边的波形是先发出来的,是高位,右边的波形是后发出来的,也就是低位。。 - Start / Restart 信号波形:SCL 高电平 + SDA 由高变低
- 每次传输是
9 bits = 8 bits data + 1 bit ACK
8bits data可能的情况是:7bit addr + 1 bit 1/0(读写);8 bits register addr;8 bits tx data;8 bits rx data
注意:有些 register addr是16 bits 或者 32 bits,这个时候就会连续发 2个或4个 8 bits 来组成 register addr。 - Stop 信号波形:SCL 高点平 + SDA 由低变高
- ACK – 拉底SDA
host send to slave 时:ACK由slave发出;
slave send to host 时:ACK由host发出; - 注意:波形中 Start/7bit addr + 1 bit 1/0(读写)/Restart/Stop 是由I2C host 发出的,在Slave驱动中找不到对应的数据;其余的波形对应的是Slave 驱动代码中 i2c read/write函数中构造的i2c_msg.buf 和 i2c_msg.len。这一点在结合驱动分析波形时很重要哦~
文章图片
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 如何寻找情感问答App的分析切入点
- “成长”读书社群招募
- 上班后阅读开始变成一件奢侈的事
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 人间词话的智慧
- 读司马懿,知人间事,品百味人生
- 以读攻“毒”唤新活动曹彦斌打卡第二天