STM32U5

电动自行车/电动摩托车已成为国内主要的短途代步工具。据统计,截止到2020年,中国市场保有量已经超过3亿辆。

电动车电池是电动车上的动力来源,电动车上绝大多数装的是铅酸蓄电池。而锂电池相比铅酸电池具有更高的能量密度和性价比,在新国标的驱动下,将成为电动两轮车的主流电池技术,但不可忽视的是,相比铅酸电池,锂电池的危险性更高,若不谨慎对待,很容易发生失火、爆炸等危险事件,这也对电动单车BMS解决方案提出了更高的要求。

STM32U5是STM32高性能低功耗系列的旗舰产品,它延续STM32F2/F4/F7的应用范围,同时又有更低的能耗,更高的可靠性和性价比,是适合电动单车BMS系统的理想解决方案。

1.png

BMS功能需求:实时监测/管理电池参数

BMS系统能对电动单车电池的充放电、电池温度、单体电池间的均衡进行控制。在电动单车中,锂电池组作为核心部件之一,在制造成本中占有极高的比重。电池管理系统作为电动单车动力电池组的监控管理中心,必须对电池组的温度、电压和充放电电流等相关参数进行实时动态的监测和管理。

STM32U5具有很好的外设集成度。14位、12位的ADC配置,DAC,运放,比较器等丰富的模拟外设,配合2个高级电机控制定时器和多个通用定时器能很好满足工业控制中对电机控制部分的需求。

在工业总线接口方面,STM32U5内置了FD-CAN外设,也可以很方便进行外扩,例如通过FSMC外扩FPGA而实现更复杂的总线等。丰富的串行通信外设接口也方便进行传感器采集、工业组态显示屏等的扩展。STM32U5内置2MB 双Bank Flash,768KB RAM丰富的资源,对应用开发非常友善,方便功能升级。100K次可擦写的512KB Data Flash及方便外扩存储的O-SPI接口等也为现场数据的实时存储记录提供了实现方案。

2.png

BMS安全需求:高性能与低功耗

锂电池一次过放电便会造成电池的永久性受损。在极端状况下,锂电池温度过高或过充电会造成热脱控,电池会裂开甚至发生爆炸。因此需通过BMS严控充电及放电的全过程,避免损坏电动单车电瓶。

此外,电池内短路是最麻烦、最难明确的热失控原因,在现阶段,这也是电池安全领域的全球性难题,可能会造成严重的影响。并且,电池内短路现在还不能从源头上避免。而利用BMS电池管理系统能够迅速鉴别电池内短路,以达到对电池的短路保护。其双重短路保护、双重过流、过充、过放保护等技术,充分保障了电池的使用安全,进一步延长了电池寿命。

  • 高性能

STM32U5低功耗微处理器中无与伦比的性能可帮助电动单车构建强大的BMS管理系统。

高性能是STM32U5的第一个关键词。STM32U5内搭Cortex-M33 内核,相对Cortex-M4性能提高20%以上;主频160MHz,使STM32U5系列能达到240DMIPS和651Coremark的性能评分,而同样采用Cortex-M33内核的上一代产品STM32L5主频为110MHz。

3.png

为了进一步增强性能,STM32U5还集成了数学运算加速器(三角函数以及数字滤波加速器CORDIC和FMAC),实现数字信号处理功能加速同时减轻CPU负载,在电机驱动应用实例中,可以将控制环路速度提高12%。

STM32U5还集成了用于优化内、外部存储上指令与数据吞吐速度的Cache(8 kB指令Cache,4kB数据Cache)和Art加速器以及用于图形处理加速的Chrom-Art,以实现更流畅更高颜值的图形显示界面。

STM32U5的存储空间也进一步扩大。其Flash目前支持1MB至2MB。同时,Flash中包含512KB具有100K次擦写保证,为用户数据反复保存提高可靠性。而SRAM配备768KB,并且支持ECC,满足关键安全应用。同时,STM32U5还配备了存储控制器接口FSMC,以及OctoSPI,支持更灵活的外部存储扩充。

  • 低功耗

为了使设备更快进入工作状态,无人机在未使用,或电动车停止状态下时,系统并不是完全断电状态,这时候减少电流的损耗就非常重要。人们经常遇到电动车/无人机在充满电状态下,因为长时间未使用,当再次使用时却发现电池没电了,或电动车电池因长时间未使用而出现过放,最终无法充电。

而使用高性能低功耗MCU 可以精准控制电池工作状态,减少电池在未使用时的电能损耗,延长整个电池的使用时间,减少充电次数,避免出现上述情况。

4.png

STM32U5具有先进且灵活的低功耗设计,通过多种功耗模式+更多省电小技巧实现超低功耗特性:

  • 内置SMPS降低内核电压

  • 微秒级功耗模式切换

  • SRAM支持分区保存

  • 内置Flash上的低功耗模式

  • Power down模式 (-40μA per bank), 5 μs 自动唤醒

  • Low-power模式,-45μA,降低读取速度

BMS信息安全需求

新国标对电动自行车的技术要求作了较大调整:

  • 增加了防篡改要求,防止产品出厂后被违规改装;

  • 预测性维护,通过NonaEdge ai/Cubeai 预测电池组合适需要维修或更换。

  • 更高的性能以及更大的Flash/RAM 资源,适合运行Azure OS/ RT-Threat OS 操作系统

STM32U5提供更强大的安全设计,包括核心代码的保护和信息传输的安全保护,层层安全,只为保护用户的创新设计。

5.png

STM32U5作为第二个Cortex-M33内核带TrustZone的低功耗MCU,相比前一代的L5,在性能、功耗、处理能力等方面都做了大幅度升级,在安全性上也更上一层楼:

  • 在系统隔离方面延续TrustZone架构,实现了更全面系统隔离机制;

  • 加解密引擎上除了同样支持对称加密算法、公钥算法加速器、HASH和真随机数硬件外,还增加了安全AES模块,升级PKA,从硬件上能够抵御DPA一类的侧信道攻击;

  • 在芯片生命周期管理方面,对读保护机制也做了改进;同样支持BOOTLOCK功能,保证启动入口的唯一性;

  • 存储保护方面,除了保持L5已有的功能,例如RDP,HDP,MPU,OTFDEC等等,还增加了写保护锁功能,可以将部分FLASH ROM化;

  • 包含防入侵检测功能,能够对设备开盖攻击,对芯片运行环境如电源温度、时钟等的侵扰进行防护,同时还增加了对Backup寄存器的保护区功能;

  • 在信任根的部分,STM32U5也提供以TF-M为参考实现的安全启动和安全升级,并经过了第三方安全认证,取得PSA和SESIP安全认证的 Level3证书;也支持安全烧录SFI功能;

  • 支持基于HUK硬件的密钥安全存储机制。

共享电车/无人机BMS 应用案例

