I2C clock extension
时间:10-02
整理:3721RD
点击:
[Description]
I2C从设备在忙时会拉低clock信号通知主设备,闲时再释放clk信号
但是目前SDK默认无法支持clock extension,导致通信失败
[Solution]
可以通过如下修改打开clock extension功能:
修改gva\driver\chip\MT2523\inc\hal_i2c_master_internal.h如下code,实现enable clock
extension
#define I2C_CONTROL_OPEN_DRAIN_SEND_POLLING (0x0028)
#define I2C_CONTROL_OPEN_DRAIN_SEND_DMA (0x002C)
#define I2C_CONTROL_OPEN_DRAIN_RECEIVE_POLLING (0x0028)
#define I2C_CONTROL_OPEN_DRAIN_RECEIVE_DMA (0x002C)
#define I2C_CONTROL_OPEN_DRAIN_SEND_TO_RECEIVE_POLLING (0x007A)
#define I2C_CONTROL_OPEN_DRAIN_SEND_TO_RECEIVE_DMA (0x007E)
#define I2C_CONTROL_OPEN_DRAIN_SEND_DMA_EXTEND (0x002E)
#define I2C_CONTROL_OPEN_DRAIN_RECEIVE_DMA_EXTEND (0x002E)
#define I2C_CONTROL_OPEN_DRAIN_SEND_TO_RECEIVE_DMA_EXTEND (0x007E)
I2C从设备在忙时会拉低clock信号通知主设备,闲时再释放clk信号
但是目前SDK默认无法支持clock extension,导致通信失败
[Solution]
可以通过如下修改打开clock extension功能:
修改gva\driver\chip\MT2523\inc\hal_i2c_master_internal.h如下code,实现enable clock
extension
#define I2C_CONTROL_OPEN_DRAIN_SEND_POLLING (0x0028)
#define I2C_CONTROL_OPEN_DRAIN_SEND_DMA (0x002C)
#define I2C_CONTROL_OPEN_DRAIN_RECEIVE_POLLING (0x0028)
#define I2C_CONTROL_OPEN_DRAIN_RECEIVE_DMA (0x002C)
#define I2C_CONTROL_OPEN_DRAIN_SEND_TO_RECEIVE_POLLING (0x007A)
#define I2C_CONTROL_OPEN_DRAIN_SEND_TO_RECEIVE_DMA (0x007E)
#define I2C_CONTROL_OPEN_DRAIN_SEND_DMA_EXTEND (0x002E)
#define I2C_CONTROL_OPEN_DRAIN_RECEIVE_DMA_EXTEND (0x002E)
#define I2C_CONTROL_OPEN_DRAIN_SEND_TO_RECEIVE_DMA_EXTEND (0x007E)
