I2C的地址设置问题
-
I2C主机的例程是操作外部EE,其地址为0xA0,在YCT中配置地址值80(0x50),并不是0xA0。
观察到驱动在计算I2C地址时做了移位操作,0x50左移1位后就是0xA0了。
得出YCT的配置值=I2C从机地址右移1位。现有一个I2C从机的地址是0x2A。
YCT的配置值=0x2A>>1=0x15
但是按照上面配置后,I2C无法正常通讯,使用逻辑分析仪发现主机发的地址值是0x15。
再将配置改为0x2A。
发现至少可以通讯上,且读取到的值也是符合预期的。
仿真后发现,MCU发出的地址是0x54。因此有如下疑问:
-
YCT上I2C地址的配置值=从机地址>>1吗?还是说直接填从机地址呢?
-
NAK的原因有哪些呢?
-
-
Frank 在 I2C的地址设置问题 中说:
最后一位为读
Frank 在 I2C的地址设置问题 中说:
I2C specification中有明确的定义,对于7位从机地址,占用一个字节的高7位,最后一位为读写位。YCT中直接配从机地址,没有移位。
懂了,是我搞错了。这是I2C的7位地址模式描述方法,逻辑分析仪I2C识别默认也是用的7位地址模式。
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...