超低功耗与高性能的完美平衡,增强的信息安全功能,丰富的RAM 资源和外设接口 (CANFD, UART, IIC,SPI)使得STM32U5成为电动单车/无人机BMS系统的理想解决方案。目前,STM32U5已成功应用到福建 SCUD(飞毛腿)动力 (电摩BMS)(STM32U545系列,用于BMS主控和RF管理器),以及河南正方共享电单车和无人机BMS系统中(STM32U575系列,用于BMS系统和工业能源存储)。

BMS系统能对电动单车电池的充放电、电池温度、单体电池间的均衡进行控制。电动车停止状态下时,系统并不是处于完全断电状态,这时减少电流的损耗就非常重要。使用STM32U5可精准控制电池工作状态,减少电池在未使用时的电能损耗,延长整个电池的使用时间,从而减少充电次数。

高性能,低功耗,丰富的数字外设和更高性能模拟接口,强大的安全特性,以及支持GUI 加速,让STM32U5在工业控制、工业表计和医疗健康、个人穿戴设备等应用领域取得良好的表现,必将为泛工业系统的创新赋能。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 46

01、背景

客户在 STM32U575 的研发过程中发现了一个奇怪的问题,无法通过 LPTIM3 将 MCU 从 STOP2 模式唤醒。 

02、问题分析

2.1. 查找芯片的资料 

2.1.1. 查找芯片参考手册 

找到芯片的参考手册 RM0456,查看 LPTIM3 是否可以将 MCU 从 STOP2 唤醒。如下图。

1.png

▲ 图1. STM32U575/585 LPTIM 特性 

从图中可以看到除了 LPTIM2 不能将 MCU 从 STOP2 唤醒,其余 LPTIM1/3/4 均可将 MCU 从 STOP2 唤醒。由此看来,客户提到的问题有可能是客户的设计问题。

2.1.2. 硬件检查 

对照 AN5373 ( Getting started with STM32U5 MCU hardware development ) 检查客户的原理图和 PCB 设计并未发现问题。 

2.1.3. 软件检查 

在与客户交流中了解到,他们的代码是从其他项目中移植过来的,在之前的项目中已经批量生产了几年了。客户怀疑是芯片的 BUG。 

查找芯片的勘误手册 ES0499 ( STM32U575xx and STM32U585xx device errata ), 并未找到相关的信息。 

03、复现客户的问题

3.1. 软件配置如下图 

3.1.1. LPTIM3 配置如下

static void MX_LPTIM3_Init(void)
{ 
    /* USER CODE BEGIN LPTIM3_Init 0 */
    /* USER CODE END LPTIM3_Init 0 */ 
    /* USER CODE BEGIN LPTIM3_Init 1 */ 
    /* USER CODE END LPTIM3_Init 1 */ 
    hlptim3.Instance = LPTIM3; 
    hlptim3.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC; 
    hlptim3.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1; 
    hlptim3.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE; 
    hlptim3.Init.Period = 99; 
    hlptim3.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE; 
    hlptim3.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL; 
    hlptim3.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO; 
    hlptim3.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO; 
    hlptim3.Init.RepetitionCounter = 0; 
    if (HAL_LPTIM_Init(&hlptim3) != HAL_OK) 
    { 
        Error_Handler(); 
    } 
    /* USER CODE BEGIN LPTIM3_Init 2 */ 
    /* USER CODE END LPTIM3_Init 2 */
}

启动 LPTIM3 :

if (HAL_LPTIM_TimeOut_Start_IT(&hlptim3, TIMEOUT) != HAL_OK) 
{ 
    Error_Handler(); 
}

在主循环中重复进入 STOP2 模式,由 LPTIM3 周期唤醒,这里需要注意一点的是在进入之前需 要先把滴答定时器关掉,否则有可能无法进入 STOP2 模式。

/* Suspend Tick */
HAL_SuspendTick();

/* Enter in Stop mode */
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);

3.1.2. 配置电源模式输出引脚 

为了方便低功耗调试,STM32U5 提供了电源模式输出 pin 脚用于指示 MCU 所处的低功耗模式,具体引脚分别是 PA5/PA6/PA7。

/*Configure GPIO pin : PA5 */ 
GPIO_InitStruct.Pin = GPIO_PIN_5; 
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 
GPIO_InitStruct.Pull = GPIO_NOPULL; 
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
GPIO_InitStruct.Alternate = GPIO_AF0_CSLEEP; 
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/*Configure GPIO pin : PA6 */ 
GPIO_InitStruct.Pin = GPIO_PIN_6; 
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 
GPIO_InitStruct.Pull = GPIO_NOPULL; 
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
GPIO_InitStruct.Alternate = GPIO_AF0_CSTOP; 
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/*Configure GPIO pin : PA7 */ 
GPIO_InitStruct.Pin = GPIO_PIN_7; 
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 
GPIO_InitStruct.Pull = GPIO_NOPULL; 
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
GPIO_InitStruct.Alternate = GPIO_AF0_SRDSTOP; 
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

2.png

▲ 图2. 电源模式输出状态

3.2. 测试 

3.2.1. 波形图 

3.png

▲ 图3. 测试波形图

从图中看出 CSLEEP,CDSTOP,SRDSTOP 一直为高也就是 1,1,1 参照图 2 状态信息,可以看出 MCU 一直处于 STOP2 模式,无法通过 LPTIM3 唤醒,也就复现了客户所描述的问题。

查看参考手册 RM0456 REV2 的 50.4.20 Autonomous mode 小节的内容。当 LPTIM 使用振荡器提供的时钟时(参见 RCC),LPTIM 可以在自主模式下运行,能够在 停止模式下保持完全功能,其中 APB 时钟已停止。

查看 RCC 章节 11.4.20 Peripherals clock gating and autonomous mode 找到了更多的信息 。

4.png

▲ 图4. Autonomous 外设

看到下面的注意事项,对于 Autonomous 外设,若不能通过 EXTI 且想在 Stop 模式具有产生中断的能力需要将 AMEN 设置为 1。这就找到了问题的所在。也就是说在开发中 如果不注意这一点,对于其它的 SRD 域的外设也有可能无法将 MCU 从 STOP2 唤醒。

5.png

▲ 图5. Autonomous 外设使用注意事项

继续追查,查找相应的寄存器。对于 LPTIM3 我们可以看到,其中 LPTIM3EN,LPTIM3SMEN,LPTIM3AMEN 均需要设置为 1:

6.png

▲ 图6. LPTIM3 外设寄存器描述

在启动 LPTIM3 之前使能 Autonomous mode,添加如下代码。

/* Enable LPTIM3 Sleep Clock */
__HAL_RCC_LPTIM3_CLK_SLEEP_ENABLE();

/* Enable LPTIM3 Autonomous Mode */
__HAL_RCC_LPTIM3_CLKAM_ENABLE();

再次测试,波形如下图所示:

7.png

