解决方案
标准模式中的最大 SCL 时钟频率规定为 100 kHz,具有最低 tHD;STA 时序为 4.0 微秒。
Zynq I2C 控制器的 tHD;STA 时序:
- 在 100kHz 下,控制器提供 3.6us 的时间。
- 在 90kHz 下,控制器提供 4.0us。
- 90kHz以下时,控制器超过 4.0us。
注意:此问题只出现在 I2C 标准模式(不出现在快速模式)。
注意:SCL 时钟频率和 tHD;STA 时序取决于 APB 总线时钟频率、CPU_1x 和 i2c.Control_reg0 寄存器中的分频器值。
影响:
很小。
所有最新的 I2C 器件都支持快速模式,该模式下具有 400kHz 的最大 SCL 时钟频率和 0.6us 的最小 tHD;STA。
此时序可通过控制器实现,而且不受此问题影响。
对于标准模式应用而言,90kHz 在大多数情况下都可接受。
规避措施:
有 3 种解决方法:
- 对于标准模式,在 90kHz(或以下)运行接口。
- 对于标准模式,在 100 kHz 下时,3.6us 的tHD;STA 可以接受。
- 使用快速模式。
受影响的配置:
在标准模式下使用 I2C 的系统。
受影响的器件修订版本:
全部,无计划修复。
参考 (Xilinx Answer 47916) - Zynq-7000 SoC 芯片修订差异