模拟I2c出现问题,要一次接收两个字节,但现在只能接收...
本帖最后由 huaidan1628 于 2015-8-9 19:05 编辑现在只能接受第一个,感觉应该是接收第一个高字节之后那个主机应答有问题,但是没找到怎么有问题,大家帮忙看一下
void Ack_I2c(uchar a) //应答
{
SCL_pout1();
SCL_1();
if(a==0)
{
SDA_pout0(); /*在此发出应答或非应答信号 */
SDA_1();
}
else
{
SDA_pout1();
SDA_1();
}
iic_delay(); //*时钟低电平周期大于4μs
iic_delay();
SCL_pout0(); //*清时钟线,钳住I2C总线以便继续接收*
SCL_1();
iic_delay();
iic_delay();
}
没有非应答信号的函数 本帖最后由 huaidan1628 于 2015-8-9 13:45 编辑
miaoguoqiang 发表于 2015-8-9 13:15
没有非应答信号的函数
不就是在接收第一个字节之后第二个字节之前主机发送一个应答么,也用不到非应答啊,
那个void Ack_I2c(uchar a) //0时应答,1时非应答 huaidan1628 发表于 2015-8-9 13:44
不就是在接收第一个字节之后第二个字节之前主机发送一个应答么,也用不到非应答啊,
那个void Ack_I2c(uc ...
在最后一个字节完成后发送一个非应答信号 再发送停止信号 miaoguoqiang 发表于 2015-8-9 13:53
在最后一个字节完成后发送一个非应答信号 再发送停止信号
试过了还是不好使 miaoguoqiang 发表于 2015-8-9 13:53
在最后一个字节完成后发送一个非应答信号 再发送停止信号
已经好了,是应答少了一个时钟
页:
[1]