iMX RT FlexSPI 的DQS信号

DQS信号是数据采样信号,实际上就是“从器件”接收“主控器件”发送的SCK时钟信号后,返回给了“主控器件”,一般低速SPI通信使用SCK作为采样时钟即可,想要通信可靠,需要数据和SCK信号之间满足Setup和Hold时间的要求,如下图:

DQS信号就是源SCK信号经过“从器件” 的同步和线路上的延迟,与数据信号是基本同步的,因此“主控器件”使用DQS信号作为数据的采样信号,可以达到比较高的速度和采样正确率。

FlexSPI接口提供了三种DQS选项,参看前面一篇记录

iMX RT FlexSPI 时序及驱动程序参数设置解析 (一)   中 27.5.14.1 RX时钟源特性 段落。

第一种

内部虚拟读探测和内部环回流(MCR0 [RXCLKSRC = = 0) (kFLEXSPI_ReadSampleClkLoopbackInternally)

支持零设备输出保持时间的遗留设备;

节省一个引脚(DQS pad);

支持低频时钟开机使用。

这种模式不使用DQS信号,而是内部虚拟采样信号,就是软件延迟的方式,由于无法判断外部器件的延迟,为了减少通信误码率,这种方式只能在较低速度下工作,不支持高速信号。

第二种

内部虚拟读探测和环路从DQS引脚(MCR0[RXCLKSRC]==1)(kFLEXSPI_ReadSampleClkLoopbackFromDqsPad)

比上一种模式频率更高(133M);

支持不提供读选通脉冲的器件。

其实也是虚拟的DQS信号,只不过用到了硬件DQS引脚,可以在DQS引脚上加电容增加数据和时钟的时延。这种方式在高速时也不是很可靠,实际使用中通信频率也不高。

第三种

Flash提供读取选通脉冲信号(MCRO[RXCLKSRC]==3) (kFLEXSPI_ReadSampleClkExternalInputFromDqsPad)

支持最高频率(166M);

支持装置提供读取选通脉冲。

这种方式就是完全的DQS引脚由从期间控制,提供真实的采样脉冲信号。由于可以保证数据和采样信号同步,这种方式的工作频率也最高。

在调试FlexSPI和FPGA通信程序的过程种发现,RT芯片采到的第一个数据总是不对,但是用ILA(片内逻辑分析)抓到的波形却都是正常的,使用的是120M 8线 SDR的通信方式,抓到的波形如下:

在FPGA上对SCK信号和数据信号做延迟又比较麻烦,因此考虑有没有其他办法。后来想到此时使用的是第二种采样方式,手册的最高速度是66M,显然是超过规定值了。RT的程序中,将采样方式改为第三种就正常了。

猜你喜欢

转载自blog.csdn.net/catshit322/article/details/108605670
rt