初级会员

- 积分
- 196
- 金钱
- 196
- 注册时间
- 2014-7-3
- 在线时间
- 38 小时
|
4金钱
如图,为什么启动I2C后,SDA线会有一个高脉冲,对应的代码如下
void IIC_Start(void)
{
SDA_OUT(); //sdaÏßêä3ö
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;//START:when CLK is high,DATA change form high to low
delay_us(4);
IIC_SCL=0;//ÇˉסI2C×üÏߣ¬×¼±¸·¢Ëí»ò½óêÕêy¾Y
}
void IIC_Send_Byte(u8 txd)
{
u8 t;
SDA_OUT();
IIC_SCL=0;//à-μíê±Öó¿aê¼êy¾Y′«êä
for(t=0;t<8;t++)
{
//IIC_SDA=(txd&0x80)>>7;
if((txd&0x80)>>7)
IIC_SDA=1;
else
IIC_SDA=0;
txd<<=1;
delay_us(2); //¶ÔTEA5767Õaèy¸öÑóê±¶¼êDZØDëμÄ
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
delay_us(2);
}
}
代码的顺序是这样的,先调用IIC_Start函数启动总线,随后调用IIC_Send_Byte发送器件地址,怎么也看不出哪里有个SDA置高的语句,
我唯一能想到的就是IIC_Send_Byte函数里开始就调用了SDA_OUT函数,将SDA线设置为输出,难道这个设置为输出会导致SDA线电位变高吗
|
|