我收到 I2C0总线仲裁丢失错误。 在探测 SDA 线时发现它一直处于低电平。 即使执行下电上电也没有任何帮助。 查看了各种论坛、建议在其中切换配置为 GPIO 的 SCL 线路几次。 我的操作与下面列出的操作相同:-
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
MAP_GPIOPinTypeGPIOInput (GPIO_PORTB_BASE、GPIO_PIN_3);// I2C 数据
MAP_GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_2);// I2C 时钟
计数= 0;
while (MAP_GPIOPinRead (GPIO_PORTB_BASE、GPIO_PIN_3)=0){
MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_2、0);
//for (i=0;i<1000;i++);
SysCtlDelay (((120000000/(3 * 1000000))* 1);//等待1ms
MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_2、GPIO_PIN_2);
//for (i=0;i<1000;i++);
SysCtlDelay ((120000000/(3 * 1000))* 1);//等待1ms
count++;
if (count > 100)//max 100在放弃前切换、以确保我们不会在这里卡住
中断;
}
之后、我照常初始化 I2C 外设。
上述方法无法解决我的问题。 我甚至 按照别人的建议、将 I2CSDA 配置为开漏、即 MAP_GPIOPinTypeGPIOOutputOD (GPIO_PORTB_BASE、GPIO_PIN_2)、甚至这种配置也不起作用。 能否有人帮助我解决此问题?
谢谢
Sumeet Deo