这两天有客户反映阿波罗STM32F429开发板的代码不支持24C512。
特意买了一批芯片回来测试,发现确实不能支持,最终发现IIC_Stop函数有一处bug,修改后问题得到解决。
问题代码:
[mw_shl_code=c,true]//产生IIC停止信号
void IIC_Stop(void)
{
SDA_OUT();//sda线输出
IIC_SCL=0;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SCL=1;
IIC_SDA=1;//发送I2C总线结束信号
delay_us(4);
}[/mw_shl_code]
修正后代码:
[mw_shl_code=c,true]//产生IIC停止信号
void IIC_Stop(void)
{
SDA_OUT();//sda线输出
IIC_SCL=0;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SCL=1;
delay_us(4);
IIC_SDA=1;//发送I2C总线结束信号
}[/mw_shl_code]
就是这个delay_us的位置出现了问题,导致的bug.
修改后,就可以支持24C512了。。。。
阿波罗, 开发 |