Silabs efm8bb3在smbus / i2c主传输上非常慢

时间:2017-12-18 14:32:12

标签: performance delay i2c 8051 smbus

在使用Simplicity Studio和Silabs EFM8BB3(基于8051的SoC)时,我观察到一个非常慢的传输速率,在每个字节传输之间有一个巨大的暂停(最多60毫秒),以及(向上 - 160 ms)在smbus主接口上的i2c协议上的完整消息之间。

为什么传输速度如此之慢,我能做些什么来解决它?

1 个答案:

答案 0 :(得分:1)

通过激活另一个仅负责SCL延迟/超时识别的定时器来解决问题(注意,数据表中没有明确说明)。在 Silabs EFM8BB3 芯片组上,定时器T2 具有提供i2c数据流传输调制的作用。 计时器T3 具有提供 i2c SCL 超时处理的作用。为了能够减少字节之间的暂停,必须启用T3。必须在two timers, 8-bit auto reload模式下配置T3并启用低字节中断。在 400KHz i2c传输速率的情况下,T3低字节溢出频率必须设置为50000 (reload value is 215)。必须实现简化的中断处理程序(只是为了丢弃中断标志)。 T3高字节溢出频率可以设置为最低可用8000 (reload value is 1)。 SMBUS接口实体需要激活Enable SMBus SCL Timeout Detection