是否可以使用同一个 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);
我的代码有时可以工作,但很快就会挂断并需要重置。我没有逻辑分析仪来研究行为。
我这样做对吗?有我可以效仿的例子吗?