# V0.3 完成DHT10驱动函数,但是数据目前异常,等待排除硬件问题
This commit is contained in:
22
Driver/iic.c
22
Driver/iic.c
@ -92,15 +92,23 @@ IIC_WaitAck (void)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
IIC_SendAck (bit ack)
|
||||
/**
|
||||
* @brief 发送IIC协议中的确认信号
|
||||
*
|
||||
* 该函数通过控制SDA(数据线)和SCL(时钟线)来发送确认(ACK)或不确认(NACK)信号。
|
||||
* 在IIC通信中,发送方在传输数据后会发送一个ACK请求,接收方需要通过拉低或拉高SDA线来响应。
|
||||
*
|
||||
* @param ack 一个bit类型的变量,决定是否发送确认信号。ack为1时发送ACK,ack为0时发送NACK。
|
||||
*/
|
||||
void IIC_SendAck (bit ack)
|
||||
{
|
||||
// 根据ack参数决定SDA线的电平,1发送ACK,0发送NACK
|
||||
SDA = ack ? 0 : 1;
|
||||
IIC_Delay ();
|
||||
SCL = 1;
|
||||
IIC_Delay ();
|
||||
SCL = 0;
|
||||
SDA = 1; // 释放SDA
|
||||
IIC_Delay(); // 等待一段时间,确保电平稳定
|
||||
SCL = 1; // 拉高SCL线,允许数据传输
|
||||
IIC_Delay(); // 再次等待,确保时钟脉冲宽度
|
||||
SCL = 0; // 拉低SCL线,结束当前时钟周期
|
||||
SDA = 1; // 释放SDA线,准备下一次通信
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user