uint8_t i2c_CheckDevice(uint8_t i2cId,uint8_t addr)
{
uint8_t ucAck = 0;
// uint8_t busy ;
// BSP_IIC_config();
/* 发送启动信号 */
BSP_I2C_Start(i2cId); // 0 0
/* 发送设备地址*/
BSP_I2C_Send_Byte(i2cId, addr | I2C_WR);
/* 检测设备的ACK应答 */
ucAck = BSP_I2C_Check_waitAck(i2cId); // 没有用原来那个超时才返回的,直接读去了
DEBUG(" ack : %02x \r\n",ucAck);
// busy = BSP_IIC_isBusy(i2cId);
// DEBUG("BUSY5:%02x\r\n",busy); // 在这边sda被拉高
/* 发送停止信号 */
BSP_I2C_Stop(i2cId);
return ucAck; //怎么让不连接设备的时候scl sda输出高?
}
在有设备的时候会拉高SDA,但是没有设备的时候SDA也是低,导致没设备还产生回复帧。等大佬解答。
|