ST意法半导体
直播中

从未拥有

9年用户 977经验值
擅长:可编程逻辑 电源/新能源 光电显示
私信 关注
[问答]

为什么当管脚映射不同时I2C会起作用呢

我正在使用 STM32G061K6T(当时我只能在库存中找到的 MCU)并且我尝试通过 I2C 与 EEPROM 进行通信
我将 SCL 和 SDA 映射到 PA9 和 PA10,分别使用 3K3 上拉电阻。SDA 引脚被拉高并保持高电平,但是当 MCU 处于复位状态时 SCL 为高电平,但随后被拉低,我不知道为什么。连接 EEPROM 时会发生这种情况。
我已将 SCL 和 SDA 映射到 PB6 和 PB7,这有效,我可以与 EEPROM 通信。
我的问题是:
为什么当管脚映射不同时它会起作用——我是不是在数据表中遗漏了什么?
为什么当 MCU 唤醒时引脚被拉低,尽管有 3K3 上拉。


  

回帖(1)

余少虹

2022-12-14 10:36:57
如果 CubeMX 自动生成代码,那么您需要添加“GPIO_InitStruct.Alternate = GPIO_AF6_I2C1;” 到“HAL_I2C_MspInit”函数中的 GPIO 引脚结构定义。这是因为如果您使用 PA9 和 PA10 作为 i2c1 外设引脚而不是默认引脚 PB6 和 PB7,CubeMX 不会将替代函数定义添加到映射引脚的结构中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分