Part Number:CDCEL949Other Parts Discussed in Thread: CDCE925
使用I2C调试工具i2c-tools直接写入寄存器,命令为:i2cset -f -y 2 0x6c 0x02 0xb4,无法写入,读取寄存器值为0x07
Amy Luo:
您好,
ww ww 说:命令为:i2cset -f -y 2 0x6c 0x02 0xb4,
我不熟悉 i2c-tools工具,这个命令的含义是 0x6c 是设备地址,将0xb4 写入寄存器0x02 是吗?
但是 CDCEL949的I2C接口协议应该与您使用的 i2c-tools中的协议不兼容,因为它分Byte操作和Block操作,由 CommandCode控制,如下截图所示:
,
ww ww:
您好,这个命令的含义与您说的是一样的,i2c-tools工具写入操作默认为Byte操作,我也通过添加参数进行Block操作,结果都是无法写入,读出值为0X07。请问一下如何进行CommandCode控制,是有一个单独的寄存器进行写入吗?
,
ww ww:
我看到我们现在使用的Linux系统中已经编译进去了cdce925.c驱动,是否可以通过修改设备树来对输出时钟频率进行配置?
,
Amy Luo:
关于寄存器的读写建议您用示波器抓取I2C通信波形以确认操作过程是否有问题。
CommandCode 如截图中table 6定义,用最高位bit7来确定Byte操作还是Block操作,bit7=0的话是Block操作,bit7=1的话是Byte操作,剩余的[6:0]位是寄存器地址。
,
ww ww:
示波器抓取Byte操作的波形,发现最后没有收到ACK信号
,
Amy Luo:
没有收到ACK信号,可能是通信时序不对,也可能是通信波形上存在干扰,使得CDCEL949不能识别。
不知道您的问题是否已解决,如果没有的话,建议您附上通信波形以分析是哪里的问题。