C2000 的 Flash 控制器在 SysConfig 中通过 FLASH 模块配置,对应硬件实例 FLASH0CTRL


Name

实例的逻辑名称,默认 myFMC0,生成代码里会用这个名字作前缀。


Calculate Wait State [RWAIT]

控制 RWAIT 等待周期的来源。

状态 含义
勾选 SysConfig 根据你配置的 SYSCLK 频率自动计算 RWAIT,结果显示在下方灰色区域(只读)
不勾选 手动填写 RWAIT 值,填错会导致 Flash 读取异常甚至程序跑飞

推荐勾选,让工具自动算。


Wait State [RWAIT]

Flash 读取的等待周期数。CPU 频率远高于 Flash,读数据时必须等 Flash 就绪,等待周期越多说明 SYSCLK 越高。

SYSCLK 越高 → RWAIT 越大
例:SYSCLK = 150MHz → RWAIT = 0x3(3 个等待周期)

SysConfig 提示说明

工具会在这里显示一条蓝色提示: "It is important to look at your device's datasheet for information about what the required minimum flash wait state is for your selected SYSCLK frequency."

这不是报错,是提醒你:SysConfig 自动计算 RWAIT 的依据是你在时钟配置里填的 SYSCLK 频率。如果频率填错了,算出来的 RWAIT 就可能偏低,Flash 还没准备好 CPU 就去取数据,轻则读到错误数据,重则程序跑飞,而且极难复现。

只要确认 SysConfig 里的 SYSCLK 和实际 PLL 配置一致,这条提示可以忽略。


Enable Prefetch

预取缓冲,CPU 顺序执行时提前把后续指令从 Flash 读进来。

状态 含义
勾选 顺序代码几乎感觉不到等待周期,性能好
不勾选 每条指令都要等 Flash,性能下降明显

Enable Cache

Flash 代码或数据访问缓存,把最近访问过的数据缓存起来。

状态 含义
勾选 循环体、频繁调用的函数直接命中缓存,不用每次读 Flash
不勾选 重复执行的代码也要反复读 Flash,效率低

Prefetch 管"向前看",Cache 管"记住用过的",两个一起开效果最好。


Enable ECC

硬件纠错码,检测并修正 Flash 存储中的位翻转错误。

状态 含义
勾选 自动纠正 1-bit 错误,检测 2-bit 错误,功能安全场景基本必须开
不勾选 位翻转错误无法被发现,数据静默出错

ECC Instance

ECC 寄存器基地址,自动关联为 FLASH0ECC_BASE,只读,不需要动。


Register Interrupt Handler

是否注册 Flash 中断(主要用于捕获 ECC 错误事件)。

状态 含义
勾选 SysConfig 生成中断注册代码,可在 ISR 里处理 ECC 错误
不勾选 不处理 Flash 中断,一般应用保持默认即可

对应代码

FLASH 模块的配置最终对应 device.cDevice_init() 中的这一行:

Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES);
  • FLASH0CTRL_BASE:Flash 控制器基地址
  • FLASH0ECC_BASE:ECC 寄存器基地址
  • DEVICE_FLASH_WAITSTATES:RWAIT 值,定义在 device.h,根据 SYSCLK 频率预设

使用 SysConfig 工程时,这个调用会移到生成文件里,device.c 里原来那行会被条件编译屏蔽,不会重复执行。


总结

默认全勾 + 自动计算 RWAIT,保证时钟配置和实际 PLL 一致就行。
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