2394522_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2394522_zh-CN

2394522_zh-CN

如何在不启用任何中断的情况下将 LPI2C 外设与 DMA 配合使用?

你好,

我正在使用NXP S32K396 MCU ,并且希望在不启用任何中断的情况下使用 eDMA 执行 LPI2C 主站事务。在我的项目中,我使用了LPI2C1外设

当启用以下中断时,我可以使用 DMA 成功执行 LPI2C 读写事务:

  • LPI2C1_IRQn
  • eDMA0_DMATTCD_CH16_CH17_IRQn

rkhw_0-1783969062532.png

然而,RTD LPI2C DMA 实现似乎依赖于这些中断。

在 Lpi2c_Ip_MasterSendData() 函数中,LPI2C 主中断始终由驱动程序启用:

rkhw_1-1783969133234.png

此外,通过 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。

我希望使用 DMA 执行完整的 LPI2C 发送和接收事务,同时禁用 LPI2C1_IRQn 和 eDMA 通道中断。
 
如果可以的话,NXP能否提供一个使用DMA的LPI2C主控端TX/RX示例,其中LPI2C和DMA中断均被禁用
 

MCU:NXPS32K396

RTD:6.0.0

NXP Studio:3.6.1

 

非常感谢您的帮助。非常感谢!

如有需要,我可以附上我的项目文件。

Re: How to use LPI2C peripheral with DMA without enabling any interrupts?

你好@ rkhw

从当前的驱动程序实现来看,“Lpi2c_Ip_MasterSendData()”依赖于LPI2C主中断和DMA主循环完成中断来进行传输完成和状态处理。

因此,如果不启用中断,就无法启用 DMA。RTD驱动程序不支持此用法。

Tags (1)
No ratings
Version history
Last update:
Tuesday
Updated by: