基于MSP430FR 系列MCU 的多功能双接口存储器设计
扫描二维码
随时随地手机看文章
摘要
在许多嵌入式系统中通常会需要外接存储器保存数据,例如EEPROM。由于传统的存储器具有功能单一、接口固定、擦写次数有限的特点从而限制了存储器的应用场景和范围。
本文介绍了一种基于TI 新一代MSP430FR 系列MCU 来实现多功能双接口存储器的方法。相比传统存储器 (例如FLASH,SRAM,EEPOM),FRAM集合了更多的优势,拥有更强大的功能。利用MCU 的灵活性,用户可以设计出功能强大,接口灵活的多功能存储器,用来替代传统嵌入式系统中的EEPROM和RTC 等功能。
1 前言
从2011 年起,TI(德州仪器)公司先后推出了近20 款带FRAM的MSP430 系列MCU – MSP430FRXX。与传统的MCU 相比,该系列MCU 采用新一代的FRAM替代了FLASH 和SRAM。由于FRAM具有读写时间快,使用寿命长,非易失性,功耗低,抗干扰力强等特点,可以用它来实现传统FLASH+SRAM+EEPROM 实现有困难,或功耗,速度,成本三者难以协调的应用。本文介绍的多功能双接口存储器方案,除了实现低功耗快速存储的功能外,还包括RTC,硬件看门狗,AES 数据加/解密,接口扩展等功能。
2 功能介绍
2.1 MSP430FRXX 系列
MCU简介
TI 公司最新一代MSP430FRXX系列MCU 采用了FRAM作为代码和数据存储器,替代传统MCUFLASH+SRAM 的结构,并且其FRAM带有分区管理和ECC 校验功能,增强存储器可靠性,FRAM运行时的低功耗特性,将MCU 的功耗降低至100uA/MHz。除了FRAM外与SCI/IIC/SPI/GPIO/ADC/CMP/TIMER 图2.1 MSP430FRxx 内部框图等普通外设外,其还增加了AES 硬件加解密模块,32 位硬件乘法器等,其余性能指标可详见[1]。
图2.1 MSP430FRxx 内部框图
2.2 FRAM 简介
FRAM (Ferroelectric Random Access Memory) 铁电存储器是新一代的非易失性高速低功耗存储器,和传统的FLASH/EEPROM 存储器相比FRAM具有非常明显的优势:
• 速度快-FRAM的写入时间比Flash/EEPROM快1000 倍以上, FRAM写入一个字节仅耗时50ns,而FLASH 至少耗时75us,EEPROM更是长达5ms。
• 功耗低-由于FRAM的工作电压只有1.5V,相比FLASH/EEPROM 存储器需要一个升压器把电压升到9-12V,操作FRAM的功耗仅有后者1%或者更低。
• 抗干扰力强-由于FRAM 工作仅需要很少的能量,故FRAM工作起来更加稳定,不会出现FLASH 存储器的“Data-tearing”现象。
• 耐久性强(读/写次数)-FRAM的读/写周期数为一百万亿次 (10E15) ,而通常的FLASH/ EEPROM 只有一百万次 (10E6) 。
2.3 MSP430FRXX 系列MCU中FRAM 管理器简介
为了能够充分发挥FRAM速度快,功耗低,掉电不易失,耐久性强的特点, MSP430FR5969 同时为其配置了同样强大的存储器管理单元。
MSP430FRXX 系列MCU 对FRAM的管理可分为两部分:MPU和FRAM controller。
MPU 是存储器保护单元,其可提供FRAM的分区配置和读/写/执行权限独立控制。如果发生越权读/写/执行,FRAM会受到保护,同时产生错误中断通知MCU,进行相应的操作。
图2.2 FRAM controller 与 MPU 结构图
FRAM控制器主要提供FRAM的操作方式管理,ECC 校验和Cache 功能。
ECC 校验可纠正1bit 的错误和检测2bit 以上的错误。 Cache 拥有2 个64bit 的缓冲区,当要处理的数据小于8 字节时,CPU 可直接操作Cache,提高系统效率。
2.4 多功能双接口存储器系统功能简介
本文以MSP430FR5969 为例,介绍如何设计多功能双接口的存储器,该存储器支持1 个I2C 接口,2 路SPI 接口,2KByte SRAM,AES 加/解密,硬件看门狗,RTC 等功能,两路SPI 可同时访问该存储器设备。
MSP430FR5969 的功能框图如下:
图2.3 MSP430FR5969 功能框图
利用MSP430FR5969 丰富的外设,强大的运算能力和FRAM的存储特点能设计出功能强大的多接口存储器,其特点包括:
• 64KByte FRAM 非易失性存储器 (代码大约占用8KByte FRAM空间);
ÿÿÿÿÿÿÿÿÿÿ• 2KByte SRAM掉电不保存存储器 (程序占用大约1KByte SRAM);
• 支持一个I2C 接口访问,最大支持速率为100Kbps;
• 最大支持2 路SPI 接口同时访问;
• 支持8 路GPIO 扩展功能,提供上升/下降沿中断接口;
• 支持128-Bit、192-Bit、256-Bit 硬件AES 加密/解密模块;
• 独立的RTC 模块,提供实时时钟;
• 2 路看门狗定时器输出;
• 可编程电压检测器;
2.5 多功能双接口存储器系统典型应用简介
与传统的双接口存储器相比,使用MSP430FRXX 实现的双端口存储器不仅可实现非常高的数据吞吐率(最高到125Kbyte/s),同时提供数据加密,增加其传输的安全性。存储器的擦写寿命也可从一般的十万次提高到一百万亿次,动态功耗也从2mA 左右下降到100uA 左右。
如下图所示,是双接口存储器应用的典型系统,使用MSP430FRXX 实现后,存储容量可从典型的2Kbyte 扩展到48Kbyte。同时除了实现外部的双端口存储器,还可以将加密芯片,外部RTC,外部WDT 等功能集成在一起实现,使系统结构更优化,更简洁。
图2.4 双接口存储器应用场景示意图
除了上文所述的典型双接口存储器应用之外,使用MSP430FRXX 系列MCU 设计的系统还可以同时提供替代存储,增强系统Watchdog,RTC,数据加密等功能。故本文同时发现在许多其他的应用中同样可以使用该方案,提高系统的集成度,优化系统的硬件设计,提高系统软件的灵活性。比如模块化的数据采集与发布系统,以及基于BLE 的快速数据传输系统。
正如下图所示,其是一个典型的模块化数据采集与发布系统。整个系统分为主控制板,前端数据采集或发布板,人机交互板和无线数据传输板组成。由于这种模式的应用(例如,工业现场多种探测器数据采集系统,分布式广播信息发布系统等),有一个重要的特点,系统的功能配置需要根据实际环境的需要,能够灵活的调整模块种类,增减模块数量。故通常在工程上,会将其高度模块化,各个模块均用同一的串行总线(UART,IIC 或者SPI 等)进行通信。
图2.5 模块化的数据采集与发布系统
在主控板上,均需要多个串行接口的MCU(通常要求支持到8 个UART/IIC/SPI 及以上),同时有数据加密的要求,外部RTC 支持,外部看门狗等,以及EEPROM存储自身和外接模块配置信息。此时便可以使用MSP430FR59XX 系列MCU+一颗拥有多串行接口的MCU 实现主控制板的功能,优化系统的设计。
在无线数据传输板上,其同样需要EEPROM存储模块配置信息的数据和数据加密功能,同时其一般要求有32KB-64KB 的缓存,由于内置RAM32KB-64KB 的MCU 通常在此板上性价比不高,通常会使用外扩RAM 或者FIFO 实现,现在也可通过使用MSP430FR59XX 系列MCU 将这四个功能进行整合,在提升系统功能的情况下,简化系统设计。
在人机交互板上,主要部分是LCD 及按键和LED 的控制支持,同时需要EEPROM存储模块信息数据。此时便可以使用MSP430FR57XX 系列MCU 简化系统的设计,而且FRAM可当做SRAM 使用的特性,还可以根据需求合理分配FRAM的数据/代码/存储等空间。
在前端数据采集或发布板上,因为其需要有经常性的数据擦写操作,故其需要的MCU 特点是代码量不大,但是临时数据量很大,故通常要求MCU 的FLASH 在32KB 左右,而RAM 需要16KB-23KB,在这种情况下,一般基于FLASH 的MCU 很难进行选型,此时MSP430FR59XX 系列MCU 可以非常好的解决这个问题,同时还可以省去外部存储模块信息的EEPROM。
通过优化后的系统框图如下图所示,可以看出使用MSP430FRXX 系列MCU 后,系统的硬件设计得到了优化,同时面对小FLASH,大RAM这样的MCU 选型难题时,获得了很好的解决;再有就是MSP430FRXX 系列MCU 自带的功能强大的RTC,数据加解密,WDT 等功能也提到了系统的集成度和性能。
图2.6 MSP430FRXX 系列MCU 模块化的数据采集与发布系统中的应用
再例如在如下所示的BLE 数据传输系统中,当数据传输量较大时,要选择一颗RAM 非常大的MCU,通常性价比不高。故通常会用到双接口的存储器,这样可以选择数据处理性能更好的MCU 加一个外接的存储器实现。如果使用MSP430FR59XX,则可以实现存储的功能外,还可以同时实现RTC 与外部WDT,提高系统的可靠性。特别是对于需要数据加密的要求时,可以不修改系统硬件,直接实现。
图2.7 BLE 无线数据传输系统
综上可知,MSP430FRXX 系列MCU 设计的多功能双接口存储器,可广泛的应用在有快速数据传输,经常性数据擦写,以及数据加密要求的应用中。其不仅可发挥FRAM速度快已配置的特点,还可给系统带来RTC,外部看门狗,数据加解密等功能。其为系统提供了强大的数据存储吞吐能力,优化了系统硬件设计,增强了系统扩展功能,解决了小FLASH,大RAM 的MCU 选型等问题。
3 系统设计
3.1 系统框图
基于MSP430FR6969 MCU 设计多功能双接口存储器的系统框图如下:
图3.1 基于MSP430FR5969 的多功能存储器系统框图
• 配置内部数字振荡器(DCO)工作在8MHz 最高主频,为MCLK,SMCLK 分别提供8MHz 的时钟源;
• 配置eUSCI_A0,eUSCI_A1 分别工作在SPI 接口从模式,采用MCLK 作为时钟源,最大支持1Mbps 的通信速率;
• 配置eUSCI_B0 工作为I2C 接口从模式,7-BIT 地址,MCLK 时钟源,最大支持100Kbps 的通信速率
• 配置2 个DMA 通道从FRAM存储器传输数据到eUSCI_A0 和eUSCI_A1,实现SPI 接口的数据的接收,无需CPU 参与;
• 配置1 个DMA 通道从FRAM存储器传输数据到eUSCI_B0,实现I2C 接口的数据的接收,无需CPU 参与;
• Port3 配置为GPIO 扩展端口,支持上升/下降沿中断;
• 使能硬件AES 加密模块,实现AES 加密/解密功能;
• 使能TIMERA0 工作在连续模式,利用CCP0 和CCP1 实现2 路WDT 定时器输出;
• 使能ADC 模块,配置TIMERA1 工作在定时器模式触发ADC 采样,实现电压检测功能,最大支持2 个电压点的检测;
• 使能RTC 模块,实现RTC 功能。
3.2 管脚定义
按照3.1 的功能规划,选择40QFN 封装的MSP430FR5969,可对其管脚分配如下。
• 图3.2 MSP430FR5969 引脚分配
3.3 存储器分配
MSP430FR5969 片上支持64Kbytes 的FRAM存储器,其寻址范围为:
0x4400~0x13FFF; 由于MSP430 的复位地址为0xFFFF, 故该地址和中断向量表
把存储器分为两部分: 0x4400~0xFF7F, 0x1000~0x13FFF。
在本文的设计中按照下表来分配FRAM存储器:
根据上表的存储器空间规划可得出存储器分配图,如下图所示:
图3.3 MSP430FR5969 FRAM 存储器分配
MSP430FR5969 的SRAM 存储器容量共有2kBytes,其寻址空间为0x1C00-0x23FF,划分出1K 作为AES 加密/解密模块使用,具体的RAM 空间划分如下:
具体的SRAM 空间功能划分如下图所示:
图3.4 MSP430FR5969 SRAM 存储器分配
3.4 功能模块配置
MSP430FR5969 实现的多功能双接口存储器的各个功能都可以进行使能和配置,其配置参数保留在0xF800~0xFF7F 功能模块配置区。配置寄存器规划如下表:
3.5 系统配置寄存器
功能模块使能寄存器:FUNCITON_EN,基地址0xF800,偏移地址0x0000。该寄存器用来定义本设备使能的功能模块,共16BIT,低8BIT 表示功能模块的使能/关闭。
3.6 I2C 接口说明
系统支持1 路I2C 接口访问。I2C 接口数据格式为7BIT 地址,8BIT 数据,START 信号后的一个字节是设备地址,后两字节为寄存器地址。该接口参照I2C 总线的读写操作规范设计,最高支持100Kbps 的通信速率。
设备共有4 个7 位I2C 设备地址,分别对应4 个不同的功能模块,如下表所示:
各功能模块的寄存器描述详见各功能模块的介绍,I2C 设备地址可根据需
要按照I2C 协议规范规定的器件地址规则更改。
3.7 SPI 接口说明
系统支持最多2 个SPI 接口同时访问,接口SPI0 初始化为开启,接口SPI1可由用户开启或者关闭。
SPI 接口由9 个基本命令字进行操作控制,这9 个基本命令字可以通过SPI总线控制系统。SPI 模式为CS 下降沿启动,MOSI/MISO 上升沿采集,MSB。则MOSI 引脚上数据的第一个字节为命令字,后续字节为数据。
命令字的长度为一个字节,根据其意义与操作不同,后续会有跟随地址字节,数据字节和伪字节。所有的传输必须在CS 引脚的上升沿之前完成,所有的读命令都可以在任意时钟位完成,所有的写、编程、擦除命令在一个字节的边界后才完成,否则命令将不起作用。当芯片正在被编程、擦除或写入状态寄存器的时候,除了“读状态”命令,其它所有的指令都会被忽略直到擦写周期完成。SPI 操作状态寄存器S7~S0 指示当前SPI 操作的状态,用户可以通过读/写状态命令来访问该寄存器。
4 功能模块设计
4.1 铁电(FRAM)存储器
在本系统中,将MSP430FR5969 片上FRAM存储器地址的
0x6400~0xE3FF 共32Kbytes 范围设计成专用的FRAM存储器。将该段存储器分成8 个页面,每个页面4Kbytes。主机可以通过I2C 或SPI 访问这个区域的存储器。
4.2 RTC 模块
4.2.1 功能描述
RTC 模块实现实时时钟、日历功能,其提供一个可编程的时钟输出,一个中断输出。具体功能如下:
• BCD 格式输出秒、分、时、星期、月、年;
• 支持512HZ,256HZ 两种可编程输出频率;
•支持校准逻辑,按照+4-PPM 或-2-PPM 的步长进行精度校准。
4.2.2 RTC 模块寄存器描述
RTC 模块有16 个8 位寄存器,一个可自动增量的地址寄存器。所有16 个
寄存器设计成可寻址的8 位并行寄存器,但不是所有位都有用。当一个RTC 寄
存器被读时,所有计数器的内容将被锁存,在传送条件下,可以防止对时钟/日
历数据的误操作。RTC 模块寄存器说明见下表:(基地址 : 0xE400)
4.3 AES 加密模块
数据加密是存储应用系统的重要功能,可一定程度保护数据在存储和传输中的安全,但是由于一般加密功能都需要大量的加法,乘法,移位的数学和逻辑运算,会给系统带来巨大的性能和功耗挑战。MSP430FR5969 自带的硬件AES 模块则解决了功能与功耗的矛盾,通过硬件方式,在不增加CPU 负担的情况下,有硬件实现速度更快,并且降低系统的功耗。
MSP430FR5969 的AES 加密模块可提供128BIT 数据的128BIT,192BIT 或者256BIT 长度的密钥加密和解密(FIPS PUB 197 标准)。其加/解密性能如下表:
4.3.1 AES 加密/解密模块寄存器列表(基地址 : 0xF400)
4.3.2 AES 加密/解密模块控制寄存器(偏移地址 : 0x00)
4.4 电压检测器模块
本设备通过MSP430FR5969 内部12BIT 高精度ADC 实现电压检测功能,
TIMER1 用来定时触发ADC 转换,并根据转换结果设置相应的报警引脚。本设
计中最大支持两路电压检测。
4.4.1 电压检测模块寄存器描述(基地址 : 0xF000)
4.4.2 电压检测模块控制寄存器(偏移地址 : 0x00)
4.4.3 电压检测模块电压门限寄存器 VTRIPNX(16Bit)
4.5 WDT模块
本系统利用MSP430FR5969 的TIMERA0 实现一个外部看门狗功能。支持最大两个看门狗输出。 本设计中采用片上 VLO(10KHz)作为TIMERA0 的时钟源,设置TIMERA0 工作在连续模式,用户设置WDT0_VALx 来配置看门狗的周期。当TIMERA0 计数值到达WDT0_VALx 时,设置对应的看门狗输出管脚。用户向看门狗控制寄存器的写入CLR1 和CLR0 位会清除对应的看门狗计数器。
4.5.1 看门狗模块寄存器描述(基地址 : 0xEC00)
4.5.2 看门狗模块控制寄存器(偏移地址 : 0x00)
4.5.3 看门狗溢出周期寄存器 WDTN_VAL(32Bit)
5 软件设计
基于MSP430 FRAM系列MCU 实现多接口存储器的软件设计分为两部分
进行,软件流程设计和代码实现。
5.1 软件流程图
根据上文所述的系统功能规划和详细设计,以及软件流程图,可以容易实现系统功能,故实现的C 代码在本文中就不详细描述。若对本文所述的方案和内容感兴趣,请联系德州仪器半导体获得进一步支持。