Thread 中讨论的其他器件:SysConfig
在努力解决和克服一系列 CPU 错误后、我们认为我们终于解决了与 I2C 从设备外设相关的所有问题。
现在出现了一个新问题:当 CC3235被唤醒并且正在进行传输(我们有一个 I2C 显示屏需要~30ms 更新)时、出于某种原因、它似乎通过拉低 SDA 线路来破坏传输。
在我们的设置中、我们不使用 SysConfig 初始化对应于 SDA 和 SCL 的引脚(它们保留为输入 HIGHZ)、I2C 外设初始化后、我使用 MAP_PinTypeI2C 将引脚分配给 I2C 外设。
此时、我使用专用 GPIO、该 GPIO 在我们处于唤醒状态时配置了上拉电阻、在睡眠期间可看到下拉电阻->睡眠进入/退出。
问题是、当 WiFi 芯片唤醒主设备和 LCD 之间的 I2C 通信时、偶尔(也很少)会受到干扰。
下面是400s 的记录、其中包含一个测试软件、用于强调 LCD 更新、CC3235除了由 NWP 精心编排的通信外、不处理任何其他通信:

放大有问题的部分

使用示波器检查信号后发现无硬件问题。
当我保持 WiFi 处于唤醒状态(禁用睡眠策略)时、错误永远不会发生。
当我启用睡眠模式但未在 postNotify 回调中初始化 I2C 时、永远不会发生错误。
因此、在这种状态下、我们将问题缩小到仅作为 CC3235问题、并与唤醒时的 I2C 初始化相关。
请注意、当我们唤醒时、我们不会启动传输、也不会期望接收到传输。
我们只是将 I2C 初始化为从器件(清空 FIFO、复位 DMA 等)。
现在、这对我们来说是一个障碍。 我们在该器件和 I2C 从器件上遇到了很多问题、这是我们最后一次尝试使用该器件。
是否有人可以向我们指出正确的方向、说明如何将 I2C 从设备与 GPIO 一起正确初始化?
或者、在这种情况下、在唤醒期间会发生什么可能的错误?