当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]在嵌入式系统中,诸如变频器和伺服驱动器等工业应用,乃至CD播放器等众多消费电子产品,都需要保存最近的用户设置,在下次上电后加载使用。如果使用MCU内置Flash,一般擦写次数限制在10k次,无法满足寿命和耐久性要求,所以只能通过外置EEPROM实现。

在嵌入式系统中,诸如变频器和伺服驱动器等工业应用,乃至CD播放器等众多消费电子产品,都需要保存最近的用户设置,在下次上电后加载使用。如果使用MCU内置Flash,一般擦写次数限制在10k次,无法满足寿命和耐久性要求,所以只能通过外置EEPROM实现。

TI新推出的MSPM0系列MCU支持使用Flash模拟EEPROM,在小容量存储需求的场合能节省外部EEPROM芯片,实现成本控制。MSPM0系列MCU的Flash容量覆盖16KB到128KB,其中低32KB的Flash区域支持10万次擦写,而剩余区域支持1万次擦写,如下图MSPM0G3507规格书所示。所以,在使用Flash模拟EEPROM时,应尽可能选择低32KB区域。

当使用<=32KB Flash容量产品时,这时芯片的全部Flash区域都支持10万次擦写,只需要根据用户代码量以及存储需求确定模拟EEPROM的容量大小,然后放置到Flash的尾部地址即可。

当使用>32KB Flash容量产品时,这时用户代码占用空间可能较大,如果直接选取低32KB尾部地址作为模拟EEPROM,有可能与用户代码地址相冲突而造成误擦写,如下图所示:

这时则需要在代码中向编译器声明EEPROM的位置及长度,使其安排Code及Data时避开用户设置的EEPROM区域。

在CCS IDE with TI Clang中,需要做两步修改:

1. 在.cmd文件中添加Sections的声明如下图:

其中EEPROM 为自定义的section名字,0x00001000为自定义的开始地址。

2. 在需要使用的.c文件中(如c)添加数组定义如下:

Fullscreen

1

const uint32_t EEPROM[4096] __attribute((used)) __attribute((section(".EEPROM")))={0};

以上语句定义了一个名为EEPROM、类型为uint32,长度为4096的const数组,并且存放在上面开辟的.EEPROM Sections,其中添加__attribute((used))可以避免编译器把该数组优化掉。

完成以上修改后,编译器会避开自定义的EEPROM SECTIONS,代码只会存放于.text SECTIONS,这样修改后就可以保证EEPROM地址和长度都落在期望的Lower 32KB区域且不会与代码段冲突。

添加修改并编译后,查看Memory Allocation如下图,可见EEPROM段与.text代码段分开,所定义的EEPROM数组也成功初始化。

最后就可以进行Flash的Erase/Program操作,具体可参考drivelib中的flashctl_program_with_ecc等例程,这里不再赘述。

本文针对MSPM0系列MCU使用Flash模拟EEPROM时需要在Lower 32KB开辟EEPROM专用区域的工况,提出使用SECTIONS分配的方式解决与EEPROM和Code可能重合的问题,配合SDK的Flash操作,可以很容易实现EEPROM在任意Flash区域的开辟。

使用MCU(微控制器单元)内置Flash存储器具有多方面的优势,主要包括以下几点:

1. 紧凑性和集成度

· 高度集成:内置Flash存储器直接集成在MCU内部,与语音处理电路或其他核心电路紧密结合,构成完整的系统。这种设计减少了外部电路的复杂性和所需元件数量,从而减小了整体系统的体积。

· 降低成本:由于减少了外部元件和连接的需求,使用内置Flash的MCU在制造成本上通常更低。

2. 性能与效率

· 快速读取和写入:内置Flash通常能够实现数据的快速读取和写入,这有助于提升系统的整体性能和响应速度。

· 优化程序执行:对于支持XIP(eXecute In Place,芯片内执行)的Flash,应用程序可以直接在Flash内存内运行,无需先拷贝到RAM中,从而减少了程序启动时间和内存占用。

3. 可靠性与稳定性

· 减少外部干扰:内置Flash减少了与外部电路的连接,降低了因外部电磁干扰或其他环境因素导致的数据错误或损坏的风险。

· 保护机制:许多MCU内置的Flash存储器都配备了各种保护机制,如写保护、擦除保护等,以确保数据的安全性和完整性。

4. 应用灵活性

· 多用途存储:除了存储程序代码外,内置Flash的剩余空间还可以被用作数据存储器,如模拟EEPROM(电可擦可编程只读存储器)的功能,用于存储重要数据和关键记录。

· 升级与维护:部分MCU支持通过OTA(Over-The-Air,空中下载技术)进行固件升级,内置Flash为这一功能提供了便利的存储空间。

5. 功耗优势

· 低功耗设计:内置Flash通常具有较低的功耗特性,有助于延长MCU系统的电池寿命或降低整体能耗。

总结

综上所述,使用MCU内置Flash存储器在紧凑性、集成度、性能与效率、可靠性与稳定性、应用灵活性以及功耗方面均表现出显著优势。这些优势使得内置Flash成为许多嵌入式系统和微控制器应用的理想选择。然而,需要注意的是,内置Flash的容量可能相对较小,无法满足所有应用场景的需求。因此,在选择使用内置Flash还是外挂Flash时,需要根据具体的应用场景和需求进行权衡。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