▲ 图7. 添加代码后测试波形图

波形正确,正是我们的设置,循环进入 STOP2 模式。

04、小结 

MCU 变得越来越复杂,外设功能丰富度不断提高,同一个外设在不同型号的 MCU 上可能大致相同,可能会有一些细节不是太一样。这就要求我们不断的刷新自己的认知,不能困在自己的固有思维中。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 33

区块链是一种新兴的去中心化账本技术。借助分散式机制、密码学算法和共识算法等,区块链具有去中心化、信息不可篡改、开放性、匿名性和共识信任机制等特征,让系统中各参与方之间不需要建立信任,就能可信地进行数据交换。

区块链+物联网融合应用获广泛关注

物联网是数据的重要来源地和目的地。数量日益增长的物联网终端一方面采集或产生海量数据,另一方面也接收来自云端的命令并执行特定操作。这些数据一旦需要与没有信任关系的相关方进行交换,就产生了借助区块链实现数据可信交换的场景。区块链与数据天然紧密依存,在区块链行业领域中,与物联网的融合应用已经获得了广泛关注。

上海摩联信息科技有限公司针对区块链+物联网融合应用研究和实践,基于意法半导体 STM32H5及STM32U5 实现区块链应用产品 BoAT物联网区块链应用框架(BlockChain of AI Things),并通过STM32H5上的Secure Manager 或 STM32U5上的TF-M安全框架实现高可信数据上链。

STM32H5/STM32U5 为安全赋能

物联网与区块链的核心价值在于保证数据在整个生命周期中的可信管理,形成数据的有效市场价值,同时通过软硬融合模式、可信的物联网终端设备,将能够与区块链共识信任机制一起有效降低安全风险,最终实现基于区块链共识信任机制的商业闭环。在终端设备硬件底层部署可信数据上链能力,打通区块链+物联网的关键一环,从数据源头实现上链。主要实现:

  • 数据采集处可信:该方案集成在物联网设备的芯片上,在物联网设备采集数据时,即对数据进行Hash计算,并使用该设备的唯一私钥进行签名,形成该段数据的数据指纹。该段数据上云后,可以通过数据指纹的Hash和签名进行验证,是否被篡改了,是否不是来自某个被认可的合法设备。

  • 数据来源可信:在设备上生成唯一的密钥对和ID,私钥将无法从外部获,该私钥在物联网设备上对数据Hash进行签名,以保证数据来自该设备。

  • 数据流转可信:通过设备上的区块链应用框架将物联网设备上生成的数据指纹(Hash和签名)上送到区块链节点,区块链节点会记录到区块链账本中,保证该段数据指纹在未来无法被篡改和抵赖。

STM32H5/STM32U5 芯片能为物联网设备提供高安全防护的安全环境,以实现数据在设备侧的安全存储与运算。集成了ARM TrustZone®技术的Arm Cortex-M33内核与意法半导体特定的安全功能集有机融合,引入了先进的创新成果:

  • (AES)加密引擎和公钥算法加速器(PKA)硬件单元具有抵御差分功率分析(DPA)侧信道攻击的能力。

  • 使用硬件唯一密钥(HUK)的安全数据存储。

  • 主动篡改检测。通过内部监测,可在发生扰动攻击时擦除安全数据,有助于满足POS应用所需的PCI安全标准委员会(PCI SSC)要求。

  • 目标PSA与SESIP(IoT平台的安全评估标准)达到3级保障等级。

STM32H5提供的Secure Manager 及STM32U5提供的TF-M是受信任执行环境安全框架,符合 Arm® 平台安全架构(PSA)规范,支持 Secure Boot、信任根、加密、内部可信存储、初始证明、以及固件更新等功能。Secure Manager /TF-M应用接口丰富,操作简便易于上手,同时与 STM32Cube 生态系统相关联,能快速构建安全应用相关产品,其安全特性非常适合区块链应用场景,包括密钥管理、加密存储、安全运算等,完美契合区块链应用的安全需求。

摩联科技基于STM32H5/U5的区块链解决方案

摩联科技的BoAT物联网区块链应用框架是面向物联网设备的嵌入式区块链应用框架,可为物联网设备提供可信数据上链和访问区块链服务的能力。BoAT物联网区块链应用框架运行于STM32H5或者STM32U5上,支持使用 Secure Manager/TF-M 框架实现区块链应用设计。主要特性包括:

  • BoAT通过 Secure Manager/TF-M 的信任根、内部可信存储和个人化操作,实现区块链设备密钥等私密数据个人化和设备密钥管理。

  • 设备的私钥由 Secure Manager/TF-M 进行安全隔离,BoAT通过调用 PSA 接口获得设备公钥信息以构造链上设备身份。

  • BoAT构造区块链交易报文,通过PSA 接口调用 Secure Manager/TF-M 的密码学算法,进行Hash、加密、签名等运算,用于实现区块链访问及合约调用等功能。

1.png

区块链+物联网目标应用场景

摩联科技基于STM32H5/U5实现的区块链解决方案,适用于各类区块链+物联网场景,特别是对安全和数据可信要求较高的应用场景。典型的应用领域包括,智慧城市、工业互联网、物联网支付、供应链管理、物流、交通、农业、能源、环保等。

“物联网+区块链”具备广泛的应用能力,在产业领域,可以推动智慧城市、保险金融的行业发展;在公众领域,可以增强智能钱包、电子代付等应用效能;在企业经营方面,可以提升产权管理、大数据交易等服务能力;在通信领域,可以完善漫游结算、边缘计算等功能体系。

区块链融合物联网,为未来社会构筑可信数字底座

区块链融合物联网,两种技术珠联璧合,为确保数据来源可信提供了可靠保障。借助意法半导体STM32H5/STM32U5 芯片为物联网设备提供的高性能安全环境,摩联科技通过BoAT物联网区块链应用框架(BlockChain of AI Things),实现设备的信任根(Root of Trust),确保芯片有独一无二的DNA;同时,在数据源头就配置专为区块链优化的计算能力,也可充分发挥区块链技术的价值,使数据从采集端即获得安全保护和可信签名,真正实现“物链一体”、数据可信上链,并通过建设可信数据生态,实现数据资源产权、数据交易流通,为未来智能数字社会构筑可信的数字底座。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 17

一、前言

某客户在使用 STM32U5 开发一款产品时需要使用到 USB Custom 进行双向通信,并反馈STM32U5 使用的是 Azure USBx 协议栈,不再支持 ST USB device 库。客户表示只熟悉 ST USB Device 库,对 USBx 协议栈与 API 没有任何使用经验。查阅目前所有 USBx 的例程,发现目前 USBx 均没有可参考的 Custom HID 双向通信范例,客户希望提供使用 USBx HID 进行双向通信的例程,这里简单介绍下利用 CubeMx 创建工程的实现过程。

二、USB 双向通信的几个基本知识点

