我希望使用 PDL 将 S25FL512SAGMFI010 闪存 IC 初始化并使用到 XIP 模式,供 QSPI 在 CY8C6145 MCU 上使用。
我对如何做到这一点的理解是 main 中的这段代码:
cy_stc_sysint_t smifIntConfig = { #if (CY_CPU_CORTEX_M0P) NvicMux7_IRQn, SMIF_INTERRUPT, #else SMIF_INTERRUPT, // SMIF interrupt number (non M0 core) #endif SMIF_PRIORITY }; (void) Cy_SysInt_Init( smifIntConfig, SMIF_Interrupt_User); __enable_irq();#if (__CORTEX_M == 0) NVIC_EnableIRQ(NvicMux7_IRQn);#else NVIC_EnableIRQ(SMIF_INTERRUPT);#endif /* SMIF ini
tialization */ volatile cy_en_smif_status_t stat; stat = Cy_SMIF_Init(SMIF0, smif_0_config, TIMEOUT_1_S, smifText); //Cy_SMIF_Enable(SMIF0, smifText); Cy_SMIF_MemInit(SMIF0, smifBlockConfig, smifText); //set xip mode Cy_SMIF_SetMode(SMIF0, CY_SMIF_MEMORY); Cy_SMIF_Enable(SMIF0, (cy_stc_smif_context_t *) smifText);中断函数的定义完全符合
PDL 文档中的描述,而 SmifText 是全局定义的。
但是有了这个初始化代码,我无法成功地使用这样的代码读取数据:
uint8_t *smif = (uint8_t*)0x18000000;volatile uint8_t temp;smif[1000] = 0xAA;temp = smif[1000];它始终读取 0xFF。
值得注意的是,尽管我没有分析那里有哪些数据,但所有QSPI引脚均输出用于读取和写入。 此外,这是我的示意图:
在这个初始化过程中我遗漏了什么?