- 2024-03-26
-
回复了主题帖:
gpio模拟iic,scl有异常波动
小卡拉米000 发表于 2024-3-26 09:58
有没有懂的快来帮帮我
解决了,谢谢
-
回复了主题帖:
gpio模拟iic,scl有异常波动
有没有懂的快来帮帮我
-
发表了主题帖:
gpio模拟iic,scl有异常波动
void gpioWriteBit(INT8U pin, INT8U val) //val决定pin的高低电平
{
if(val==0){
gpio_low(pin);
}else{
gpio_high(pin);
}
return;
}
INT8U i;
for (i = 0; i < 8; i++) // writes byte, one bit at a time
{
if(val & 0x80) {//字节高位先发送
gpioWriteBit(SDA_PIN,1); //送数据到数据线上
}else{
gpioWriteBit(SDA_PIN,0);
}
val <<= 1;
DelayUs(HOLD_TIME);
gpioWriteBit(SCL_PIN,1); //置时钟信号为高电平,使数据有效
DelayUs(HOLD_TIME);
gpioWriteBit(SCL_PIN,0);
//DelayUs(HOLD_TIME);
}
以上为写函数,执行写时偶尔会有100ns波动
void gpioI2cAck(void)
{
ENABLE_GPIO_OUTPUT(SDA_PIN);
gpioWriteBit(SDA_PIN, 1);
DelayUs(HOLD_TIME);
gpioWriteBit(SCL_PIN,1);
DelayUs(HOLD_TIME);
gpioWriteBit(SDA_PIN,0);
DelayUs(HOLD_TIME);
gpioWriteBit(SCL_PIN,0);
DelayUs(HOLD_TIME);
//DelayUs(WAIT_W_R_NEXT_BYTE);//读完一个字节至少等待半个周期
return;
} 该函数为主机接到数据之后发送ack,但是ack一直发不出去,请问这两个问题是什么原因