我们都知道,IIC产生停止信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
原子哥的例程是这样的
[mw_shl_code=c,true]//产生IIC停止信号
void IIC_Stop(void)
{
SDA_OUT();//sda线输出
IIC_SCL=0;
IIC_SDA=0;
delay_us(4);
IIC_SCL=1;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SDA=1;//发送I2C总线结束信号
}[/mw_shl_code]
可见,这个函数的意思是,SCL为低电平时,SDA由低电平向高电平跳变,产生结束信号。这里是不是错了,还是我理解错了呢?
个人感觉是这样的吧:
[mw_shl_code=c,true]//产生IIC停止信号
void IIC_Stop(void)
{
SDA_OUT();//sda线输出
IIC_SCL=1;
IIC_SDA=0;
delay_us(4);
IIC_SCL=1;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SDA=1;//发送I2C总线结束信号
}[/mw_shl_code]
|