要测试一个i2c接口的PMIC芯片,这个i2c设备地址是0x74。网上买了一款USB转I2C的模块。但遇到一个奇怪的问题,单字节读写是好的,连续读写多字节不行。本想咨询一下淘宝商家,却意外发现淘宝店铺已倒闭。
首先,测试了i2c单byte写,是OK了。
再测试多字节写,却写不进去。发送界面如下:
操作没什么特别的。
用正点原子的逻辑分析仪,抓单字节写的波形如下:
再抓多字节写的波形:
发现问题了,指定的0x74,变成了0x3A。看来问题就出在设备地址上。
一般设备地址是7bit,0x74其实是0b1110100。在发送i2c第一字节时,末尾还需要拼上一个0(写)。USB转I2C的模块在发送单字节时,人性化对设备地址做了处理,输入框与实际发送的做了偏移。而多字节时,工具是以原始数据发送,即发送0x74(对应的设备地变成了0x3A),所以出错了。
在验证时,我们把多字节的框里填写0xE8,即0x74左移1bit,重抓波形,结果正确。
在测试中,正点原子的逻辑分析仪帮了大忙,帮助我们找到的问题的原因。有需要的朋友可以淘宝搜索购买。