使用SPI XiP Flash扩展微控制器程序存储器的原因和方法

随着微控制器应用变得越来越复杂,开发人员正在为应用固件使用更多的Flash程序存储器 对于开始执行相对复杂的边缘计算的物联网(IoT)端点尤其如此。但是,有时应用程序可以扩展到需要外部程序存储器的程度,此时开发人员需要在并行或串行Flash之间进行选择。
添加外部并行闪存芯片会占用I / O线,增加了复杂性,并占用了额外的电路板空间。本文将介绍如何通过添加Adesto Technologies的外部串行闪存芯片来扩展微控制器的闪存程序存储器,该芯片 支持SPI eXecute in Place(XiP)接口。它还将解释XiP Flash如何映射到Microchip Technology微控制器的存储空间,以便代码执行对固件几乎是透明的。

外部内存扩展的原因

在可能的情况下,开发人员应该通过选择具有更多内存的引脚兼容设备路线图的微控制器来开始应用程序开发。如果在开发期间应用程序固件扩展到超过目标器件上的闪存,则在开发期间可以轻松替换具有更多Flash的引脚兼容器件。这样就可以扩展应用程序内存,而无需为不同的微控制器重新设计印刷电路板。
但是,对于引脚兼容的微控制器系列,应用程序可能需要比片上可用的程序存储器更多的程序存储器,这需要使用片外闪存。这种现象越来越普遍,并且可能由于多种原因而发生,包括:
  • 系统范围可以在开发阶段扩展到其初始概念。这可能是由于应用程序的最后一刻更改,功能蠕变或无法准确预测应用程序的内存需求。选项是使用具有更多闪存程序存储器的引脚兼容微控制器进行升级,或者添加额外的外部闪存程序存储器,如果开发已经进行,可以延迟项目。
  • 现有的固件升级可能需要比系统板中已有的微控制器更多的闪存程序存储器。在这种情况下,选项是有限的:要么将字段中的系统替换为包含更多闪存程序存储器的系统,要么取消升级。
  • 系统产品系列开发可能需要一种新产品,该产品需要比引脚兼容的微控制器系列更多的闪存程序存储器。选项是使用新的微控制器系列重新设计系统或添加外部闪存程序存储器。
显然,对于开发人员来说,预测此内存扩展的当前和未来系统的需求并为此进行规划是很重要的。如果项目有可能需要外部闪存程序存储器,开发人员应该为将来扩展印刷电路板奠定基础。虽然闪存芯片不需要安装在电路板上,但最好是安全并且已经布置了空间。
扩展闪存程序存储器的传统方法是使用具有地址和数据线的并行闪存接口。然而,即使最有效地使用不牺牲速度的并行闪存也可以使用16位地址,16位数据和四个或更多控制信号。这需要36个或更多微控制器引脚。
随着微控制器资源的低效使用,这将微控制器选择限制为具有外部总线的设备,这增加了微控制器的引脚数。外部并行总线也消耗大量的印刷电路板空间,而高速地址和数据总线增加了电磁干扰(EMI)的可能性。

SPI XiP代码执行

