首先是硬件连接,我有一个小的IIC的EEPROM,使用插针连接到了IIC1(SPI3CS3_I2CSCL_NHET129和SPI3CS2_I2CSDA_NHET127),如下图:
黄线飞到了3.3V的电源给EEPROM供电,橙色是GND,绿色是SCL,红色是SDA,由于SCL和SDA引脚默认是SPI3的片选信号,在HAL CODE GENERATOR中进行引脚复用,如下图:
之后是I2C的配置,如下图:
接下来是CCS中的代码编写,这里采用了example例程,因为pcf8570和AT24C02的时序是相同的,例程截图及芯片时序截图如下图所示:
在例程中仅对slave address做了改动,改为了AT24C02的地址0xA0,在代码执行过程中,单步调试,会卡在第一个检测总线是否繁忙的位置,直接运行会卡在第一个while(i2cIsStopDetected(i2cREG1) == 0);处,等待停止位的发出,拿示波器量波形结果如下,发现时序有问题,一开始发送的并不是我设置的设备地址,如下图:
请帮忙分析,谢谢