你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 G474 I2C4初始化问题

[复制链接]
forrestlam 提问时间:2020-9-17 10:46 /
请教各位大神,我刚刚开始学习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 **********************************************/

。。。
收藏 评论2 发布时间:2020-9-17 10:46

举报

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)
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)这个函数是设置 ...

多谢!这个地方没注意到

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版