forrestlam 发表于 2020-9-17 10:46:49

STM32 G474 I2C4初始化问题

请教各位大神,我刚刚开始学习STM32,使用的是STM32G474RE的测试板环境,I2C初始化还搞不太清楚。我使用LL的测试例子I2C_OneBoard_Communication_IT,I2C3初始化后可以正常使用。我把代码改成I2C4之后发现对应的PC6和PC7脚好像都没有初始化成功,现象是初始化后,PC6和PC7都一直是低(我已经配置了内部上拉),而同样的配置用在I2C3上,对应的PC8和PC9是能拉高的。请帮忙看看我是不是哪个地方的初始化不对?

/* (1) Enables GPIO clock and configures the I2C4 pins **********************/
/*    (SCL on PC.6, SDA on PC.7)                     **********************/

/* Enable the peripheral clock of GPIOC */
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOC);

/* Configure SCL Pin as : Alternate function, High Speed, Open drain, Pull up */
LL_GPIO_SetPinMode(GPIOC, LL_GPIO_PIN_6, LL_GPIO_MODE_ALTERNATE);
LL_GPIO_SetAFPin_8_15(GPIOC, LL_GPIO_PIN_6, LL_GPIO_AF_8);
LL_GPIO_SetPinSpeed(GPIOC, LL_GPIO_PIN_6, LL_GPIO_SPEED_FREQ_HIGH);
LL_GPIO_SetPinOutputType(GPIOC, LL_GPIO_PIN_6, LL_GPIO_OUTPUT_OPENDRAIN);
#if (EXTERNAL_PULL_UP_AVAILABLE == 0)
LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_6, LL_GPIO_PULL_UP);
#else
LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_6, LL_GPIO_PULL_NO);
#endif

/* Configure SDA Pin as : Alternate function, High Speed, Open drain, Pull up */
LL_GPIO_SetPinMode(GPIOC, LL_GPIO_PIN_7, LL_GPIO_MODE_ALTERNATE);
LL_GPIO_SetAFPin_8_15(GPIOC, LL_GPIO_PIN_7, LL_GPIO_AF_8);
LL_GPIO_SetPinSpeed(GPIOC, LL_GPIO_PIN_7, LL_GPIO_SPEED_FREQ_HIGH);
LL_GPIO_SetPinOutputType(GPIOC, LL_GPIO_PIN_7, LL_GPIO_OUTPUT_OPENDRAIN);
#if (EXTERNAL_PULL_UP_AVAILABLE == 0)
LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_7, LL_GPIO_PULL_UP);
#else
LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_7, LL_GPIO_PULL_NO);
#endif

/* (2) Enable the I2C4 peripheral clock *************************************/

/* Enable the peripheral clock for I2C4 */
LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_I2C4);

/* Set I2C4 clock source as SYSCLK */
LL_RCC_SetI2CClockSource(LL_RCC_I2C4_CLKSOURCE_SYSCLK);

/* (3) Configure NVIC for I2C4 **********************************************/

。。。

陌路夕颜 发表于 2020-9-18 09:48:05

虽然我没用过LL库,但是我觉得 LL_GPIO_SetAFPin_8_15(GPIOC, LL_GPIO_PIN_6, LL_GPIO_AF_8)这个函数是设置8到15引脚的,PC6 PC7你得用LL_GPIO_SetAFPin_0_7(GPIOC, LL_GPIO_PIN_6, LL_GPIO_AF_8)

qllonl 发表于 2020-9-22 19:56:28

陌路夕颜 发表于 2020-9-18 09:48
虽然我没用过LL库,但是我觉得 LL_GPIO_SetAFPin_8_15(GPIOC, LL_GPIO_PIN_6, LL_GPIO_AF_8)这个函数是设置 ...

多谢!这个地方没注意到:dizzy:
页: [1]
查看完整版本: STM32 G474 I2C4初始化问题