i.MX RT 上 HyperRAM/PSRAM 的高级用法 1 引言
i.MX RT 系列单片机是恩智浦的跨界产品。i.MX RT 包含了一个 FlexSPI 控制器,该控制器支持 HyperBus 设备(HyperFlash/HyperRAM),串行 NORFlash 或者其他使用类似于 SPI 协议的设备等。How to Enable HyperRAM with i.MX RT(文档 AN12239)介绍了在 i.MX RT上使用 HyperRAM 的基础知识以及相关配置等。本应用笔记在此基础上,主要介绍 i.MX RT 上 HyperRAM/PSRAM 的一些高级用法,包括 FlexSPI 预取功能,HyperRAM 刷新间隔以及 i.MX RT 支持的 HyperRAM/PSRAM 设备等。本应用笔记选用 i.MX RT1050 以及 RT1170 作为示例,并测试了不同厂商的HyperRAM/PSRAM 设备。
2 FlexSPI 控制器
i.MX RT1050 上的 FlexSPI 控制器支持如下功能:
• 支持多种不同类型设备:
— Serial NOR/NAND Flash
— HyperBus 设备(HyperFlash/HyperRAM)
— FPGA 设备
• 支持的 Flash 访问模式:
— Single/Dual/Quad/Octal 模式
— SDR/DDR 模式
— Individual/Parallel 模式
• 通过 AHB 总线进行内存映射访问读写:
— AHB RX Buffer 用于减少读数据延迟,AHB RX Buffer 总大小: 128 × 64 Bits
— AHB RX Buffer 共有 4 个可灵活配置的 buffer
— AHB TX Buffer 用于缓存一个 AHB burst 中所有的写数据,AHB TX Buffer 总大小: 8 × 64 Bits
• 通过 IP 总线进行软件触发 flash 读/写访问:
— IP RX FIFO 用于缓存从外部设备读取的数据,FIFO 总大小: 16 × 64 Bits
— IP TX FIFO 用于缓存写到外部设备的数据,FIFO 总大小: 16 × 64 Bits
3 HyperBus 接口
FlexSPI 控制器可以支持 HyperBus 设备,HyperRAM 是使用 HyperBus 接口的设备之一。
HyperBus 支持 DDR 接口,可以实现高速率数据读写。命令、地址和数据通过 HyperBus 的 8 根数据线 DQ[7:0]进行传输。当
HyperBus 从设备接收命令、地址和数据时,时钟(CK#, CK)用于采样这些数据信息。
CS 信号拉低代表一次传输的开始,首先通过数据线传输 6 个 CA 字节(命令地址数据),接着传输初始访问延迟,最后读/写数据
会在数据线上进行传输,直到 CS 信号拉高为止。
图 1 是一个数据读取过程。
图 2 给出了写数据传输流程。
4 PSRAM 简介
本章简单介绍了在该应用笔记中使用的 PSRAM 设备的一些特性。
4.1 QSPI PSRAM
使用的其中一款 PSRAM 是 APS6404L-3SQR, 它是 apmemory 厂商的一种 QSPI PSRAM。
这款 PSRAM 设备拥 有 4 个 SDR (单数据速率)I/O 引脚 , 使用 SPI 或 QPI 接口,工作频率高达 133 MHz。该设备的数据输
入依靠时钟来锁存所有指令,地址和数据,适用于低功耗和低成本便携式应用。该设备拥有自我管理的刷新机制,因此无需主机
系统支持对 DRAM 的刷新。
SPI / QPI PSRAM 设备是字节寻址的。设备可以识别以下各种命令:
4.2 Octal SPI PSRAM
另一款使用的 PSRAM 设备是 APS12808L-OBM-BA, 它也是 apmemory 厂商的,是一种 Octal SPI PSRAM。
这款 PSRAM 设备拥有 8 个 DDR(双数据速率)I/O 引脚,每个时钟周期传输两个字节,使用 SPI 接口,工作频率高达 200 MHz。
Octal DDR PSRAM 设备也是通过字节寻址的。不过,对该设备内存空间的寻址必须从偶地址开始(地址最后一位时钟为 0)。模
式寄存器的寻址没有什么特殊要求。
该 PSRAM 设备可以识别在 A/DQ 引脚定义的指令周期上指定的以下命令:
5 高级用法
本章主要介绍在 i.MX RT 上使用 HyperRAM/PSRAM 的一些高级知识点,包括 FlexSPI 预取功能,HyperRAM 自刷新,以及 i.MX
RT 支持的 HyperRAM/PSRAM 设备等。
5.1 预取
FlexSPI 支持 AHB RX prefetch buffer,当从外部存储器读取数据时,该 buffer 用于预取数据并缓存,从而减少读数据访问延迟,
提高整体性能。
i.MX RT1050 将 AHB RX buffer 分为 4 个缓冲区。AHB RX buffer 总大小为 1K 字节,每个缓冲区大小通过寄存器域
AHBRXBUF0CR0[BUFSZ] - AHBRXBUF3CR0[BUFSZ]进行配置。
NXP Semiconductors
高级用法
i.MX RT 上 HyperRAM/PSRAM 的高级用法, 版本 2, 2021 年 11 月 29 日
应用笔记 4 / 11
FlexSPI 可以给不同的 master 分配不同的 AHB RX 缓冲区,通过配置寄存器域 AHBRXBUF0CR0[MSTRID] -
AHBRXBUF3CR0[MSTRID]将 AHB RX 缓冲区分配给特定的 master 使用。
一些 master 有特定的 master ID。如 表 1 所示,Core, eDMA 以及 DCP 这些 master 都有独立的 ID,其他 master 共用一个相同
的 ID。
表 1. Master IDs
通过配置寄存器域 AHBCR[PREFETCHEN]和 AHBRXBUFxCR0[PREFETCHEN]来控制 AHB 读预取功能的使能与否。只有当
AHBCR[PREFETCHEN]和 AHBRXBUFxCR0[PREFETCHEN]同时设置为 1 时,AHB 读预取功能才会使能。预取的数据大小由分
配给该 master 的 AHB RX 缓冲区的大小决定。
NXP Semiconductors
高级用法
i.MX RT 上 HyperRAM/PSRAM 的高级用法, 版本 2, 2021 年 11 月 29 日
应用笔记 5 / 11
接下来以 HyperRAM 为例介绍一下 AHB 预取的流程。当 AHB 预取使能时,一旦接收到总线的读命令,FlexSPI 首先确认需要读取
数据的地址是否在当前 AHB 缓冲区地址范围内。如果在,则直接返回相应地址的数据,如果不在,FlexSPI 会触发 对 HyperRAM
的读访问。当读取到相应的数据并返回给总线后,FlexSPI 会继续从 HyperRAM 中预取数据到 AHB RX 缓冲区,直到存满整个缓
冲区。新的 IP 或者 AHB 命令请求会打断当前正在进行的 AHB 读预取过程。
图 7 给出了读预取一般流程。
5.2 TCSH/TCSS 域
访问外部设备时,在片选(CS)信号和串行时钟(SCLK)信号之间,FlexSPI 需要遵循特定的时序要求。
对于 SDR 访问模式,CS 拉低到 SCLK 第一个上升沿之间需要至少(TCSS+0.5)个串行时钟周期,SCLK 最后一个下降沿到 CS拉高之间至少需要 TCSH 个串行时钟周期。图 8 给出了 SDR 模式下 CS 和 SCLK 之间的时序关系图。
对于 DDR 访问模式,CS 拉低到 SCLK 第一个上升沿之间需要至少(TCSS+0.5)个串行时钟周期,SCLK 最后一个下降沿到 CS拉高之间至少需要(TCSH+0.5)个串行时钟周期。图 9 给出了 DDR 模式下 CS 和 SCLK 之间的时序关系图。
想要查看详细内容,请参与下方回复:
|