搜索
查看: 876|回复: 2

[已解决] STM32 G474 I2C4初始化问题

[复制链接]

该用户从未签到

1

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
2020-9-25
发表于 2020-9-17 10:46:49 | 显示全部楼层 |阅读模式
请教各位大神,我刚刚开始学习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 **********************************************/

。。。
回复

使用道具 举报

该用户从未签到

0

主题

587

帖子

82

蝴蝶豆

金牌会员

最后登录
2024-1-2
发表于 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)
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
2020-10-9
发表于 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)这个函数是设置 ...

多谢!这个地方没注意到
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-20 03:32 , Processed in 0.173011 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表