更有效的选择是使用支持SPI XiP接口的外部闪存程序存储器件。SPI XiP接口只能使用6个引脚连接主机微控制器。与传统的SPI接口不同,外部闪存器件上的存储器不能通过SPI固件驱动程序直接访问,而是映射到微控制器的程序存储器中。
设计用于使用SPI XiP接口进行接口的串行闪存器件的一个很好的例子是Adesto Technologies 的AT25SL321-UUE-T(图1)。这是一个32兆位(Mbit)闪存,支持单,双和四SPI模式。它支持104兆赫(MHz)的SPI时钟,在双SPI模式下提供266 MHz的等效时钟速率,在四SPI模式下,等效时钟速率为532 MHz。
站在AT25SL321的闪存图像
图1:Adesto AT25SL321是一个32 Mbit闪存,支持单,双和四SPI模式。它采用8引脚SOIC,DFN8或TSSOP8封装,提供32 Mbits闪存。(图片来源:Adesto Technologies)
除32 Mbits闪存外,该器件还具有状态寄存器来配置器件。从状态寄存器读取可以告诉固件设备是否正在进行写入或擦除操作。写入状态寄存器允许对闪存块进行写保护。
Adesto AT25SL321还具有4千位(Kbits)的一次性可编程(OTP)存储器,可用于存储安全信息,例如唯一的序列号。它采用8引脚SOIC,DFN8或TSSOP8封装。
与所有支持SPI XiP的串行存储器件一样,Adesto AT25SL321使用特定于Adesto器件的指令集进行配置。指令集由38个命令组成,主控单元用于控制串行闪存。主机微控制器上的SPI XiP外设将包括一个可编程状态机,在微控制器上电时使用目标串行闪存的指令集进行初始化。初始化后,SPI外设的操作对于存储器映射SPI XiP区域中的固件执行代码是透明的。
例如,如果主机微控制器固件从存储器映射区域读取数据,则使用Adesto指令集配置的SPI XiP向Adesto串行存储器发送读取数据指令代码,后跟24位字节地址。然后,Adesto串行存储器一次一个字节地将存储器内容发送到主机微控制器。对于固件,这显示为从内存中的正常读取。
除了SPI时钟,数据和片选引脚外,Adesto AT25SL321还有两个额外的引脚,用于增强系统内功能。WP \是一个低电平有效写保护引脚,可防止写入状态寄存器以写保护代码块。微控制器可以使用此引脚来防止低优先级任务进行未经授权的更改。HOLD \用于暂停正在进行的数据传输。如果微控制器在向存储器传输数据时接收到高优先级中断信号,并且需要暂停直到中断服务,则此功能非常有用。
Adesto AT25SL321 32 Mbit闪存设备支持四种操作模式:
  • 标准SPI操作:闪存的访问类似于标准SPI存储器件,具有SPI时钟(SCLK),低电平有效芯片选择(CS \),串行输入(SI)数据和串行输出(SO)数据。支持标准SPI总线模式0和3。
  • 双SPI操作:通过将SI和SO用作双向数据引脚(标记为IO0和IO1),可提供标准SPI操作数据速率的两倍。
  • 四SPI操作:这提供了标准SPI操作的四倍数据速率。除IO0和IO1外,WP \和HOLD \用作双向数据引脚,IO2和IO3。在四SPI操作中,WP \和HOLD \功能不可用。
  • QPI操作:仅用于SPI XiP操作。虽然标准,双和四SPI模式都支持仅使用IO0引脚向SPI存储器发送命令,但QPI操作支持使用四个IO [0:3]引脚发送命令,从而显着提高SPI XiP性能。
如果Adesto AT25SL321的32 Mbits还不够,Adesto还提供64 Mbit AT25QL641-UUE-T。这两个器件引脚兼容,因此AT25QL641可以直接替代。除了拥有更多内存外,两个设备之间的唯一区别是AT25QL641在上电时默认设置为QPI操作。这减少了高性能系统中设备的设置时间。在存储器读取周期期间,两个器件仅消耗5毫安(mA)。两款Adesto存储器器件均采用1.7至2.0伏单电压供电,可与任何具有SPI XiP接口的电压兼容微控制器连接。
对于主机微控制器,微芯片科技在其SPI接口XIP ATSAMD51系列,包括120 MHz的ARM®基于Cortex®-M4F- ATSAMD51J20A-UUT微控制器。该器件具有1 MB的闪存和256千字节(Kbytes)的RAM。它具有全系列的外设,包括模数转换器(ADC),数模转换器(DAC),USB端口和I 2 S.它还具有公钥加密外设和真随机数用于安全功能的发生器(TRNG)。
Microchip ATSAMD51J20A图有一整套外设(点击放大)
图2:Microchip ATSAMD51J20A具有全套外设,包括SPI XiP串行接口,ADC,DAC和数据加密支持。(图像来源:Microchip技术)
要连接外部闪存,开发人员可以使用支持SPI XiP的ATSAMD51J20A QSPI外设。这允许代码直接从Adesto闪存执行。ATSAMD51J20A将Adesto Flash映射到Arm的高级高性能总线(AHB)程序存储空间。为了保护串行闪存中的数据,ATSAMD51J20A SIP XiP支持对写入外部SPI存储器的数据进行透明加扰,并对从外部SPI存储器读取的数据进行解码。这有助于防止未经授权的固件复制和系统盗版。
Microchip ATSAMD51J20A 32位微控制器示意图
图3:Microchip ATSAMD51J20A 32位微控制器具有支持SPI XiP串行端口的QSPI外设。只需六个引脚即可轻松连接Adesto AT25SL321串行闪存。(图片来源:Digi-Key Electronics)

