M0单片机I2C与EEPROM通信程序调试
1.现象:收不到从机返回的ACK信号。
2.解决:
①示波器查看波形,发现SDA和SCL波形一致,推测短路,重新焊接。
②SDA波形正常,SCL始终高电平,推测初始化不完全,补增初始化程序。
//IIC初始化
void IIC_Init(void)
{
//GPIO_I2C_Init();
GPIO_Init(SDA_PORT, SDA_PIN,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
GPIO_Init(SCL_PORT, SCL_PIN,GPIO_DIR_OUTPUT,GPIO_PULL_NONE);
SCL_Set_H();
SDA_Set_H();
//PD0 PD1 enable MUX mode
IOCTRLA_SFRS->PDMUX.PD0MODE = 0;//Test mux out0
IOCTRLA_SFRS->PDMUX.PD1MODE = 0;//Test mux out1
}
③读取信号成功啦。
参考资料:
编写M0单片机IIC协议主机控制EEPROM 24C08代码 - 纳米搜索
示波器分析I2C时序波形图_gd32 i2c示波器波形-CSDN博客
如何利用示波器解析I2C数据_怎么设置示波器抓取i2c波形-CSDN博客