我在 I2C 稳定性方面遇到问题、希望将 I2C 时钟降低到1/10、这是正常速度、因此我可以使用 PC 声卡来捕获 I2C 信号。 声卡的频率限制为20kHz。 我认为10kHz I2C 时钟可能起作用。
有关我用于预分频器和时钟的数字、请参阅下面的。
它在100KHz 时似乎工作正常(有点)、(I2CCLKL 和 I2CCLKH 都设置为45D 或0x2D。)
但是、当我使用450d (0x1c2)作为高时钟和低时钟时、通信中断
我在 I2C 端口上有一个 FTDI FT201x USB 转 I2C 芯片、一个 PurePath CC8030无线芯片以及一个模拟器件 ADAU1701。
有什么想法吗?
谢谢、Mark。
这是我的尝试:
Piccolo 的运行频率为50MHz。
//设置 I2C 模块的预分频器。 在模块 clk I2caRegs.I2CPSC.all = 4上、必须介于7-12MHz 之间; // 50MHz/5 (PSC + 1)= 10.0MHz //将 PSC 设置为4会使 d = 5 //数学是:对于100KHz,其中 d 为5 (基于上面的预分频) // 10、000、000 /(45 + 5)+(45 + 5) // 10、000、000 / 50 + 50 // 10、000、000 / 100 = 100.0 KHz //如果我们需要100k clk 频率,请分别使用45和45 // 100KHz 为10uS 脉冲周期。 每字节9位为每字节90us I2caRegs.I2CCLKL = 45; //注:必须为非零 I2caRegs.I2CCLKH = 45; //注意:必须为非零 //让我们尝试将其降低到10kHz 的速率 I2caRegs.I2CCLKL = 450; //注:必须为非零 I2caRegs.I2CCLKH=450; //注:必须为非零