【官方原创】LAT1717 STM32N6 如何使用单个XSPI驱动双片相同HyperRAM

1. 引言

STM32N6是基于Arm Cortex-M55内核的高性能MCU,其内存架构与传统STM32系列有较大差异。片上集成了4.2MB的SRAM,分布在多个域以支持并行处理和低延迟访问。 虽然片上RAM容量较大,但在实际应用中,特别是在涉及机器学习推理、图像处理、音频处理或大容量数据缓冲的场景下,STM32N6片上RAM仍有可能无法满足需求。此时,外部PSRAM或HyperRAM就成了扩展内存容量的理想选择。本文将介绍使用单个XSPI 驱动双片相同的HyperRAM的方法。


2. 单XSPI接口驱动双片相同外部HyperRAM

++2.1. 硬件连接++

当应用需求超过单片外部HyperRAM的容量时,设计者自然会想到使用多片HyperRAM进行扩展。由于STM32N6的XSPI接口资源有限,每个XSPI控制器通常只能连接一个外部存储器设备。直接使用两个XSPI接口会占用更多引脚资源,而STM32N6的引脚资源本身就比较宝贵。14*14封装STM32N6有3个XSPI,但port只有两个,port1是16线接口,port2是8线接口。不同的封装具体资源配置不同,请读者以数据手册资源配置说明为准。

XSPI 连接外部存储器有多种模式:直接8线模式,直接16线模式,双8线模式,交换模式等,以及我们本文要介绍的单XSPI驱动双片相同存储器的模式。

下面我们以单XSPI1驱动两片相同的16线HyperRAM(单片128MBytes),并设置为内存映射模式为例进行详细说明。

接线方式上,双片16线HyperRAM需要使用 Port1。其中,P1_CLK、P1_NCLK、P1_DQS 以及 P1_IO0:15 由两片器件共用;P1_NCS1 连接 HyperRAM1,P1_NCS2 连接 HyperRAM2。请参考图 1。图中使用的是两片相同的 16 线 HyperRAM,因此需要用到 P1_IO0:15。如果使用双 8 线 HyperRAM/PSRAM,则仅需用到 P1_IO0:7,其余CLK、NCLK、DQS 和 NCS 的连接方式相同。

图1. STM32N6 单XSPI驱动双片相同的存储器

++2.2. XSPIM 设置++

配置时,一如既往可以使用STM32CubeMX进行快速设置。针对我们的用例,需要设置外设XSPI与XSPIM。XSPIM 的设置相对简单,如图 2 所示。这里将 XSPI1 映射到 Port1(16 线),将 XSPI2 映射到 Port2(8 线),并配置为直接模式。

图2. STM32N6 XSPIM设置

XSPIM_CR 寄存器的详细配置如下:

  • MUXEN = 0:禁用复用模式(无仲裁)

  • MODE = 0:直接模式(XSPI1连接端口1,XSPI2连接端口2)

  • CSSEL_OVR_EN = 0:使用XSPI自身的CSSEL控制位(默认)

++2.3. XSPI1 设置++

当两个大小相同的外部存储器(Extmem1 和 Extmem2)连接到同一个 I/O 端口,并在内存映射空间中连续排列、由单个 XSPI 驱动时,该 XSPI 会根据访问地址自动将 CS 切换到 Extmem1 或 Extmem2。为了实现该功能,首先使用STM32CubeMX对XSPI1进行设置,如下图3所示。

图3. STM32N6 XSPI1 设置

关键参数说明:

  • Memory Type : HyperBus(TM);
  • Memory Size : 1GBits, 对应 128MBytes,是单片 HyperRAM的容量。需要注意的是,当使用内存映射模式时,最大容量范围为256MBytes,本文使用了双片相同HyperRAM,单片为128MBytes,Memory Size按单片容量选择;
  • Clock Prescaler : 0,在代码中进行设置。
  • 其它参数根据实际情况进行设置即可。

++2.4. 软件配置++

如前所述,在内存映射模式下,外部存储器的地址空间是连续的,XSPI1 会根据访问地址自动切换片选,从而选择对应的HyperRAM。要实现XSPI1 自主控制两个芯片选择信号(NCS1 和 NCS2)的生成,需要在 XSPI_DCR1 中设置 EXTENDMEM 使能,从而允许将两个外部存储器连接到由 XSPI1 驱动的同一 I/O 端口。

EXTENDMEM 的作用是将可用外部存储器容量扩展为原来的两倍。两个存储器在内存映射中必须是连续的,且必须具有相同的类型和大小。下面是相应的初始化代码(基于生成的代码进行修改)。

使用时,可以分四步进行:

在 XSPI 初始化完成后,还需要通过发送命令完成设备端配置,例如设置HyperRAM工作参数、使能内存映射等常规操作。本文对此不再赘述,如有需要,可参考 STM32N6-DK 板使用外部存储器的示例源码,例如STM32N6-GettingStarted-ImageClassification工程,相关资料可从ST官网获取。


3. 小结

本文介绍了使用单XSPI 驱动双片相同HyperRAM的方法。XSPI 根据访问的内存地址,切换相应的CS 至 Extmem1 或 Extmem2。如果采用软件方式切换,则需要动态设置 XSPI_CR 寄存器中的 CSSEL 位,实现起来相对复杂。本文介绍了一种通过硬件方式自动切换CS的方法,其关键在于使能 XSPI_DCR1 寄存器中的 EXTENDMEM 位,可供有类似需求的用户参考。

点击下载《STM32N6 如何使用单个XSPI驱动双片相同HyperRAM》原文档。


重要通知 - 请仔细阅读

意法半导体公司及其子公司 ("ST")保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利

相关推荐
xiebs_8 小时前
【无标题】111
单片机
元器件BOM超人8 小时前
GD32E230C8T6 兆易创新Cortex-M23超值型MCU解析:规格参数、替代选型与常见问题
单片机·嵌入式硬件
LONGZHIQIN9 小时前
STM32学习笔记
笔记·stm32·学习·arm
StarsGreen9 小时前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
en.en..9 小时前
AFE:模拟前端,模拟世界通往 MCU 的信号桥梁
单片机·嵌入式硬件
小鳄鱼电气10 小时前
感应电机直接转矩控制传动(AC4 200 HP)仿真说明书
单片机·嵌入式硬件
Dev_XH1 天前
【成品设计】基于单片机的家用智能浇花系统的设计与实现
stm32·单片机·嵌入式硬件·物联网
木子单片机1 天前
基于单片机的直流电机调速系统设计
单片机·嵌入式硬件·51单片机·nosql·keil
Zwawa1 天前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式