首先,我们回顾一下 USB2.0 设备端与主机通信的基本原理及数据流,如下图所示。

1.png

设备描述符:向主机提供 USB 版本信息、支持的协议、供应商标识(VID)、产品标识(PID)、及制造商和产品字符串,支持的配置数量等信息。

配置描述符:提供特定设备配置的信息,如接口数量、设备由总线供电还是自供电、设备能否启动一个远程唤醒以及设备功耗。

接口描述符:对配置描述符中的接口信息进行描述,主要包括了接口号、类型以及该接口中的端点(Endpoints)数量等信息。

端点描述符 :用于向主机提供端点信息,主要包括了端点方向(IN/OUT)、传输类型(中断、批量bluck、同步、控制)以及数据包最大长度等信息。

三、USBx HID 设备端 API 介绍

USBx Device 协议栈内部实现了一套复杂的基于事件和消息驱动机制的数据流传输和控制传输逻辑,用户 Application 只需要使用其提供的 APIs 即可实现 USB 通信。USBx Device Stack 所提供的 APIs 如下:

2.png

四、USBx 实现 Custom HID 双向通信的步骤

(一) 系统外设、USB、USBx、Threadx 的添加和基础配置下面我们就使用 NUCELO-U575ZI-Q 基于前面所讲的 USBx Device stack APIs 来实现USB HID 双向通信。使用 STM32CubeMX 创建如下工程,工程基本配置如下。

3.png

USB 和 RCC 时钟系统配置如下:

4.png

配置 NUCLEO-U575-Q 为 SMPS 供电模式。

5.png

配置 USB 引脚及中断功能。

6.png

添加 ThreadX RTOS 协议栈。

7.png

添加 USBx 协议栈支持并配置协议栈。

8.png




9.png

10.png

设置 MX_USB_OTG_FS_PCD_Init 在 main()中不进行调用,并保存工程并生成代码。

11.png

(二) 代码的添加及修改

本例程目的是实现 USB Custom HID 双向通信。本例程共使用了 3 个 Endpoint,如下:

Eendpoint0(控制类型,IN/OUT)、Endpoint1(中断,IN)、Endpoint2(中断,OUT)。Endpoint0:系统默认控制管理端点,用于 Host 对 Device 传输控制和管理命令,如设备描述符、配置描述符等系统信息进行配置和查询。

Endpoint1:输入(IN)类型端点,用于向 Host 发送数据,在本例程我们创建了一个应用线程usbx_cutomhid_thread_entry(),以 1S 为周期向 Host 通过 Endpoint1 发送 64 字节的数据包。

Endpoint2:输出(OUT)类型端点,用于当 Host 向 device 发送数据时,USBx Stack 会自动调用 USBD_Custom_HID_SetReport()的回调函数,通过 Endpoint2 来接收 Host 所发送的数据包。

  1. 在 app_usbx_devich.h 中包含如下几个头文件。

12.png13.png

2. 在 app_usbx_device.c 中申明和定义如下结构,其中 ux_app_MsgQueue 消息队列用于实现USB 的动态管理。

14.png

15.png

3. 在 ux_device_customhid.h/.c 中添加如下申明和定义,并在相关相关函数内分别依次添加下图所示代码。其中线程 usbx_cutomhid_thread_entry 用于周期性通过 Endpoint1 向 host 发送 64 字节数据。

16.png

17.png

18.png

19.png20.png21.png

修改 HID SetReport 函数,接收由 PC 机向 OUT 端点(Endpoint2)发送的数据包。

22.png

在 usbx_customhid_thread_entry 中实现 IN 端点(Endpoint1)向 PC 机 1S 发送一次数据功能。
23.png

添加 HID report 描述符,我们使用 USB 官网 HID 报告描述符工具生成自定义 Custom HID report 描述符,该工具可以到网址 https://www.usb.org/document-library/hid-descriptor-tool   下载。

根据 USB 规范一个 HID 报告描述符至少应包括如下条目(Items)。

24.png

25.png

(三) 功能测试及验证

USB 设备端(Device)发送数据测试,在 usbx_customhid_thread_entry()线程里面每 1S 钟向 Host 发送一包 64Byte 字节数据,然后我们可以在 PC 机端可以看到已成功收到了数据。

26.png27.png

USB 设备端(Device)接收数据测试,我们在 PC 通过向端点 2 发送数据。在 STM32U5 上通过调试窗口我们可以看到 USB device 已经成功的接收到了数据。

28.png

关于利用 STM32U5 创建 USBx_CustomHID 通信的实现过程就介绍到这里,分享出来供有需要的同仁参考。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 91

来源:意法半导体博客

凝聚ST超低功耗微控制器技术精华的STM32U52021年问世,是一款堪称可改变游戏规则的低功耗MCU

作为STM32高性能低功耗系列旗舰产品,STM32U5延续STM32F2/F4/F7的应用范围,同时又有更低的能耗,具有更高的性价比。在工业控制系统中,U5可以承担主控器、系统监控以及图形显示等核心职能

1.png

高性能,低功耗,丰富的数字外设和更高性能的模拟接口,强大的安全特性,以及支持图形加速,让STM32U5在工业控制、工业表计和医疗健康,个人穿戴设备等应用领域取得良好的表现,为泛工业系统创新赋能。在这个视觉统治一切的时代,人们对图形效果的追求永远没有止境,同时也希望实现起来更简单快速,性价比更高。如果只需一个简单的解决方案就能设计出高端、动态的显示屏就好了。

这就是STM32U5最新系列产品的使命所在。

意法半导体最近推出新款STM32U5微控制器(MCU) —— STM32U5F9/G9STM32U5F7/G7,集成了新的专用图形加速器,为成本敏感的小型便携产品赋予更出色的图形效果。超低功耗的STM32U5F9/G9STM32U5F7/G7集成3MB片上静态存储器(SRAM),可以为图形显示屏提供多个帧缓存区,节省了外部存储芯片。新产品还集成了STNeoChromVG图形处理器(GPU),能够实现的图形效果可与更昂贵的高端微处理器相媲美。

2.png

单芯片解决方案实现高级图形效果

新系列U5产品是STM32首批支持硬件加速矢量运算的MCU,能够渲染SVG图像和矢量字体。内嵌的NeoChrom GPU帮助CPU承载了图形计算任务,释放内存并提高性能,可实现更流畅、更丰富的图形效果,比如图像旋转、Alpha透明度混合和精确视角的纹理映射等高端图效。

此外,新款MCU还有处理MJPEG视频的JPEG编解码器。这些功能让产品开发人员可以在智能家电、智能家居控制器、电动自行车和工业终端设备中使用动态图标、支持多种不同尺寸的字体、可缩放地图、视频播放等技术,自此消费者可以期待在市场上看到更炫酷、更有趣、更直观好用的新一代便携式产品

3.png

