[STM32H5] 实战经验 | STM32H5读取温度传感器校准值时进HardFault的原因分析

[复制链接]
3983|10
 楼主| STM新闻官 发表于 2024-2-28 11:24 | 显示全部楼层 |阅读模式
本帖最后由 STM新闻官 于 2024-2-28 14:11 编辑

一、前言
有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证说明进入 HardFault 与 ICACHE 相关,如果直接关闭ICACHE 虽然可以解决进入 HardFault 的问题,但势必会影响代码执行的效率。所以,我们希望能找到一种更好的方式去处理此问题。

二、问题分析
经 Datasheet 查询,两个温度传感器校准值 TS_CAL1 和 TS_CAL2 的地址分别为 0x08FF F814-0x08FF F815 和 0x08FF F818-0x08FF F819。
6494065deb02b38e82.png
根据下表,可以知道 TS_CAL1 和 TS_CAL2 是属于 Read-only 区域的,而 Read-only 区域是通过 AHB system bus 访问的。
457465deb0337ec41.png
5606065deb0392a1bd.png
根据参考手册的描述,所有的 AHB memory 默认都是 cacheable 的,对于无法实现缓存的区域(OTP、RO、data area),必须使用 MPU 来禁用本地缓存。
5510365deb043d3135.png
也就是说,不仅是 TS_CAL1 和 TS_CAL2,其实整个 OTP、RO(Table 39)、data area区域的访问都无法经过 Cache,需要使用 MPU 将其配置为 none-cacheable 属性。

既然知道了问题所在,那剩下的问题就是确定 OPT、RO、data area 各个区域的地址,data area 是由用户选项字节配置的可进行 100k 次擦除的区域,用于存储用户掉电不丢失的数据,需要根据实际的配置去设置 MPU 区域。剩下的就是 OPT 和 RO 区域,在 STM32H563 中,分别有 2K byte。
9185965deb0513eb5b.png
OTP 的地址为[0x08FF F000-0x08FF F7FF]和 RO 的地址为[0x08FF F800-0x08FF FFFF],两个地址其实是连续的。
7699665deb05c30498.png

三、解决方法
经上述分析后,我们只需要把[0x08FF F000-0x08FF FFFF]这段地址区域设置为 none cacheable,通过 CubeMX 进行配置。
8454465deb0a5b9e18.png

5314965deb0bb9e992.png
经 MPU 配置 OTP 和 RO 的内存访问属性后,就可以正常去读取温度传感器校准值了,同时属于这两个区域的其他值,如 UID、Flash Size、Package 等信息也能正常读取了。

7439465deb0d1aa455.png

四、总结

温度传感器校准值及 UID 等一些信息在 H5 中属于只读区域,而这个区域在 AHB 访问时,默认内存属性为 cacheable,需要通过 MPU 把这些区域设置为 none-cacheable,才能正常访问。每个系列的芯片架构都或多或少有差别,当按以往经验操作不能实现功能时,不妨对照相应芯片的数据手册、参考手册、应用笔记、甚至勘误手册,也许就能发现问题所在。

 楼主| STM新闻官 发表于 2024-2-28 14:12 | 显示全部楼层
zwsam 发表于 2024-2-29 08:56 | 显示全部楼层
mmuuss586 发表于 2024-2-29 09:48 | 显示全部楼层
感谢分享
技术工程师 发表于 2024-3-4 14:35 | 显示全部楼层
谢谢分享,学到了
中国龙芯CDX 发表于 2025-2-9 15:07 | 显示全部楼层
非常不错的应用
Zuocidian 发表于 2025-2-12 21:57 | 显示全部楼层
作为STM32F4的升级版,STM32H5在性能上有了显著提升,适用于需要高性能计算和控制的应用场景
Puchou 发表于 2025-2-13 08:03 | 显示全部楼层
STM32H5系列提供了多种不同容量的Flash版本(2MB、1MB、512KB、256KB、128KB),以及丰富的外设和内存配置,满足不同客户和应用场景的需求
Xiashiqi 发表于 2025-2-13 11:01 | 显示全部楼层
STM32H5是首款内置硬件ST iROT(隔离式信任根)的MCU产品,符合SESIP3和PSA 3级认证,能够有效保护系统免受物理和远程攻击
小海师 发表于 2025-2-13 13:02 | 显示全部楼层
STM32H5系列特别适用于在小型显示器上实现中端GUI,支持SPI串口屏和FMC并口屏,最高分辨率可达480*320
Haizangwang 发表于 2025-2-13 15:12 | 显示全部楼层
H5通过12种封装(25到176个引脚)提供众多产品型号,并支持高达125°C的工作环境温度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

1385

主题

1669

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部