将Microchip ATSAMD51J20A与Adesto串行闪存器件配合使用

Microchip ATSAMD51J20A SPI XiP外设有三个寄存器,用于向外部串行XiP Flash发送命令。由于来自不同供应商的串行闪存XiP存储器件使用不同的指令代码,因此开发人员必须按如下方式为这些寄存器配置所使用的特定存储器供应商:
  1. 指令代码寄存器包含用于访问串行闪存的指令。对于以四SPI模式工作的Adesto闪存器件,如果固件从存储器映射的XiP区域执行代码,则该寄存器包含快速读取四输出指令0x6B。如果正在执行写入,擦除或状态寄存器操作,则必须将该寄存器更改为相应的指令代码。
  2. 指令地址寄存器包含Flash存储器地址在外部串行闪存访问。当Microchip ATSAMD51J20A SPI XiP配置为串行存储器模式时,SPI XiP外设将自动将该地址设置为固件在存储器映射的AHB存储器空间范围0x0400 0000至0x0500 0000内执行的地址。
  3. 指令帧寄存器配置SPI XIP特定于所使用的外部存储装置中的指令的帧格式。这包括选择24或32位的地址长度,启用双倍数据速率(DDR),是否支持连续读取模式以及操作码长度。
使用Microchip SPI驱动程序可轻松配置Microchip SPI XiP接口的其余部分。
只要微控制器上的应用程序固件从SPI XiP存储器映射区域执行代码,就不需要重新配置微控制器上的SPI XiP外设。Adesto闪存还支持读模式,只有单个SI引脚,指令代码为0x03。如果仅使用双SPI模式,则指令代码为0x3B。这些代码由应用程序固件写入指令代码寄存器。
当指令代码寄存器被更改时,刷新与存储器映射地址空间相关的任何高速缓存被认为是一种好的做法。读取或写入串行闪存状态寄存器时,应刷新缓存,然后禁用缓存。在内存映射区域中写入Flash时也应该这样做。恢复内存读取操作后,应重新启用缓存。
由于涉及高速数据传输,串行闪存应布置在印刷电路板上,尽可能靠近微控制器SPI XiP端口。如果不可能,那么迹线不应超过120毫米(mm)。时钟信号应至少是印刷电路板宽度的三倍,远离其他信号,以避免干扰。IO [0:3]双向数据信号应彼此相距10 mm以避免偏斜。

结论

外部串行闪存器件可以提供快速的固件代码执行,而无需并行闪存芯片的复杂性和多余的电路板空间。这样可以随着时间的推移轻松扩展程序代码,以及现场更新,而无需重新设计系统板。
 

用户喜欢...

开发工具调整 MCU 的功耗

构成物联网 (IoT) 的众多器件关联在一起的其中一个原因是对低能耗的要求。为了满足这一要求,需要在一个整体策略内,从多个层面进行优化。一个成功的设计不仅需要选择低功耗的元器件,...


设计实例 #16:基于MCU的温度数据记录器

温度数据记录器演示板2一旦编程,将记录温度测量一段预定的时间,直到24LC16B完全编程为温度数据(即2,048个温度读数)。 每个样本使用一个字节的内存。 通过更改TIMEOUTVAL变量,可以在我们...


构建更有效的智能设备:第 1 部分 – 使用 MCU 和 PMIC 的低功耗设计

本系列文章分为三个部分,将探讨如何构建更有效的智能设备。第 1 部分(本文)讨论用于平衡功率和性能的低功耗设计方法。第 2 部分解决应对用户透明安全性的挑战。第 3 部分检讨满足设...


MCU提供基于硬件的物联网安全性

伦敦 - 安全突然成为一个热门话题。考虑到所有关于连接设备和实现物联网(IoT)设备的讨论,以及对网络攻击的潜在威胁的更多认识,这并不令人惊讶。认识到这一点,意法半导体和恩智浦半...


