引言( H2 s7 |$ B6 t8 C% Q STM32Cube源自意法半导体,旨在通过减少开发工作量、时间和成本,明显提高设计人员的生产率。STM32Cube涵盖整个STM32产品系列。! ^+ z J& P" ? STM32Cube包括: • 一套用户友好的软件开发工具,覆盖从设计到生产的整个项目开发过程,其中包括:# |2 i2 s( b' U0 J4 D – STM32CubeMX,图形软件配置工具STM32CubeMX,可通过图形向导自动生成初始化C代码。" U* K' o: p8 p+ n – STM32CubeProgrammer(STM32CubeProg),图形接口和命令行接口中可用的编程工具。 – STM32CubeMonitor-Power(STM32CubeMonPwr),测量并帮助优化MCU功耗的监控工具。 • STM32Cube MCU包,针对于每个微控制器系列的综合嵌入式软件平台(例如,STM32L5系列的STM32CubeL5),它包括:+ c2 S$ _2 n) Y+ f* s3 M – STM32Cube硬件抽象层(HAL),确保在STM32各个产品之间实现最大限度的可移植性。 Y# k% h7 {. q – STM32Cube 底层API,通过硬件提供高度用户控制,确保最佳性能和内存开销。 – 一套一致的中间件组件,比如RTOS、USB器件、USB PD、FatFs、 STMTouch™、TrustedFirmware(TF-M)、mbed-TLS和mbed加密。" |# ?" {" C! ? – 配备完整外设和应用示例的全部嵌入式软件实用工具。0 G$ O" u) X; r/ |5 t* s 本用户手册介绍了如何开始使用 STM32CubeL5MCU软件包。, S* d% I0 ^" v1 v STM32CubeL5介绍了STM32CubeL5MCU软件包的主要功能。* L5 V/ f; {0 I' ^9 s, [0 G+ M* z 第 2节和第 3节概述了STM32CubeL5架构和MCU软件包结构。 : S+ p$ x! i/ Y- @! Y 1 STM32CubeL5 主要特性 STM32CubeL5MCU软件包在基于具有TrustZone® 和FPU的Arm®(a) Cortex®-M33处理器的STM32 32位微控制器上运行。 STM32CubeL5将开发STM32L5系列微控制器应用所需的所有通用内置软件组件聚集在单一软件包中。根据STM32Cube倡议,该组组件具有高度可移植性,不仅在STM32L5系列微控制器内,而且在其他STM32系列中也是如此。7 A$ {! F9 K& J) s STM32CubeL5与用于生成初始化代码的STM32CubeMX代码生成器完全兼容。该软件包包括涵盖微控制器硬件的底层(LL)和硬件抽象层(HAL)API,以及在STMicroelectronics板上运行的大量示例。HAL和LL API提供开源BSD许可证,以便用户使用。 STM32CubeL5MCU软件包还包含一组中间件组件以及相应的示例。它们的许可条款免费、易用。 • 使用FreeRTOS™开源解决方案实现CMSIS-RTOS • 完整的USB器件堆栈支持以下器件类别:HID,MSC,CDC,音频,DFU,LPM,BCD。 7 {& R r3 J: |7 H • USB PD库 9 V. s8 f/ T2 G% `2 d • Arm可信固件-M(TF-M)集成解决方案% I7 O, V6 Q, w X8 Y# y8 H • Mbed TLS和Mbed加密库# p7 z, P) ?. O7 F% R • 基于开源FatFS解决方案的FAT文件系统 • STMTouch触摸感应库解决方案。, s, o2 c/ m1 M/ m& g5 p7 B" a STM32CubeL5MCU软件包中还提供实现所有这些中间件组件的一些应用程序和演示。1 E0 ~* C! b" Y- p STM32CubeL5 MCU软件包组件布局如图 1中所示。 - Y& l# w8 v) k( L ` ; u4 V# Z( l/ e 2 STM32CubeL5架构概述 STM32CubeL5MCU软件包解决方案围绕三个独立的级别构建,可以轻松交互,如图 2中所述。" a5 A6 E3 W6 I" H, J* y4 W , A7 {, Q6 \( F9 s2 @! _ 2.1 级别 0 此层级分为三个子层:3 E3 z; o n4 k2 E' M( E • 板级支持包(BSP) • 硬件抽象层(HAL)# L& X* i, k! | M6 m4 o/ R- c – HAL外设驱动程序 – 底层驱动 • 基本外设用例1 d4 f. g& o- n0 I 0 j3 s! g, @2 y, ~ 2.1.1 板级支持包(BSP)8 s' F. S6 O$ u1 M- h* ^6 H 该层提供了一组特定于板上实现的每个硬件组件的API(例如LCD、音频、microSD™和MEMS驱动程序)。不支持音频和MEMS驱动程序。它包含两部分: • 组件驱动程序;! l) G4 G$ y1 X: X 该驱动程序与板上的外部器件(而不是STM32)有关。组件驱动程序为BSP驱动程序的外部组件提供专用API,并且可以移植到任何其他板上。5 U! ^& R3 ~9 c3 c# f+ u8 T+ ] • BSP驱动器; 这是组件驱动程序链接到特定板的位置,以提供一组用户友好型API。API命名规则是BSP_FUNCT_Action()。 示例:BSP_LED_Init()、BSP_LED_On()BSP基于模块化架构,只需执行低层级例程,便可轻松移植到任何硬件上。 2.1.2 硬件抽象层(HAL)和底层(LL) STM32CubeL5 WL HAL和LL是互补的,可满足广泛的应用要求: • HAL驱动程序可提供高度可移植的面向高级功能的API。它们向最终用户隐藏了MCU和外设的复杂性。 HAL驱动程序可提供面向特征的通用多实例API,这些API可提供即用型流程来简化用户应用程序的实现。例如,对于通信外设(I2S、UART和其他外设),提供了对API进行初始化和配置的API,可基于轮询、中断或DMA进程来管理数据传输,并处理在通信过程中可能发生的通信错误。HAL驱动程序API分为两类: – 为所有STM32系列微控制器提供通用功能的通用API – 以及为特定系列或特定编号的部件提供特殊定制功能的扩展API。 • 底层API是在寄存器级别提供的底层API,这些API经过进一步优化,可移植性下降。需要对MCU和外设技术参数有更深入的了解。 底层(LL)驱动程序旨在提供面向专家的快速轻量级层,与HAL相比,更接近硬件。与HAL相反的是,对于不关注优化访问的外设或需要大量软件配置和/或复杂上层堆栈的外设而言,LL API并不适用。+ Z. H$ [6 d9 G R* z+ z 底层(LL)驱动程序具有: – 一组函数,用于根据数据结构中指定的参数,对外设主要特性进行初始化7 n* U+ L! z+ q6 B – 一组函数,用于使用每个字段对应的复位值填充初始化数据结构 – 一组函数,用于复位外设(外设寄存器恢复为其默认值)$ A+ [5 d$ t/ @* d2 l. [: O – 一组内联函数,用于直接和原子寄存器访问 – 完全独立于HAL,可在独立模式(无HAL驱动程序)下使用5 R8 {" C- n3 U$ W2 b0 V) |% Y – 涵盖全部支持的外设特性。8 m3 U6 t* f9 h4 w. A 2.1.3 基本外设用例 该层包含有围绕STM32外设构建(仅使用HAL和BSP资源)的示例。 2.2 级别 1 此层级分为两个子层: • 中间件组件" v- q- [8 v" ]5 y4 J/ D$ ] • 基于中间件组件的示例 2.2.1 中间件组件 中间件是一组涵盖USB设备库、USB PD库、FreeRTOS™、FatFS、Arm可信固件-M(TF-M)、Mbed TLS、Mbed Crypto和STMTouch触摸感应的库。该层组件之间的水平交互 是通过调用特征API来直接执行的,而与底层驱动程序的垂直交互是通过库系统调用接口中实现的特定回调函数和静态宏来管理的。例如,FatFs实现磁盘I/O驱动程序,用来访问microSD驱动器或实现USB大容量存储类。USB PD可提供最新USB C型供电服务。 在USB.org规范的这一演变过程中,实现用于电源管理的专用协议。 4 P. J' D# V& l2 V; \. V# p 每个中间件组件的主要特性如下:: E+ N! k: |( ]/ Q • USB设备库: – 支持多种USB类别(大容量存储、HID、CDC、DFU、LPM和BCD)。* e# r) J( S# B9 n* H – 支持多数据包传输功能,通过该功能可发送大量数据而无需将其拆分为最大数据包大小的传输件。 – 无需更改库代码(可保存为只读),使用配置文件即可更改内核和库配置。( h- `% p$ y! W$ K* | C – 32位对齐数据结构体以处理高速模式中基于DMA的传输。. Z8 X( J4 [& O' W4 b5 A – RTOS和独立操作。" L% S- f* b5 U7 U* e – 使用配置文件通过抽象层与低级驱动程序链接,从而避免库和低级驱动程序之间存在任何依赖关系。6 J, u3 g7 o/ P# r • USB PD设备和内核库 – PD2和PD3规范(支持供电/受电/双重角色)' m2 S5 b/ w3 u' M# p# u – 快速角色交换4 @9 v% s- y9 a; \9 o – 电池电量耗尽 – 无需更改库代码(只读),使用配置文件更改内核和库配置 – RTOS和独立操作。0 t4 B7 u+ S8 t+ f, W: @ – 使用配置文件通过抽象层与低级驱动程序链接,从而避免库和低级驱动程序之间存在任何依赖关系。 • FreeRTOS™ – 开源标准, {9 C3 E' ^5 b4 b8 P – CMSIS兼容性层9 `5 ?0 }: r. Z# d. I6 d$ Z – 低功耗模式下的无时间片操作 – 与所有STM32Cube中间件模块集成( y5 \9 I3 a3 k r5 @+ n – 支持TrustZone。 • FAT文件系统, i/ Z7 `' C9 _- w5 ` – FatFS FAT开源库 – 支持长文件名! Q, x' R# Y8 ]5 O( { – 动态多驱动器支持$ ]6 {9 V) l1 j4 t: i9 I: B – RTOS和独立操作 G. z2 M! A9 j3 b% S – microSD™的示例 • Arm可信固件-M(TF-M)& x4 P5 J2 H- F: Q – TrustZone的Arm平台安全架构(PSA)的实现参考, D* S* u- ?6 V9 M3 ^ – 安全服务包括:+ y+ i1 F, x# e" t% {% G* u 安全存储服务 认证+ P( Y8 w) O7 U/ ] 加密服务4 b3 O/ o7 ]5 y/ A9 ]& P) r TF-M审核日志9 u Q) ~) v/ u" ?' I% j4 A7 ~7 q 平台服务 TF-M应用的示例可在\Projects\STM32L562E-DK\Applications\TFM下在STM32CubeL5固件 包中找到。 • Mbed TLS – 基于开源的SSL/TLS安全层8 a( c8 O& r; [9 W. G+ N • Mbed加密 – 支持多种加密操作的开源密码库,包括:& T( m4 U9 v# B* P" C7 N& r 密钥管理 哈希算法 对称加密算法 非对称加密算法 消息认证(MAC)) w6 W2 T" K: k8 e& k 密钥生成和衍生 关联数据的认证加密(AEAD)。: w! Y1 B- E' e- w8 E: E% D( |3 I • STM32触摸感应库: 强大的STMTouch电容式触摸感应解决方案,支持接近、触摸键、线性和旋转触摸传感器。它基于成熟的表面电荷转移采集原理。 ( e% o: P5 M6 l% B6 T' j1 y 0 t/ g- j' {; j2 }% Z) U5 ]2 T 完整版请查看:附件1 I7 K: X. D' ^# j+ o |
DM00668763_ZHV1.pdf
下载523.18 KB, 下载次数: 0
Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列
STM32L5 系列微控制器和 TrustZone® 开发入门
STM32CubeL5 TFM 应用程序入门
STM32CubeIDE 中基于 STM32L5 系列的项目入门
Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列
STM32U5对比STM32L5有 哪些更新?
STM32L5 中如何关闭 TrustZone ?
修改STM32L5的存储空间安全属性的设置
使用STM32L5的OTFDEC和ICACHE功能实时高效运行片外Flash中的加密代码
使用STM32L5 TrustZone特性控制调试端口访问,保护片上代码安全