STMCU小助手
发布时间:2022-7-17 22:45
|
前言 本应用笔记的目的在于介绍适用于STM32F303xB/xC和STM32F358xC微控制器的内核耦合存储区(CCM)RAM,并描述利用不同的工具链从该存储区域执行部分应用程序代码所需的操作。 本应用笔记分为四个部分:第一部分是 STM32F3 CCM RAM 的概述,第二部分描述了利用以下工具链执行部分应用程序代码的步骤: • IAR EWARM • KEIL MDK-ARM™ • RIDE 和 Atollic 基于 GNU 的工具链 本文档通篇所述的步骤均适用于其它 RAM 区域,比如某些 F4 设备中的 CCM 数据 RAM 或外部 SRAM。 关于微控制器嵌入式 CCM RAM 的列表,请参考表 1。8 S6 m, s7 @: T. C8 o 7 ?8 M# E0 y9 I1 Z! S# n) L
# `' \0 ~. \. h 1 STM32F303xB/C 与 STM32F358xC CCM RAM 的概述 1.1 目的 STM32F303xB/C 和 STM32F358xC CCM RAM 与 Cortex™ 内核紧密结合。这主要为了以最高的系统时钟频率(72 MHz)来执行代码,同时避免出现等待状态。因此,与闪存的代码执行情况相比,该器件大大减少了关键任务的执行时间。% y! V2 ?/ A' ]5 r8 y CCM RAM 一般用于实时的计算密集型程序,比如:/ P! ~- j' c( H$ y0 K2 ] • 数字电源转换的控制环 (开关电源,照明) • 矢量 3 相电机控制 • 实时 DSP 任务; ?# E4 a6 b& }, T# o5 @3 m! S 当代码位于 CCM RAM 且数据保存在普通 SRAM 当中时,Cortex-M4 内核便处于最优的哈佛配置。专用的零等待状态存储器与所有 I 总线及 D 总线连接(请参考图 1: STM32F303xB/xC与 STM32F358xC系统架构),由此可实现 1.25DMIPS/MHz的执行速度,频率可达 72 MHz,最终性能可达 90 DMIPS。如果中断服务程序处于 CCM RAM 当中,这还确保了最短的延迟时间。5 E" L5 k0 `% z2 M2 Z 示例( j& S, X9 V2 Q& d, v STM32F103xx 与 STM32F303xx 微控制器之间的基准(使用意法半导体电机库 V3.4)表明,对于采用 3 电阻算法的单电机控制, STM32F303xx 的 FOC 总执行时间为 16.97 µs,而STMF103xx 的总执行时间为 21.3 µs (参考以下注释); STM32F303xx 中的 FOC 算法和无传感器算法环均从 CCM RAM 上运行。这意味着,得益于 CCM RAM, STM32F303xx 比STM32F103xx 快 20.33%。 ) V3 ~5 l W: @7 S 注 : FOC 程序以结构化的 C 语言编写,因此以上数值并不代表 STM32F103xx 和 STM32F303xx的最快执行时间。此外,执行时间还受到所使用的编译器及其版本的影响。 如果 CCM RAM 没有用来存储代码,可以像额外 SRAM 内存那样保存数据。然而,它无法通过 DMA 被访问。不建议将代码和数据一起放在 CCM 中,因为这样 Cortex 内核将不得不从同一个内存中获取代码和数据,有可能发生冲突。这样,内核会变为冯 · 诺依曼配置,性能从1.25DMIPS/MHz 下降至 1DMIPS/MHz 以下。 5 @, F4 H- j5 w* U0 H0 k
1.2 STM32F303xB/C 与 STM32F358xC CCM RAM 的特性" l# W7 m+ V" m# G 1.2.1 CCM RAM 映射# o, p" G+ \& }/ M! R CCM RAM 适用于 STM32F303xB/C 和 STM32F358xC 器件,起始地址为 0x1000 0000。! r, q6 v& e# s' V1 \5 \% P 1.2.2 CCM RAM 重映射 与普通 SRAM 不同, CCM RAM 无法在地址 0x0000 0000 重映射。4 x) `* ]: i* \6 {, o8 U8 A 1.2.3 CCM RAM 写保护% x x- ^, h) N; \0 o6 s7 v0 L; C CCM RAM 可针对不必要的写操作获得保护,页面大小为 1KB。关于 CCM RAM 组织的说明,请参见表 2。 . Z' b# ]1 b' S F, _ 2 h# [" ?# V& E m0 i+ R9 f
写保护通过 SYSCFG CCM SRAM(SYSCFG_RCR) 保护寄存器来实现。这是一种一次性写“1” 操作机制,这意味着在给定 CCM RAM 页中将对应位置 “1” 而启用写保护之后,只可通过系统重置的方式将该位清零。有关详细信息,请参见产品参考手册。/ s z" ?1 U/ K" m0 v, G 1.2.4 CCM RAM 奇偶校验8 l! `, _9 R) J2 h' X! A STM32F303xB/C 和 STM32F358xC 微控制器会执行奇偶校验。该功能是默认禁用的,当需要使用时,可通过选项位(SRAM_PE 位)来启用。将该选项位清零后,会对 SRAM 的前 16KB 以及 CCM RAM 的前 8 KB 进行奇偶校验。 2 从 CCM RAM 执行应用程序代码(使用 IAR EWARM 工具链) g4 U6 W* t- R5 i- `- W. O/ t) M 2.1 从 CCM RAM 执行简单代码 (中断处理程序除外) 简单代码可由一个或者多个非引用自中断处理程序的函数所组成。如果代码引用自中断处理程序,则遵循第 2.2 章节 : 从 CCM RAM 执行中断处理程序所述的步骤。 EWARM 可用于将一个 / 多个函数或整个源文件放入 CCM RAM。0 s2 y7 p0 n: u+ K9 H) I. y4 h 该操作需要在链接器文件 (.icf)中定义一个新的区段,用于保存需存入 CCM RAM 中的代码。该区段会在启动时复制到 CCM RAM。以下是所需的步骤: 1. 通过设定起始地址和结束地址,定义 CCM RAM 的地址区。7 r; P8 R% G. i* R 2. 通知链接器在启动时将名为 .ccmram 的区段从闪存复制到 CCM RAM,以避免使用闪存装载软件。 3. 向链接器说明,代码区段 .ccmram 应置入 CCM RAM 区域。) Z' P9 e/ {5 l8 P S 关于执行这些操作的代码示例,请参考图 2: EWARM 连接器更新。 6 T0 g8 l, `3 N, L) i# u- U% d 注 : 该方法不适用于中断处理程序。DocID024590 Rev 2 9/25 完整版请查看:附件* |$ V6 N( R* H9 M, v3 r* l |
DM00083249_ZHV2.pdf
下载812.37 KB, 下载次数: 7
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
基于STM32F303双电机FOC驱动: 无感原理图/BOM表/代码等开源...
stm32cube_pwm配置
stm32f334驱动1.69寸SPI LED屏
stm32f334c8t6实现一个简单的温度湿度检测器
stm32f334温度湿度显示器开发板
stm32f334_硬件IIC跑u8g2移植步骤
详解STM32单片机的堆栈
stm32f334_第二十三章基础定时器6/7非中断方式单次触发
stm32f334_IIC通信点亮0.96OLED
微信公众号
手机版