IWR6843: QSPI_open(&QSPIParams, &errCode)失败

Part Number: IWR6843

使用QSPI模块,初始化时,QSPI_open(&QSPIParams, &errCode)失败

int32_t qspiflash(uint8_t type)
{
int32_t errCode=0;
QSPI_Params QSPIParams;
QSPIFlash_Handle QSPIFlashHandle = NULL;
SPIFLASH_devID devId;
QSPI_Handle gQSPIDrv = (QSPI_Handle)NULL;
uint32_t flashAddr = 0U;
DMA_Handle gDmaHandle = NULL;
DMA_Params dmaParams;
int32_t retVal = 0;
uint8_t* readDataArray;

/* Setup the PINMUX to bring out the QSPI */
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINR12_PADAP,
PINMUX_OUTEN_RETAIN_HW_CTRL,
PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINR12_PADAP, SOC_XWR68XX_PINR12_PADAP_QSPI_CLK);
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINP11_PADAQ,
PINMUX_OUTEN_RETAIN_HW_CTRL,
PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINP11_PADAQ, SOC_XWR68XX_PINP11_PADAQ_QSPI_CSN);
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINR13_PADAL,
PINMUX_OUTEN_RETAIN_HW_CTRL,
PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINR13_PADAL, SOC_XWR68XX_PINR13_PADAL_QSPI_D0);
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINN12_PADAM,
PINMUX_OUTEN_RETAIN_HW_CTRL,
PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINN12_PADAM, SOC_XWR68XX_PINN12_PADAM_QSPI_D1);
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINR14_PADAN,
PINMUX_OUTEN_RETAIN_HW_CTRL,
PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINR14_PADAN, SOC_XWR68XX_PINR14_PADAN_QSPI_D2);
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINP12_PADAO,
PINMUX_OUTEN_RETAIN_HW_CTRL,
PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINP12_PADAO, SOC_XWR68XX_PINP12_PADAO_QSPI_D3);
/* Initialize the QSPI Driver */
QSPI_init();
/* Initialize the QSPI Flash */
QSPIFlash_init();
/* Open QSPI driver */
QSPI_Params_init(&QSPIParams);
/* Set the QSPI peripheral clock to 200MHz */
QSPIParams.qspiClk = 80 * 1000000U;
QSPIParams.clkMode = QSPI_CLOCK_MODE_0;
/* Running at 40MHz QSPI bit rate
* QSPI bit clock rate derives from QSPI peripheral clock(qspiClk)
and divide clock internally down to bit clock rate BitClockRate
= qspiClk/divisor(=5, setup by QSPI driver internally) */
QSPIParams.bitRate = 80 * 1000000U;
gQSPIDrv = QSPI_open(&QSPIParams, &errCode);
if (gQSPIDrv == NULL)
{
System_printf("Error: Unable to open the QSPI Instance\n");
CLI_write("QSPI\n");
// UART_write (gMmwMssMCB.commandUartHandle,(uint8_t*)1,1);
return (0);
}

/* Init SYSDMA params */
DMA_Params_init(&dmaParams);

/* Open DMA driver instance 0 for SPI test */
gDmaHandle = DMA_open(0, &dmaParams, &retVal);

if(gDmaHandle == NULL)
{
// CLI_write("Open DMA driver failed returned null\n");
// UART_write (gMmwMssMCB.commandUartHandle,(uint8_t*)2,1);
CLI_write("DMA\n");
return -1;
}

readDataArray = Memory_alloc (NULL, TEST_DATA_LENGTH, 64, NULL);

QSPIFlashHandle = QSPIFlash_open(gQSPIDrv, &errCode);
if (QSPIFlashHandle == NULL)
{
System_printf("Error: Unable to open the QSPIflash Instance\n");
CLI_write("QSPIflash\n");
// UART_write (gMmwMssMCB.commandUartHandle,(uint8_t*)3,1);
return (0);
}

QSPIFlash_getDeviceID(QSPIFlashHandle, &devId);//获取flash设备信息
flashAddr = QSPIFlash_getExtFlashAddr(QSPIFlashHandle);//获取外部闪存地址
CLI_write("%d\n",flashAddr);
return (1);
}