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模块配置如下:

Mcl模块DMA配置如下:


Rm模块配置如下:

Spi模块配置如下:
channel部分


ExternalDevice部分

Job部分

Sequency部分

general和PhyUnit

代码如下:
#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);
}