你(们)好
我在中断模式下使用芯片上的 eUSCI_B0 i2c 外设与 FRAM 芯片进行通信。 。
我想确定为什么我必须将 i2c 时钟降至130KHz 才能与 Rohm FEDR44V100A fram 1MB 芯片"可靠"通信。
更确切地说、当我将 i2c 时钟设置为400kHz 时、FRAM 芯片的"特定时间"似乎仅发回0 (最佳情况或最坏的随机数据)、但当我将 i2c 时钟设置为130KHz 时、一切都运行得非常好。
我假设发送错误数据的是 FRAM 芯片、而不是接收错误数据的 i2c 端口、因为我无法"一致地"重现错误、以便在逻辑分析仪上进行捕获。
从 FRAM 数据表中可以看出、该芯片可在高达1MHz 的时钟速度下运行。
我的 MSP430以16.77MHz 运行
SCL 和 SDA 上的上升时间少于200nS。
上拉电阻为2K
i2c 的设置为:
UCB0CTLW0 |= UCMST | UCMODE_3 | UCSSEL_SMCLK;
UCB0BRW_L = 128;. 这适用于130KHz
UCB0BRW_L = 40;................... 这适用于400kHz
UCB0BRW_H = 0;
UCB0I2COA0 = 0;
UCB0I2CSA =销售地址;
UCB0IE 的中断位在相关的时间被置位/清零。
我可能会指出、当以400kHz 的频率与 Microchip 47L16 EERAM 芯片通信时、我没有遇到任何问题、这表明问题出在 ROHM 芯片上(100%)...但为什么?
如果有任何关于我可以尝试和提高速度的指示、我们将不胜感激。
提前感谢
