if ((RW == 0)&&(DA==0))//寻址后,并由移位寄存器SSPSR和地址寄存器SSPADD自动比较是否匹配,
//如果匹配RW由硬件自动完成置0;
{ // write data to PIC MCU, ignore it and perform a dummy read
CLR_I2C_BF;
HOLD_SCL;
// delay_100us();
CLR_SSPOV;
CLR_SSPIF;
}
else if ((RW == 0)&&(DA==1))
{
RLS_SCL;
CLR_SSPIF;
}
else if((RW == 1)&&(DA==0)) //接收和发送的最后一个字节是地址,则向STM32发送数据
{ // READ data from MCU and address match 0
先谢谢你了啊,勘误表上只说到两点
1.SSP的start bit,fail to regonize start bit
2.SSP的SSPIF Flag,SSPIF Set on first reception only.
这个不太清除具体有什么关联。
另外I2C的SPPCON都已经配置成从机,7位地址模式了,就算是吧地址字节改为7位的0x50也不行
,所以就没能发出应答和数据。网上一些例子都是关于用PIC当主机去读取EEPROM的,和这个不太接近。PDF的这部分也阅读了多次,就是感觉欠缺了谢什么,所以程序没进入中断,郁闷啊。。。