在片上集成先进的图形处理功能和大容量RAM存储器后,设计人员无需外部存储器就可以开发高性能的图形子系统,从而节省了PCB空间,无需片外高速信号传输。除了3MB SRAM存储器外,片上还集成了4MB闪存,为代码和数据提供了充足的非易失性存储空间

4.png

新款MCU以低成本100引脚LQFP封装,可以实现简单的4PCB设计,避免信号布线和电磁兼容性(EMC)引起的常见问题。

ST授权合作伙伴Riverdi已经使用STM32U5F9/G9 MCU开发出了具有高级图形功能的新产品。Riverdi的联席首席执行官Kamil Kozłowski表示:最新的 STM32 MCU是个兼具优异的图显功能与成本灵活性的单芯片解决方案,让我们能够以更具吸引力的价格推出5英寸显示模块,为终端产品厂商提供专业的整体显示方案,帮助他们为自己的产品设计定制化的用户界面。我们的新型嵌入式显示器解决方案完全集成在STTouchGFX GUI设计框架内,客户打开显示器包装后,就可以立即着手开发自己的UI

STM32U5F9/G9STM32U5F7/G7采用先进高能效的Arm® Cortex®-M33处理器内核,在160MHz频率运行时处理速度达到240 DMIPSULPMark-CoreProfile (CP)测试成绩为464分。该系列MCU具有200nA待机模式、支持部分RAM内容保留和快速唤醒功能的多种低功耗模式,运行模式下功耗仅为16μA/MHz,提高了优化功耗和性能的灵活性。

STM32U5产品线根据GPU功能、封装形式、存储器容量和接口配置不同提供了丰富的产品型号,以满足开发者对于实现高级图形效果的不同需求。

5.png

全面的生态系统支持

和所有其他的STM32MCU一样,ST为新款STM32U5提供全面的生态系统支持,提供成熟的STM32外设和IoT硬件安全功能,以及包括软件工具、中间件、库和代码示例在内的STM23Cube生态系统。

ST还为支持STM32U5图形特性提供了丰富的评估和开发工具,包括探索套件STM32U5A9J-DK/STM32U5A9J-DK1,工业级探索套件STM32U5A9J-DK2STM32 Nucleo开发板,以及由合作伙伴提供的参考设计,如Riverdi 50 STM2U599

6.png

此外,ST经典的免费图形软件工具TouchGFX也全面支持所有ST STM32U5显示套件。

围观 29

01、引言

STM32 在内部都集成了一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度,但是用于监控晶圆上的温度还是挺好的,以防止芯片过温运行。

02、问题

2.1.问题详情

某客户在使用 STM32U575ZIT6Q 时,使用 ADC4 对内部温度传感器 VSENSE进行采样计算,但是总觉得温度值不对。那么,应该如何对内部温度传感器信号的 ADC 采样进行计算以得到正确温度值呢?

2.2. 问题分析

首先,我们应该看一下参考手册如何描述内部温度传感器的。参考手册说明了,未经校准的内部温度传感器更适用于对温度变化而非绝对温度进行测量的应用。为了提高温度传感器测量的准确性,ST 在生产过程中将校准值存储在每个器件的系统存储器中,用户可以在应用中去读取这些数据。 

这个校准值是写在数据手册的,如图 1 所示。

1.jpg

图1. 内部温度传感器

这张表格告诉我们,校准值 TS_CAL1 的数值位于存储器地址 0x0BFA0710 和0x0BFA0711,也就是它是一个 16-bit 的数据;同理,校准值 TS_CAL2 的数值位于存储器地址 0x0BFA0742 和 0x0BFA0743。 

再回过头来看一下参考手册是如何描述怎么读取内部温度传感器的温度的,如图 2 所示。

2.jpg

图2. 读取温度传感器

这里描述的是如何读取内部温度传感器的温度,前面主要介绍 ADC 的配置和对温度传感器的采样,最后根据得到的数据使用公式进行计算,得到温度值。前面的 ADC 的配置和采样就不说了,我们主要来看一下公式的使用。

3.jpg

其中,

Temperature (in ℃) 就是内部传感器的当前温度结果; 

TS_DATA 为内部传感器当前温度对应的采样值; 

TS_CAL2_TEMP 为校准值 2 的温度值,TS_CAL2 为对应的采样值,对于 STM32U5来说,TS_CAL2_TEMP 为 130℃,对应的采样值存储在 0x0BFA0742 和 0x0BFA0743; 

TS_CAL1_TEMP 为校准值 1 的温度值,TS_CAL1 为对应的采样值,对于 STM32U5来说,TS_CAL1_TEMP 为 30℃,对应的采样值存储在 0x0BFA0710 和 0x0BFA0711; 

对于 STM32U5 来说,公式可简化为:

4.jpg

那么,是不是直接读取了 TS_CAL2 和 TS_CAL1,放到公式里,然后通过 ADC 得到TS_DATA,就可以直接算温度了呢?接着往下看。

2.3. 问题解决

在室温下使用 NUCLEO-U575ZI-Q 做个实验: 

读取 0x0BFA0742 和 0x0BFA0743 得到 TS_CAL2 为 0x155D,也就是 0d5469;读取 0x0BFA0710 和 0x0BFA0711 得到 TS_CAL1 的值为 0x102F,也就是 0d4143。 

此时,由 ADC1 对内部温度传感器进行采样转换,得到 TS_DATA 为 0xEAA,也就是0d3754。 

那么,如果直接放进去算:

5.jpg

室温下,这个 0.66℃显然不对。

2.3.1. 使用 ADC1 测量内部温度传感器的温度值 

再来看数据手册里对校准值的描述,如图 3 所示。

6.jpg

图3. 温度传感器校准值重要参数

这个表格有一个非常重要的参数,就是 ADC1 的参考电压,它是 3.0V,而 NUCLEOU575ZI-Q 板子的 ADC 参考电压为 3.3V。所以,这两个 TS_CAL1 和 TS_CAL2 对于NUCLEO-U575ZI-Q 中的 STM32U575ZIT6Q 的内部温度传感器肯定是不能直接用的,需要先换算为 3.3V 参考电压的值才行。 

所以,新的值计算如下: 

TS_CAL2 = 5469 × 3 / 3.3 = 4972 

TS_CAL1 = 4143 × 3 / 3.3 = 3766 

再回到刚才的实验中,计算的公式如下:

7.jpg

这次算出来的结果为 29℃就对了。

2.3.2. 使用 ADC4 测量内部温度传感器的温度值 

那对于 ADC4 是否也是一样的呢? 

首先,要知道在 STM32U5 中,ADC1 为 14-bit SAR ADC,而 ADC4 为 12-bit SARADC。同样的这块板子,同样的室温下,由 ADC4 对内部温度传感器进行采样转换得到的值是 0x3AA,也就是 0d938。 