构建更有效的智能设备:第1部分 - 采用MCU和PMIC的低功耗设计

无线物联网和可穿戴电子产品依赖于能够延长电池寿命的低功耗设计。然而,紧张的电力预算与更多功能的需求相冲突,这些功能可能迫使开发人员转向使用大型电池和充电需求,这对用户来说...


为物联网设计添加高性能语音关键字定位:第2部分 - 使用MCU

编者注:使用新兴的高效算法类,任何开发人员现在都可以在低功耗,资源受限的系统上部署复杂的关键字定位功能。这个由两部分组成的系列文章的第一部分展示了如何使用FPGA实现这一目标...


物联网(IoT)的兴起 预计未来五年微控制器市场将稳步上升

旧金山 - 据市场研究公司IC Insights称,预计未来五年微控制器市场将稳步上升,主要原因是传感器的普及和物联网(IoT)的兴起。 IC Insights表示,预计今年MCU出货量将增长18%,达到306亿部。该...


快点?蓝牙MCU无线耳塞解决方案的关键

设计蓝牙无线耳塞时会遇到许多挑战。 同步这对耳塞对于可接受的操作至关重要。 这对于完全无线的解决方案来说可能是困难的,这就是为什么许多系统跳过此任务并在耳塞之间运行连线的原...


优化的MCU可实现电机控制的新功能

优化的MCU可实现电机控制的新功能 本文讨论了新的Kinetis V系列MCU,支持Kinetis电机套件工具以及它们为利用现代电机技术所提供的优势。...


Microchip发布了支持快速物联网实施的32位MCU

Microchip Technology Inc.最近发布了两款物联网芯片,专门用于简化产品开发,同时加强物联网终端的安全性 - 随着物联网设备数量迅速增加,这一问题日益受到关注。 该 SAM L10和L11 SAM 是32位微控制...


使用CLC扩展PIC®MCU功能

可配置逻辑单元(CLC)是一种灵活的外设,可为PIC单片机创建片上自定义逻辑功能。 该外设允许用户指定信号组合作为逻辑功能的输入,并使用逻辑输出来控制其他外设和I / O引脚。 这为嵌入...


SAM L10 /L11ARM®Cortex®-M23 MCU

微芯片技术SAM L10 / L11 ARM皮质-M23 MCU是超低功率,32位MCU用的TrustZone,加密,和增强的正温度系数(PTC)。所述SAM L10 / L11的MCU来与32MHz的ARM皮质-M23芯与单周期硬件乘法器,硬件除法,嵌套矢量中...


Microchip Technology PIC32MK工业和电机控制MCU

Microchip Technology PIC32MK微控制器(MCU)提供一系列通信外设,并具有丰富的高性能模拟电机控制功能。 PIC32MK系列包括两个子集。所述PIC32MK MC的MCU目标精度的双电机控制应用。该PIC32MK GP的MCU都挤...


采用CapTIvate™触摸技术 MSP430FR25x2电容式触摸传感MCU

德州仪器(TI)MSP430FR25x2电容式触摸传感MCU 德州仪器(TI)MSP430FR25x2电容式触摸传感MCU是用于电容式触摸传感的超低功耗MSP430微控制器(MCU)。这些器件采用CapTIvate触摸技术,适用于具有1至1...


德州仪器的AWR1642和IWR1642是集成DSP和MCU的单芯片76 GHz至81 GHz FMCW雷达传感器

AWR1642和IWR1642器件是独立的FMCW雷达传感器单芯片解决方案,可简化汽车雷达(AWR1642)和毫米波传感器在76 GHz至81 GHz频段的实施。它们采用德州仪器的低功耗45纳米RFCMOS工艺制造,该工艺能够单片...


华虹半导体推出12位SAR ADC IP助力超低功耗MCU平台

华虹半导体有限公司 今日宣布,基于其0.11微米超低漏电 (Ultra-Low-Leakage,ULL) 嵌入式闪存 (eFlash) 工艺平台,推出自主设计的超低功耗12位逐次逼近 (SAR)型模数转换器 (ADC) (12-Bit SAR ADC) IP,达到...