有关字节数据发送函数 void SendByte(uchar c)中的检查应答位判断, 源码中是: if(!HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (SDA << 2)))) //判断是否接收到应答信号 ack=0; //无应答 else ack=1; //有应答
请问怎么是: if(!HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (SDA << 2)))) 呢?? I2C时许中有应答才是0,无应答是1的阿??????????
另外,我发现i2c软件包中的代码在检测应答位时没有将SDA引脚的GPIO方向设置成输入,而是在SDA引脚输出的模式下直接去检测SDA的电平??请问是为什么???
|