要使用 0d938 计算温度值,TS_CAL1 和 TS_CAL2 也要相应转为 12 位的数据才行。将它们由 14 位数据转为 12 位的数据,相当于就是右移 2 位,也相当于除以 4。 

由于参考电压仍然是 3.3V,所以针对 ADC4 的 TS_CAL2 和 TS_CAL1 应该计算如下: 

TS_CAL2 :由读取到的 0x155D 右移 2 位,得到 0x557,也就是 0d1367,再换算成3.3V 的 。 

TS_CAL2 = 1367 × 3 / 3.3 = 1243也可以直接使用上面 ADC1 例子的值来计算。 

TS_CAL2 = 4972 / 4 = 1243 

TS_CAL1 :由读取到的 0x102F 右移 2 位,得到 0x40B,也就是 0d1035,再换算成3.3V 的 。 

TS_CAL2 = 1035 × 3 / 3.3 = 941 

也可以直接使用上面 ADC1 例子的值来计算。 

TS_CAL2 = 3766 / 4 = 941 

计算的公式如下:

8.jpg

算出来的结果也是 29℃。

03、小结

当我们使用芯片的内部温度传感器计算内部温度时,需注意校准值是使用哪个 ADC、在什么参考电压下得到的。当实际应用与内部温度传感器校准时所使用 ADC 及条件不一样时,应该对存储单元里的校准值先做计算转化,然后才可以使用参考手册所提供的公式进行计算,否则将会得到错误值。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 111
凝聚ST超低功耗微控制器技术精华的STM32U5于2021年问世,是一款堪称可改变游戏规则的低功耗MCU。

作为STM32高性能低功耗系列旗舰产品,STM32U5延续STM32F2/F4/F7的应用范围,同时又有更低的能耗,具有更高的性价比。在工业控制系统中,U5可以承担主控器、系统监控以及图形显示等核心职能。

1.png

高性能,低功耗,丰富的数字外设和更高性能的模拟接口,强大的安全特性,以及支持图形加速,让STM32U5在工业控制、工业表计和医疗健康,个人穿戴设备等应用领域取得良好的表现,为泛工业系统创新赋能。

在这个视觉统治一切的时代,人们对图形效果的追求永远没有止境,同时也希望实现起来更简单快速,性价比更高。“如果只需一个简单的解决方案就能设计出高端、动态的显示屏就好了。”

这就是STM32U5最新系列产品的使命所在。

意法半导体最近推出新款STM32U5微控制器(MCU) —— STM32U5F9/G9STM32U5F7/G7,集成了新的专用图形加速器,为成本敏感的小型便携产品赋予更出色的图形效果。超低功耗的STM32U5F9/G9STM32U5F7/G7集成3MB片上静态存储器(SRAM),可以为图形显示屏提供多个帧缓存区,节省了外部存储芯片。新产品还集成了ST的NeoChromVG图形处理器(GPU),能够实现的图形效果可与更昂贵的高端微处理器相媲美。

2.png

单芯片解决方案实现高级图形效果

新系列U5产品是STM32首批支持硬件加速矢量运算的MCU,能够渲染 SVG图像和矢量字体。内嵌的NeoChrom GPU帮助CPU承载了图形计算任务,释放内存并提高性能,可实现更流畅、更丰富的图形效果,比如图像旋转、Alpha透明度混合和精确视角的纹理映射等高端图效。

此外,新款MCU 还有处理 MJPEG 视频的 JPEG 编解码器。这些功能让产品开发人员可以在智能家电、智能家居控制器、电动自行车和工业终端设备中使用动态图标、支持多种不同尺寸的字体、可缩放地图、视频播放等技术,自此消费者可以期待在市场上看到更炫酷、更有趣、更直观好用的新一代便携式产品。

3.png

在片上集成先进的图形处理功能和大容量 RAM 存储器后,设计人员无需外部存储器就可以开发高性能的图形子系统,从而节省了 PCB 空间,无需片外高速信号传输。除了 3MB SRAM存储器外,片上还集成了 4MB 闪存,为代码和数据提供了充足的非易失性存储空间。

4.png

新款MCU以低成本100引脚LQFP封装,可以实现简单的4层PCB设计,避免信号布线和电磁兼容性 (EMC)引起的常见问题。

ST 授权合作伙伴 Riverdi 已经使用 STM32U5F9/G9 MCU 开发出了具有高级图形功能的新产品。Riverdi 的联席首席执行官 Kamil Kozłowski 表示:“最新的 STM32 MCU是个兼具优异的图显功能与成本灵活性的单芯片解决方案,让我们能够以更具吸引力的价格推出 5 英寸显示模块,为终端产品厂商提供专业的整体显示方案,帮助他们为自己的产品设计定制化的用户界面。我们的新型嵌入式显示器解决方案完全集成在 ST 的 TouchGFX GUI 设计框架内,客户打开显示器包装后,就可以立即着手开发自己的 UI 。”

STM32U5F9/G9STM32U5F7/G7采用先进高能效的 Arm® Cortex®-M33处理器内核,在 160MHz 频率运行时处理速度达到 240 DMIPS,ULPMark-CoreProfile (CP)测试成绩为464分。该系列MCU具有200nA 待机模式、支持部分RAM内容保留和快速唤醒功能的多种低功耗模式,运行模式下功耗仅为 16μA/MHz ,提高了优化功耗和性能的灵活性。

STM32U5产品线根据GPU功能、封装形式、存储器容量和接口配置不同提供了丰富的产品型号,以满足开发者对于实现高级图形效果的不同需求。

5.png

全面的生态系统支持

和所有其他的STM32MCU一样,ST为新款STM32U5提供全面的生态系统支持,提供成熟的STM32 外设和 IoT 硬件安全功能,以及包括软件工具、中间件、库和代码示例在内的 STM23Cube 生态系统。

ST还为支持STM32U5图形特性提供了丰富的评估和开发工具,包括探索套件STM32U5A9J-DK/STM32U5A9J-DK1,工业级探索套件STM32U5A9J-DK2,STM32 Nucleo开发板,以及由合作伙伴提供的参考设计,如Riverdi 50 STM2U599。

6.png

此外,ST经典的免费图形软件工具TouchGFX也全面支持所有ST STM32U5显示套件。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 22

01、引言

很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括 ADC 上电/掉电序列在内的所有校准动作。在这个过程中,ADC 计算出一个校准因子,并在内部应用到此 ADC 模块,直到下一次 ADC 掉电。在执行任何 ADC 操作之前必须校准,以消除芯片之间 ADC 结果的偏差。

02、问题

2.1. 问题详情

客户使用 STM32U575ZIT6Q 验证 ADC4 时,使用 STM32CubeMX 配置后生成工程项目。因为使用 ADC 进行采样转换前,必须要做 ADC 的自校准。于是在 main 函数中加入自校准代码,如图 1 所示。

1.png

图1.代码:ADC 自校准

