主题中讨论的其他器件:UNIFLASH、 IWR1642、 IWR1443
我采用了测试代码并尝试以 CLI 命令的形式执行它。 这是我的代码。 它不会从 QSPIFlash_open 返回。 出什么问题了。 我是否需要设置编译器选项? 我按照 SWRA583的说明进行了操作。
#define TEST_DATA_LENGTH 4096U
uint8_t gTestDataArray[test_data_length];
/*系统 DMA 句柄,在初始化任务中创建*/
dma_handle gDmaHandle =空;
QSPI_Handle gQSPIDrv =(QSPI_Handle)空;
int32_t test_qspiflash (int32_t argc、char* argv[])
{
dma_params dmaParams;
int32_t RetVal = 0;
uint32_t flashAddr = 0U;
SPIFLASH_DevID DevID;
uint32_t 索引;
uint32_t testDataLen = 0U;
uint8_t* readDataArray;
QSPI_Params QSPIParams;
QSPIFlash_Handle QSPIFlashHandle =空;
uint32_t dmaChan = 10;
/
*测试:MCPI_Initialize
(二 /
/*设置 PINMUX 以显示 QSPI */
Pinmux_set_OverrideCtrl (SOC_XWR16XX_PINR12_PADAP、PINMUX_OUTEN_RETAK_HW_CTRL、PINMUX_INPEN_RETAGE_HW_CTRL);
Pinmux_Set_FuncSel (SOC_XWR16XX_PINR12_PADAP、SOC_XWR16XX_PINR12_PADAP_QSPI_CLK);
Pinmux_set_OverrideCtrl (SOC_XWR16XX_PINP11_PADQ、PINMUX_OUTEN_RETAK_HW_CTRL、PINMUX_INPEN_RETAK_HW_CTRL);
Pinmux_Set_FuncSel (SOC_XWR16XX_PINP11_PADAQ、SOC_XWR16XX_PINP11_PADAQSPI_CSn);
Pinmux_set_OverrideCtrl (SOC_XWR16XX_PINR13_PADAL、PINMUX_OUTEN_RETAK_HW_CTRL、PINMUX_INPEN_RETAK_HW_CTRL);
Pinmux_Set_FuncSel (SOC_XWR16XX_PINR13_PADAL、SOC_XWR16XX_PINR13_PADAL_QSPI_D0);
Pinmux_set_OverrideCtrl (SOC_XWR16XX_PINN12_Padam、PINMUX_OUTEN_RETAK_HW_CTRL、PINMUX_INPEN_RETAK_HW_CTRL);
Pinmux_Set_FuncSel (SOC_XWR16XX_PINN12_Padam、SOC_XWR16XX_PINN12_Padam_QSPI_D1);
Pinmux_set_OverrideCtrl (SOC_XWR16XX_PINR14_Padan、PINMUX_OUTEN_RETAK_HW_CTRL、PINMUX_INPEN_RETAK_HW_CTRL);
Pinmux_Set_FuncSel (SOC_XWR16XX_PINR14_Padan、SOC_XWR16XX_PINR14_Padan_QSPI_D2);
Pinmux_set_OverrideCtrl (SOC_XWR16XX_PINP12_PADAO、PINMUX_OUTEN_RETAK_HW_CTRL、PINMUX_INPEN_RETAK_HW_CTRL);
Pinmux_Set_FuncSel (SOC_XWR16XX_PINP12_PADAO、SOC_XWR16XX_PINP12_PADAO_QSPI_D3);
/*调试消息:*/
cli_write ("*********) \n");
cli_write ("Debug: QSPI Driver Test Application Start \n");
cli_write ("*********) \n");
/*初始化 QSPI 驱动程序*/
QSPI_INIT();
/*初始化 QSPI 闪存*/
QSPIFlash_init ();
/*打开 QSPI 驱动程序*/
QSPI_Params_init (&QSPIParams);
/*将 QSPI 外设时钟设置为200MHz */
QSPIParams.qspiClk = 200 * 1000000U;
QSPIParams.clkMode = QSPI_CLOCK_MODE_0;
以40MHz QSPI 比特率运行
* QSPI 位时钟速率源自 QSPI 外设时钟(qspiClk)
并在内部将时钟分频为位时钟速率
BitClockRate = qspiClk/除数(=5、由 QSPI 驱动器在内部设置)
*
QSPIParams.bitrate = 40 * 1000000U;
gQSPIDrv = QSPI_OPEN (&QSPIParams、RetVal);
if (gQSPIDrv ==空)
{
cli_write ("QSPI_open 失败、错误=%d\n"、RetVal);
转到出口;
}
/* Init SYSDMA 参数*/
dma_params_init (&dmaParams);
/*打开用于 SPI 测试的 DMA 驱动程序实例0 */
gDmaHandle = dma_open (0、&dmaParams、&RetVal);
if (gDmaHandle ==空)
{
cli_write("打开 DMA 驱动程序失败,返回 null \n");
返回-1;
}
readDataArray = Memory_alloc (NULL、test_data_length、64、NULL);
if (readDataArray ==空)
{
cli_write ("Test array allocation failed\n");
}
其他
{
cli_write ("Test array allocation -> 0x%x\n\n"、readDataArray);
}
/
*测试:打开 API 测试
(二 /
/*打开 QSPI 实例*/
QSPIFlashHandle = QSPIFlash_open (gQSPIDrv、RetVal);
if (QSPIFlashHandle ==空)
{
cli_write ("QSPIFlash Open returned null ");
转到出口;
}
其他
{
cli_write ("QSPIFlash Open API Passed ");
/*正常关机*/
QSPIFlash_Close (QSPIFlashHandle);
cli_write ("Debug: QSPIFlash instance has been closed successfully\n");
}