你好,
我正在使用NXP S32K396 MCU ,并且希望在不启用任何中断的情况下使用 eDMA 执行 LPI2C 主站事务。在我的项目中,我使用了LPI2C1外设。
当启用以下中断时,我可以使用 DMA 成功执行 LPI2C 读写事务:
在 Lpi2c_Ip_MasterSendData() 函数中,LPI2C 主中断始终由驱动程序启用:
此外,通过 Lpi2c_Ip_MasterTxDmaConfig() 和 Lpi2c_Ip_MasterRxDmaConfig() 配置的 TX 和 RX 的 DMA TCD 始终启用 DMA 主循环完成中断:
Lpi2c_DmaTransferList[9u] .Param = DMA_IP_CH_SET_CONTROL_EN_MAJOR_INTERRUPT ;
Lpi2c_DmaTransferList[9u] .Value = 1U;
我还注意到,在其他函数中 - Lpi2c_Ip_MasterSendDataBlocking() 似乎没有为 LPI2C 传输配置 DMA TCD。
MCU:NXPS32K396
RTD:6.0.0
NXP Studio:3.6.1
非常感谢您的帮助。非常感谢!
如有需要,我可以附上我的项目文件。
你好@ rkhw
从当前的驱动程序实现来看,“Lpi2c_Ip_MasterSendData()”依赖于LPI2C主中断和DMA主循环完成中断来进行传输完成和状态处理。
因此,如果不启用中断,就无法启用 DMA。RTD驱动程序不支持此用法。