然而,在运行代码的情况下,发现 PC 指针最后跑到这个 Calibration Error 的Error_Handler()里。也就是说,执行自校准失败了! 

再检查进入 Error_Handler()发生的问题,发现在执行HAL_ADCEx_Calibration_Start()时陷在了下面这个 Loop 当中,如图 2 所示。

2.png

图2.代码:等待 ADC 自校准完成

也就是说,ADCAL 位被置 1 后,始终没有被硬件清 0,代表自校准始终不成功。

2.2. 问题分析

查看 STM32U5 的参考手册 RM0456 中关于自校准的描述。考虑到校准没有成功,那么应该看看是不是自校准需要哪些条件,而这些条件并没有成立。 

于是,在 ADC 章节中的 Calibration 小节找到了这么一段话,如图 3 所示。

3.png

图3.ADC 自校准要求条件

也就是说,在初始化自校准之前,需要保证 3 个条件: 

1) ADC 的电压调整器已经使能并正常工作(ADVREGEN = 1 且 LDORDY =1) 

2) ADC 没有打开(ADEN=0) 

3) 自动掉电模式没有使能(AUTOFF = 0) 

回到刚才等待 ADC 自校准完成的代码,当指针停留到这边时,在线调试检查各个标志位情况,发现 ADVREGEN=1,ADEN=0,AUTOFF=0,LDORDY=0。所以,可以肯定的是就是 LDORDY 不为 1,也就是说 ADC 的电压调整器还没有准备好,导致了自校准无法成功并退出。 

在 STM32U5 中,引入了一个新的 ADC 特性,叫 ADC 电压调整器(ADC voltageregulator)。在使用 ADC 之前,这个电压调整器必须被使能并且能够稳定工作。可以通过将 ADC_CR 寄存器中的 ADVREGEN 位置 1 来使能它,然后必须要等这个电压调整器的启动时间之后,才可以正常启动自校准或者使用 ADC。这个 LDO 有没有准备好,可以通过 ADC_ISR 寄存器中的 LDORDY 这个位来判断。LDORDY=1 才代表了 LDO 已经准备好了。 

回到客户的问题,可以知道即使 ADVREGEN 置 1 了,LDORDY 始终没有置起来,电压调整器没有启动工作,难道是 ADC 的这个电压调整器坏掉了? 

别急,想到电源的问题,还不能忘了参考手册的另一个章节 :电源控制 PWR。翻到PWR 这一章,先要考虑到,与 ADC 相关的电源为 VDDA,所以要重点查看 VDDA 的内容。找到 Independent analog peripherals supply 这一小节,可以看以下关键的句子,如图 4。

4.png

图4.独立的模拟外设供电

从图中黄色高亮的文字,我们可以了解到,STM32U5 的 VDDA 在控制上还跟其他系列不一样,它有一个开关来选择是否隔离。芯片复位后,VDDA 提供的 ADC 和模拟开关控制在逻辑和电气上是隔离的,因此不可用。一旦 VDDA 电源存在,就必须在使用模拟外设之前,通过在 PWR_SVMCR 寄存器中将 ASV 置位来消除隔离。也就是说,要想使用ADC,必须先将 ASV 置位来消除隔离。 

在 PWR_SVMCR 寄存器的解释中,也可以看到 ASV 位的描述中要求将此位强制置 1才可以使用模拟外设,如图 5。

5.png

图5.ASV 位描述

ASV 的配置是没有在 STM32CubeMX 中进行配置的,所以需要在后期添加。所以,很可能就是因为没有将 ASV 置位以使能 VDDA,导致 ADC 外设被隔离,并没有得到供电,所以 ADC 的电压调整器不可能正常工作,LDORDY 也不可能为 1。

03、问题解决

在工程项目中搜索 ASV,可以找到两个 API,如图 6。

6.png

图6.VDDA 使能或禁用 API

也就是说,我们需要先将 HAL_PWREx_EnableVddA()添加到代码中。因为其属于MSP 硬件配置,所以将其加到 HAL_MspInit()函数,如图 7 所示。

7.png

图7.修改过的 HAL_MspInit()函数

再重新编译,然后执行指令代码,就可以看到 ADC 的自校准可以正常完成,PC 指针已经可以正常跑到自校准后面的代码了。

04、小结

在 STM32U5 中,为了更好地控制功耗,ADC 中加入电压调整器和 VDDA 隔离功能。这与以往的 STM32 有所不同,需要注意一下。使用 ADC 等模拟外设前,需要注意将PWR_SVMCR 寄存器中将 ASV 置位来消除隔离。 

其实不仅仅是 VDDA 可以隔离,VDDIO2 也是可以的,通过 PWR_SVMCR 寄存器的IO2SV 位进行控制。

如果仔细看过 STM32U5 的 ADC 例程,可以看到 HAL_MspInit()的内容是这么写的,如图 8 所示。

8.png

图8.例程的 HAL_MspInit()函数

可以看到,在 MSP 初始化里,不仅使能了 VDDA,还使能了 VDDIO2。所以要使用VDDIO2 相关 I/O 的,也需要注意一下。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 101

01、简介

客户使用 STM32U5 进行开发,并使能了 TrustZone 架构,程序需要从 bootloader 跳转到app。在之前版本都是正常跳转的,某一天 IAR 从 9.20 升级到 9.30 后,程序跳转失败,并且会导致 hardfault,想知道为什么会失败。

1.png

图1.IAR9.20 和 IAR9.30 生成的汇编代码对比

02、问题分析

通过断点和单步调试,我们发现出现问题的指令如下所示:

2.png

图2.程序下一步将 Hardfault

而没有发生 hardfault 的版本汇编代码,如下图:

3.png

图3.程序不会发生 Hardfault

通过单步调试,我们知道了 VLSTM SP 这条指令导致了 hardfault。接着我们再确认下 SP 指针,错误版本的 SP 的内容为:0x300020b4,正确版本的 SP 内容为:0x30000258。首先,我们对比了生成的 map 文件中 stack 的地址信息,发现其中 Stack 的地址和这里 SP 指令是相符的。

然后继续查找了 VLSTM 这条指令相关的描述,关于 VLSTM 在 PM0264 中有以下描述:

4.png

图4.关于 VLSTM 指令

从上图可以看到,VLSTM SP 这条指令会把安全的浮点运算寄存器的值保存到 SP 地址中,并清除安全浮点寄存器的内容,如果 CPU 的状态是非安全的,那么这条指令相当于空指令,也不会导致 hard fault,所有从这里也还是分析不出为什么会导致 hard fault。

重新回到这条指令,现在问题可能比较大的就是 SP 的地址了。有问题的版本的 SP 内容为:0x300020b4,会不会是对齐导致的呢? 

基于这个猜测,我们直接在 IAR 界面强制修改了 SP 的地址为 0x300020b8,并继续单步执行,然后程序可以正常执行了。所以目前所知的结论就是 VLSTM SP 这条指令,要求 SP 必须 8 字节对齐,可能 IAR 在编译的时候并没有注意到这一点。

