Board logo

标题: QSPI 线性模式例子只能运行一次,设置为IO模式可以反复运 [打印本页]

作者: pengpengpang    时间: 2014-9-11 17:26     标题: QSPI 线性模式例子只能运行一次,设置为IO模式可以反复运

QSPI 线性模式例子只能运行一次,设置为IO模式可以反复运行14.4带有一个QSPI工作在线性模式的例子,xqspips_flash_lqspi_example.c。它先假设QSPI工作在IO模式,读取QSPI的ID,再向QSPI写入数据,然后设置QSPI工作在线性模式,读取数据,并和写入的数据做校验。第一次运行正常。 如果单板不下电,第二次运行时,QSPI还工作在线性模式,读取ID的操作就不能完成,一直在循环,测试就会失败。 为了让QSPI测试程序可以多次运行,最好在程序结束前,重新设置其工作模式。设置工作模式的代码是:XQspiPs_SetOptions(QspiInstancePtr, XQSPIPS_FORCE_SSELECT_OPTION |XQSPIPS_MANUAL_START_OPTION |XQSPIPS_HOLD_B_DRIVE_OPTION );u32Option = XQspiPs_GetOptions( QspiInstancePtr );xil_printf("QSPI option: 0x%x before exit.\n\r", u32Option );ControlReg = XQspiPs_ReadReg(QspiInstancePtr->Config.BaseAddress,XQSPIPS_CR_OFFSET);LinearControlReg = XQspiPs_ReadReg(QspiInstancePtr->Config.BaseAddress,XQSPIPS_LQSPI_CR_OFFSET);xil_printf("ControlReg: 0x%08x, LinearControlReg: 0x%08x, .\r\n", ControlReg, LinearControlReg); 或者在进入测试时,检查QSPI的工作模式。如果没有工作在IO模式,则强制设置成IO模式。代码如下:ControlReg = XQspiPs_ReadReg(QspiInstancePtr->Config.BaseAddress,XQSPIPS_CR_OFFSET);LinearControlReg = XQspiPs_ReadReg(QspiInstancePtr->Config.BaseAddress,XQSPIPS_LQSPI_CR_OFFSET);xil_printf("ControlReg: 0x%08x, LinearControlReg: 0x%08x, .\r\n", ControlReg, LinearControlReg);if ((LinearControlReg & XQSPIPS_LQSPI_CR_LINEAR_MASK) != 0) {xil_printf("QSPI works as linear mode before.\r\n");LinearControlReg &= 0x7fffffff;XQspiPs_WriteReg(QspiInstancePtr->Config.BaseAddress,XQSPIPS_LQSPI_CR_OFFSET, LinearControlReg);}  




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0