最近用PIC单片机的IIC作为从机放在一个产品中,使用stm32、atmega32、totalphase的totalphase作为主机读取信息都没问题,速率支持10KHz到500KHz,但是最近在客户的服务器主机中确读取错误,从读取到的内容判断是从机获取读取地址错误。如图片所示,主机写入的读取地址0x80,我们的产品每次都识别错误,而且数值随机。如下所示为获取地址的代码。
SSP1IF = 0;
i2c_address = SSP1BUF;
timercounter=100;
while(PIR1bits.SSP1IF == 0)
{
timercounter--;
if(timercounter==0)
{
return ;
}
}//waiting for send ~ACK
SSP1IF = 0;
word_address = SSP1BUF;
i2c_counter = word_address;
return ;
|