This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CDCEL949: 寄存器写不进去,读出来全是0x07

Part Number: CDCEL949
Other Parts Discussed in Thread: CDCE925

使用I2C调试工具i2c-tools直接写入寄存器,命令为:i2cset -f -y 2 0x6c 0x02 0xb4,无法写入,读取寄存器值为0x07

  • 您好,

    命令为:i2cset -f -y 2 0x6c 0x02 0xb4,

    我不熟悉 i2c-tools工具,这个命令的含义是 0x6c 是设备地址,将0xb4 写入寄存器0x02 是吗?

    但是 CDCEL949的I2C接口协议应该与您使用的 i2c-tools中的协议不兼容,因为它分Byte操作和Block操作,由 CommandCode控制,如下截图所示:

  • 您好,这个命令的含义与您说的是一样的,i2c-tools工具写入操作默认为Byte操作,我也通过添加参数进行Block操作,结果都是无法写入,读出值为0X07。请问一下如何进行CommandCode控制,是有一个单独的寄存器进行写入吗?

  • 我看到我们现在使用的Linux系统中已经编译进去了cdce925.c驱动,是否可以通过修改设备树来对输出时钟频率进行配置?

  • 关于寄存器的读写建议您用示波器抓取I2C通信波形以确认操作过程是否有问题。

    CommandCode 如截图中table 6定义,用最高位bit7来确定Byte操作还是Block操作,bit7=0的话是Block操作,bit7=1的话是Byte操作,剩余的[6:0]位是寄存器地址。

  • 示波器抓取Byte操作的波形,发现最后没有收到ACK信号

  • 没有收到ACK信号,可能是通信时序不对,也可能是通信波形上存在干扰,使得CDCEL949不能识别。

    不知道您的问题是否已解决,如果没有的话,建议您附上通信波形以分析是哪里的问题。