请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PGE 您好!
我们在 TM4C123GH6PGE 上使用 I2C5时遇到一些问题。 当引脚配置为 I2C 时、SDA 线被拉低、随后保持低电平... 从而导致总线始终处于繁忙状态。 我们已将相同的 Tiva 器件与其他 I2C 外设成功配合使用、而且我们以前从未见过这个问题。 I2C5 (与 I2C0..4相比)是否存在我缺失的怪异情况? 或特定于 GPIOG_7的内容?
这是 TivaWare 代码中的引脚配置序列:
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C5); //Enable I2C5
while( !SysCtlPeripheralReady(SYSCTL_PERIPH_I2C5)){ //Wait until peripheral Ready
}
SysCtlPeripheralReset(SYSCTL_PERIPH_I2C5); //Reset I2C0 Peripheral
GPIOPinConfigure( GPIO_PCTL_PG6_I2C5SCL ); //I2C 5
GPIOPinConfigure( GPIO_PCTL_PG7_I2C5SDA );
GPIOPinTypeI2CSCL( GPIO_PORTG_BASE, GPIO_PIN_6 );
I2CMasterGlitchFilterConfigSet( I2C5_BASE, I2C_MASTER_GLITCH_FILTER_16 );
// Configure SDA
GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_7, GPIO_DIR_MODE_HW); // Make the pin(s) be peripheral controlled.
GPIOPadConfigSet(GPIO_PORTG_BASE, GPIO_PIN_7 , GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_OD); // Set the pad(s) for open-drain operation with a weak pull-up.
//SDA Line pulled low after GPIOPadConfigSet!
I2C_WaitBusy(I2C5_BASE);
非常感谢、
Tom