i.MX RT系列中FlexSPI DQS信号引脚配置GPIO方法

描述

在i.MX RT060项目(采用QSPI Flash)的实际应用中,有客户反馈,其在设计阶段并未预留DQS信号引脚,而是将该引脚作为GPIO用于控制关键外设的开关,这导致程序无法正常运行。在此背景下,本文将以MIMXRT060-EVKB开发板为例,详细演示如何在不启用DQS引脚的情况下,通过修改代码确保开发板的正常运行。

通常情况下,为了提升存储器访问速度,i.MXRT系列产品采用QSPIFlash会建议使用DQS信号,设置悬空模式(loopbackfrom DQS pad mode).

然而,当DQS引脚被占用时,就需要采用一些特殊的处理方法。本文所介绍的方法即为在此种情况下的一种可行方案。

DQS信号简介

首先我们需要了解什么是DSQ信号, DQS信号是数据采样信号,用于确保数据在高速传输过程中的正确性和稳定性。通过提供数据同步与时序控制、提高数据传输可靠性以及支持高速数据传输等功能。在IMXRT060RM参考手册中可知RXclock source有以下三种配置:

1. Internaldummy read strobe and loopbacked internally(MCR0[RXCLKSRC]==0)

2. Internaldummy read strobe and loopbacked from DQS pad(MCR0[RXCLKSRC]==1)

3. Flashprovided read strobe(MCR0[RXCLKSRC]==3)

GPIO

其中设置Internaldummy read strobe and loopbacked Internally这个模式正是本文需要设置的,数据手册中描述了本模式下节省了一个DQS引脚。使用这个模式的设置限制条件在i.MX RT1060datasheet中有描述, 最大时钟频率是60MHz。

GPIO

二、硬件与软件准备

1. 硬件:MIMXRT060-EVKB开发板

2. 软件:NXPSDK(version24.12.0)Demo“evkbmimxrt1060_flash_component_nor_flexspi”

三、代码修改点

本文使用i.MX RT1060开发板验证,不使用FlexSPIDQS信号,并将DQS引脚设置成GPIO输出使用。

我们主要修改xip文件夹下的evkbmimxrt1060_flexspi_nor_config.c文件中readSampleClkSrc和serialClkFreq这两个设置。

GPIO

因导入的SDK例程关于演示如何使用NorFlash组件来擦除、编程和读取外部NorFlash设备。

因此我们还需要修改软件部分包括:

1. 设置N3引脚为GPIO输出

GPIO

2. 修改hardware_init.c文件中代码.flexspiRootClk= 60000000

GPIO

3.修改fsl_flexspi_nor_flash.c文件中代码为flexspiConfig.rxSampleClock=kFLEXSPI_ReadSampleClkLoopbackInternally

GPIO

4. 修改app.h文件中代码为CLOCK_SetDiv(kCLOCK_FlexspiDiv,4)

GPIO

此外,在main函数的最后添加相应代码。

GPIO

完成上述修改后,将工程烧写进开发板,使用万用表测量N3(FlexSPI_DQS)引脚电压,可观察到N3引脚周期拉高拉低。串口终端显示Nor Flash组件的擦除、编程和读取外部Nor Flash设备均成功,表明程序运行正常。

GPIO

总结

本文详细阐述了在 i.MX RT系列产品中使用外部QSPI Flash芯片且不使用DQS信号引脚的情况下,如何修改代码并进行验证的过程。在某些特定场景下,如DQS引脚被其他功能占用或存储器不需要高访问速度时,可参考本文介绍的方法修改代码,以确保工程正常运行。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分