Other Parts Discussed in Thread: CC3200MOD
尽管我努力并研究了 CC3200MOD 模块的问题、但通过 I2C 通信仍然存在问题。 I2C 驱动器卡在 i2c_if.c 源文件的第115-118行(代码如下所示)。
while ((map_I2CMasterIntStatusEx (I2C_base、false)
&(I2C_INT_MASTER | I2C_MRI_CLKTOUT)= 0)
{
}
I2C 外设一直在等待主中断、但从未发生过。
根据之前论坛帖子(此处链接)的回复(实际上从未正式解决)、我尝试使用 1.1.0 SDK 发行说明 (从第41页开始)中提供的建议来模拟 I2C 以消除问题。 下面显示了手动生成的 I2C 仿真的波形、该波形用于尝试解决卡住的问题。
在模拟 I2C 后、我仍然从 I2C 外设获得相同的波形、并且我永远不会通过 I2CTransact 函数调用中列出的上面的环路。 该波形如下所示:
此外、我加载了在首次将定制板上的 I2C 线路连接到 CC3200MOD LaunchPad 上的 I2C 线路后运行的相同 I2C 演示 sketch。 当我在 LaunchPad 上加载 sketch 时、sketch 工作正常。 我能够成功地通过 I2C 读取和写入电路板上的传感器。 然后、我重新尝试了定制板上的相同 sketch、再次强调、它卡在相同的位置。 我必须对 sketch 进行的唯一更改是 pinmux 配置。
在我的定制板上、SCL 引脚与模式 PIN_MODE_5复用为 PIN_05。 SDA 引脚与 LP 上的相同、通过模式 PIN_MODE_1复用为 PIN_02。
下面是我要加载到 LP 和自定义 PCB 上的 sketch 的主要入口点:
int main (void) { //电路板初始化 BoardInit(); MAP_PRCMPeripheralClkEnable (PRCM_GPIOA1、PRCM_RUN_MODE_CLK); MAP_PRCMPeripheralClkEnable (PRCM_I2CA0、PRCM_RUN_MODE_CLK); //为 I2C0 I2C_SCL 配置 PIN_05 (定制 PCB) MAP_PinTypeI2C (PIN_05、PIN_MODE_5); //为 I2C0 I2C_SDA 配置 PIN_02 (定制 PCB) MAP_PinTypeI2C (PIN_02、PIN_MODE_1); //为 I2C0 I2C_SCL (LaunchPad)配置 PIN_01 // MAP_PinTypeI2C (PIN_01、PIN_MODE_1); // //////为 I2C0 I2C_SDA (LaunchPad)配置 PIN_02 // MAP_PinTypeI2C (PIN_02、PIN_MODE_1); I2C_IF_Open (I2C_MASTER_MODE_FST); I2CEmulation(); uint16_t hdcdev_id = GetHDC1080ManufacturerID (); uint16_t optdev_id = GetOPT3001DeviceID (); I2C_IF_CLOSE (); int i = 0; while (1) { i = i + 1; } 返回0; }
引导加载程序和芯片组在 LP 和定制 PCB 之间具有相同的版本。
INFO:> Bootloader version:2.1.4.0 INFO:>芯片组 version:16.
有人有什么想法吗? 我已经完全耗尽了我所知道的一切...

