ST意法半导体
直播中

悬崖勒马2

8年用户 868经验值
擅长:EMC/EMI设计
私信 关注
[问答]

STM32G0 MCU是否可以使用同一个I2C外围设备同时用作主设备和从设备?

是否可以使用同一个 I2C 外围设备同时用作主设备和从设备?
我使用了一个 STM32G0 MCU 并使用了 CubeMX 的例子,我让外设 I2C2 分别作为一个从机和一个主机工作,我在从机模式中使用中断并为主机模式使用轮询。
我正在尝试将它结合起来并使其在两种模式下都能工作。这是我正在尝试的方式:
  • HAL_I2C_DisableListen_IT(&hi2c2);
  • result = HAL_I2C_Master_Receive(&hi2c2, (uint16_t) (0x69 << 1), rcvd_data, 3, HAL_MAX_DELAY);
  • adc_result = rcvd_data[0];
  • adc_result = (adc_result << 4) + rcvd_data[1];
  • HAL_I2C_EnableListen_IT(&hi2c2);
我的代码有时可以工作,但很快就会挂断并需要重置。我没有逻辑分析仪来研究行为。
我这样做对吗?有我可以效仿的例子吗?






回帖(1)

何微微

2022-12-13 13:52:46
> 你是说它一次只能扮演一个角色吗?在运行时不能切换角色吗?
可以在运行时根据需要进行切换。但是如果你在主模式下,当它的地址被调用时,slave 不会 ACK。而且您还会在同一条总线上有两个主机,这是不可取的。
> MCU 从新传感器(不同的外设地址)读取数据并将其呈现给旧地址的旧设备。
好的,关于您为什么需要此功能,这有点道理。但是你会在谈论另一个主人。STM32 可以支持多主机功能,但并非所有其他设备或固件都可以。
> 我是否最好选择带有两个 I2C 外设的 STM32 MCU 并将它们分别设置为主从?
是的,这肯定会让事情变得更简单,也更有可能成功。
举报

更多回帖

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