S32DS踩坑日记四-增加I2C

添加采集温度的ADC之后,又增加了两个LPUART。之后又打算先尝试着把RTC调试出来,然后就遇到莫名奇妙的问题了。

RTC采用的MCP7940N芯片,是I2C接口的。
先配置的引脚:
S32DS踩坑日记四-增加I2C_第1张图片
然后增加I2C的驱动:
S32DS踩坑日记四-增加I2C_第2张图片
在代码中增加初始化和发送测试的代码:
LPI2C_DRV_MasterInit(INST_LPI2C1, &lpi2c1_MasterConfig0,&lpi2c1MasterState);

uint8_t buffer[] = {0x01 , 0x02 , 0x03};
while(1)
{
LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, buffer, 3, true, OSIF_WAIT_FOREVER);
}

然后,就J-LINK调试就卡在了发送函数那里出不来。将超时改为100后,示波器上也测量不到任何波形。

通过对比示例项目又修改了以下两处:
S32DS踩坑日记四-增加I2C_第3张图片
S32DS踩坑日记四-增加I2C_第4张图片
然后又重新编译了几次,为什么是几次,因为前两次不知道为什么不行,后面发现示波器有波形了。
S32DS踩坑日记四-增加I2C_第5张图片
波形不好看,示例工程中也是这样的,继续调试,
S32DS踩坑日记四-增加I2C_第6张图片
S32DS踩坑日记四-增加I2C_第7张图片
LPI2C_DRV_MasterSendDataBlocking函数的波形是这样(因为RTC地址设置的不对,所以没有应答)
S32DS踩坑日记四-增加I2C_第8张图片
LPI2C_DRV_MasterReceiveDataBlocking函数的波形是这样(因为RTC地址设置的不对,所以没有应答)
S32DS踩坑日记四-增加I2C_第9张图片
LPI2C_DRV_MasterSendDataBlocking对应写;
LPI2C_DRV_MasterReceiveDataBlocking对应读,应该是。
S32DS踩坑日记四-增加I2C_第10张图片
将速率调慢后,波形看着还可以了:
S32DS踩坑日记四-增加I2C_第11张图片

你可能感兴趣的:(单片机)