S32DS踩坑日记四-增加I2C

本文讲述了作者在添加ADC和LPUART后,尝试使用MCP7940NI2C接口的RTC进行调试过程中遇到的问题,包括初始化、发送数据卡死、波形异常以及地址设置错误。通过调整参数和对比示例解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

RTC采用的MCP7940N芯片,是I2C接口的。
先配置的引脚:
在这里插入图片描述
然后增加I2C的驱动:
在这里插入图片描述
在代码中增加初始化和发送测试的代码:
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后,示波器上也测量不到任何波形。

通过对比示例项目又修改了以下两处:
在这里插入图片描述
在这里插入图片描述
然后又重新编译了几次,为什么是几次,因为前两次不知道为什么不行,后面发现示波器有波形了。
在这里插入图片描述
波形不好看,示例工程中也是这样的,继续调试,
在这里插入图片描述
在这里插入图片描述
LPI2C_DRV_MasterSendDataBlocking函数的波形是这样(因为RTC地址设置的不对,所以没有应答)
在这里插入图片描述
LPI2C_DRV_MasterReceiveDataBlocking函数的波形是这样(因为RTC地址设置的不对,所以没有应答)
在这里插入图片描述
LPI2C_DRV_MasterSendDataBlocking对应写;
LPI2C_DRV_MasterReceiveDataBlocking对应读,应该是。
在这里插入图片描述
将速率调慢后,波形看着还可以了:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值