前言
(1)如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效
(2)最近做I2C
设备移植过程中,出现了一些小问题。为了方便定位到底是硬件问题还是程序有问题,根据师傅的提醒下,打算使用示波器对I2C数据进行解析。
数据解析
示波器配置
(1)关于示波器如何使用,以及如何接线我就不赘述了。因为不同的示波器使用不太一样,具体看示波器的操作手册。不过下面这两个配置基本都是一样的。
<1>设置捕获SDA
下降沿(也就是黄色的线)。因为I2C
规定,SCL
处于高电平时,SDA
由高到低变化,这种信号是起始信号。
<2>没记错的话,我设置的捕获宽度为100us,如果宽度太低,最后的结束信号抓不到。这个建议你上机实测,也不一定要100us,看你实测结果。I2C
协议规定,SCL
处于高电平,SDA
由低到高变化,这种信号是停止信号。
数据解析
(1)根据
I2C
协议规定,当主机发送完起始信号之后,就可以马上发送8bit的数据,然后从机发送1bit的回应信号。这种主从机交互都是8bit数据+1bit回应信号。因此,你们可以看到,我每个数据之间都间隔了1个SCL的高电平。
(2)之后就可以解析数据了,根据I2C
协议规定,SCL
为高电平时,SDA
必须保持稳定,此时的SDA
电平即为有效数据。
(3)至于回应信号,I2C
规定,0为ACK
,1为NACK
。
(4)之后就是体力活了,根据I2C从机设备手册上的协议规范,我们即可成功解析数据。
建议
(1)当时我使用示波器解析I2C数据,是因为不知道逻辑分析仪可以自动帮我们解析。。。。
(2)此事还被大佬们狠狠的嘲笑,如果有逻辑分析仪,建议逻辑分析仪,会方便很多。
参考
(1)一文看懂I2C协议;
(2)AHT20 技术手册;
感谢人员
(1)带我的师傅 — 李工。
(2)肯哥交流群若干大佬们。