S32K312 SPI+DMA AsyncTransmit

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

S32K312 SPI+DMA AsyncTransmit

Jump to solution
1,633 Views
ben_chin
Contributor I

Hello,

使用SPI读取外部Flash数据,由于数据量比较大,采用了SPI+DMA异步传输方式,创建了2个channel,第一个channel为flash的commander,一个4个字节,第二个channel为25600个字节,用于回读Flash的数据。DMA用了4个通道,ch0/ch1用于UART, ch2/ch3用于本配置的SPI,未使用本配置的SPI时,UART是可以正常发送的,配置了SPI后,UART和SPI均无法正常工作。

Platform模块配置如下:

ben_chin_10-1755146984231.png

 

 

Mcl模块DMA配置如下:

ben_chin_0-1755143805958.png

ben_chin_1-1755143849674.png

Rm模块配置如下:

ben_chin_2-1755143934882.png

 

Spi模块配置如下:

channel部分

ben_chin_3-1755146506318.pngben_chin_4-1755146530193.png

ExternalDevice部分

ben_chin_5-1755146568667.png

Job部分

ben_chin_6-1755146631080.png

 

Sequency部分

ben_chin_7-1755146685150.png

general和PhyUnit

ben_chin_9-1755146836334.png

代码如下:

 

#define SPI_START_SEC_VAR_INIT_UNSPECIFIED
#include "Spi_MemMap.h"
__attribute__(( aligned(32) )) uint8_t      nvmTxMsg[4] = {0};
__attribute__(( aligned(32) )) uint8_t      nvmRxMsg[NVM_DEV_NUM] = {0};
#define SPI_STOP_SEC_VAR_INIT_UNSPECIFIED
#include "Spi_MemMap.h"





void Nvm_hal_Init(void)
{
    /* Initialize the hardware abstraction layer for the device */
    //Spi_SetHWUnitAsyncMode(2,SPI_INTERRUPT_MODE);
    Spi_SetupEB(NVMCMD_SPI_CHANNEL, nvmTxMsg, NULL, 4);
    Spi_SetupEB(NVMDATA_SPI_CHANNEL, NULL, nvmRxMsg, NVM_DEV_NUM);
}

void Nvm_SpiTransfer(void)
{
    /* Perform SPI synchronous transmission */
    nvmTxMsg[0] = 0x03u;
    nvmTxMsg[1] = 0x00u;
    nvmTxMsg[2] = 0x00u;
    nvmTxMsg[3] = 0x00u;
    //Dio_WriteChannel(DioConf_DioChannel_SideMarkerEnableOut,0);
    Spi_AsyncTransmit(NVM_SPI_SEQUENCE);  

}
uint32_t nvm;
void NvmSpi_Callback(void)
{
nvm++;
//Dio_WriteChannel(DioConf_DioChannel_SideMarkerEnableOut,1);
}

 

0 Kudos
Reply
1 Solution
1,596 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@ben_chin

附件是我之前做的一些demo,分别是SPI+DMA以及Uart+DMA,两个demo的RTD版本分别是RTD 5.0.0和RTD 4.0.0,请你参考这两个demo进行对比修改。

 

View solution in original post

0 Kudos
Reply
2 Replies
1,597 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@ben_chin

附件是我之前做的一些demo,分别是SPI+DMA以及Uart+DMA,两个demo的RTD版本分别是RTD 5.0.0和RTD 4.0.0,请你参考这两个demo进行对比修改。

 

0 Kudos
Reply
1,583 Views
ben_chin
Contributor I

已解决,谢谢!

Tags (1)
0 Kudos
Reply