Hello,
I am working with an NXP S32K396 MCU and would like to perform an LPI2C master transaction using eDMA without enabling any interrupts. In my project, I am using the LPI2C1 peripheral.
I can successfully perform LPI2C read and write transactions using DMA when the following interrupts are enabled:
In Lpi2c_Ip_MasterSendData(), the LPI2C master interrupts are always enabled by the driver:
In addition, the DMA TCDs configured for TX and RX by Lpi2c_Ip_MasterTxDmaConfig() and Lpi2c_Ip_MasterRxDmaConfig() always enable the DMA major-loop completion interrupt:
Lpi2c_DmaTransferList[9u].Param = DMA_IP_CH_SET_CONTROL_EN_MAJOR_INTERRUPT;
Lpi2c_DmaTransferList[9u].Value = 1U;
I also noticed that in other function - Lpi2c_Ip_MasterSendDataBlocking() does not appear to configure a DMA TCD for the LPI2C transfer.
MCU: NXPS32K396
RTD: 6.0.0
NXP Studio: 3.6.1
Any help would be greatly appreciated. Thanks a lot in advance!
If needed, I can attach my project.
Hi@rkhw
From the current driver implementation, the “Lpi2c_Ip_MasterSendData()” depend on both LPI2C master interrupts and DMA major-loop completion interrupts for transfer completion and state handling.
Therefore, you cannot enable DMA without enabling interrupts. The RTD driver does not support this usage.