然后,把这些信息反馈到 IAR 以后,IAR 的工程师回复如下: 

根据目前的信息,问题应该是在 VLSTM 要求 8 字节对齐上。在 9.30.1 中,由于 PUSH.W {R4, R5, R7-R11}指令执行后,相当于占用了 28 个字节的栈空间,导致了 SP 和 9.20.1 相比,不是 8 字节对齐。

03、总结

在调试 TrustZone 工程的时候,由于使用了新的架构及新的汇编指令,需要对这些指令有一定基本的了解。在调查问题的时候,可以进行单步调试来定位发生问题的指令,然后再继续深入了解下为什么会导致 hardfault。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 22

✦ Ajax Systems已使用 新STM32U5 MCU开发下一代无线安保和智能家居解决方案

✦ 新STM32U5系列MCU是首款获得NIST嵌入式随机数熵源认证的通用MCU

意法半导体市场前沿的STM32 微控制器(MCU)产品家族再扩阵容,推出新款STM32U5芯片,在降低功耗的同时提高了性能,并延长了续航时间,提升了能效。STM32U5产品已获得NIST嵌入式随机数熵源认证,是业界首款获此认证的通用MCU。

1.png

这款STM32U5 MCU将代码和数据存储容量扩展到128Kbyte闪存,适合成本敏感型应用,同时还针对复杂应用和类似智能手机的复杂用户界面增加了高容量版。集成4Mbyte闪存和2.5Mbyte SRAM的 STM32U59x/5Ax是迄今为止STM32 MCU全系产品中片上存储器容量最大的产品。

凭借增强的功能,新STM32U5 MCU能够有效为深度嵌入式应用赋能,如环境传感器、工业执行器、楼宇自动化、智能家电、可穿戴设备、电动汽车控制等,尤其是安装在远端、难于检修位置的设备。随着智能工作和智能生活方式在全世界的不断发展,深度嵌入式设备在这些领域的部署量已达数十亿。新STM32U5 MCU通过提升这些应用的性能、能效和网络安全性,加快推进深度嵌入式设备的部署。

全系STM32 MCU都基于行业标准的Arm® Cortex®-M 嵌入式处理器内核,并配备功能强大易用的STM32CubeSTM32Cube.AI开发生态系统。该生态系统整合软硬件开发工具,从项目开始到结束全程支持客户开发工作,包括将提前训练好的神经网络转换为优化的代码,以创建前沿的 AI/ML 解决方案。

2.png

STM32U5系列采用Arm最新一代嵌入式处理器内核Cortex-M33,该内核采用了可提升性能、能效、网络和硬件攻击防御能力的先进技术。意法半导体围绕这个处理器核将ST的超低功耗 MCU 专业技术整合进来,并利用Arm现有方法实现了一个网络安全性极高的架构。该系列中的部分产品还提供 2.5D 图形加速器。因此,这一新系列产品极具开创性,全系产品都引脚对引脚兼容,软件兼容,可以直接用于设计下一代应用。

意法半导体通用微控制器子产品部执行副总裁 Ricardo De Sa Earp表示:“许多应用都需要更多的功能、更丰富的图显和更快的性能,同时要求续航时间更长、电池更小,有能量收集功能,这就是我们今天扩展STM32U5系列的原因。这款 MCU将Arm最新的处理器内核与我们独有的超低功耗技术、大容量的片上存储器,以及NeoChrom 图形引擎(选配)整合在一起,以提升用户的视觉体验。”

在意法半导体STM32U5 系列的众多客户中,Ajax Systems已经在使用这款新的MCU 设计下一代高级无线安全和智能家居解决方案。Ajax设备部门研发总监 Max Melnyk表示:“与全球半导体市场巨头ST合作可以帮助Ajax的产品升级迭代。STM32U5 系列显著降低了功耗,同时保持了原有的处理性能,可媲美其他内置DSP和浮点协处理器MCU。我们现有代码的90%都可以二次使用。片上集成大容量SRAM对于我们是第二大优势,足以处理双帧缓冲需求,实现快速流畅的图显性能。新系列产品还有一个大容量闪存,可以用于保存资源。我相信新系列产品将加速推进下一代 Ajax 产品的开发。”

详细技术信息

STM32U5系列的专有节能特性包括自主外设和意法半导体的低功耗后台自主模式(LPBAM)。LPBAM模式可以让应用程序的关键功能保持正常运行的同时,关闭处理器内核和其他未用模块,进入 MCU中的任何一个灵活省电的低功耗模式。MCU可以把内核从低功耗状态快速唤醒,高效处理批量数据,然后再切回到低功耗模式。

另一方面,STM32U5 MCU 提供高达 4MB 的代码闪存和数据闪存,以及高达 2.5MB 的 SRAM,用于处理复杂的应用需求。大容量片上存储器可以在应用设计中省去额外的外部存储器,降低功耗、物料成本 (BOM) 成本和 PCB 尺寸。

STM32U5系列还打破了超低功耗 MCU图形处理性能的常规限制。意法半导体的先进微控制器集成NeoChrom图形处理单元(GPU),可以运行以前只有昂贵的基于微处理器的系统才能实现的复杂的图形用户界面(GUI)。现在,即使微型嵌入式处理器也能实现媲美智能手机的图显体验,开发者可以利用ST的TouchGFX框架开发GUI,该框架现在支持 SVG并具有丰富的图形资产。

此外,STM32U5 MCU采用经济的LQFP100封装,可以安装在层数不多的结构简单的PCB上,而支持这些复杂功能的处理器通常都需要更昂贵的封装。STM32丰富的资源可以帮助开发人员加快项目开发,包括STM32CubeU5软件包、新的开发板 NUCLEO-U545RE和 NUCLEO-U5A5ZJ,以及于图形界面的STM32U5A9J-DK 探索套件。

STM32U5 系列还增强了网络安全性,采用带有内存保护单元的 Cortex-M33 和具有硬件隔离功能的 Arm TrustZone® 架构。该系列微控制器还集成了运行高级 AES 算法的加密加速器、公钥架构 (PKA) 支持,以及物理攻击防御功能。此外,闪存和 SRAM 支持纠错码 (ECC),可防止数据损坏,增强网络保护和数据安全性。

除此之外,STM32U5还是第一批获得NIST(美国国家标准与技术研究院)嵌入式随机数熵源认证的通用MCU。客户可以重复使用该证书,因此可简化并加速终端应用的SP800-90B认证过程。新STM32U5系列计划于 2023 年第二季度开始量产,客户可从意法半导体的eStore和代理商处购买。询价请联系当地ST销售办事处。

▼▼▼

点击这里,查看详情


来源:意法半导体中国

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 27

页面

订阅 RSS - STM32U5