摘要

本文快速介绍了 STM32N6 的 OTP 位是什么以及如何对其进行编程。内容包括关于配置 OTP124 的分步说明和解释,通过 STM32CubeProgrammer 软件,OTP124 负责将 VDDIOs 的电压从 3.3V 更改为 1.8V。这使得 STM32N6570-DK 开发板能够在连接外部存储器时达到标称速度。

简介


STM32N6 系列微控制器使用一次性可编程(OTP)存储器来设置各种配置参数,范围从硬件配置到安全特性。OTP 位由启动和安全控制(BSEC)进行读取或编程。其完整描述可在参考手册0486 的表 18 - 20 “OTP 熔丝描述” 中找到。

在这些 OTP 位中,可以配置 STM32N6 的独立 VDDIOx 电压电平。可以为 VDD、VDDIO2、VDDIO3、VDDIO4 和 VDDIO5 配置特定的 I/O 电压设置,支持 3.3V 或 1.8V。I/O 范围不连续,当在 1.8V 范围内使用时,应使用 OTP 进行设置以达到其标称速度。对于 STM32N6570-DK 开发板就是这种情况,其外部存储器连接到 1.8V,但 VDDIO2 和 VDDIO3 的默认 OTP 设置为 3.3V。

本文提供了关于如何在 STM32N6570-DK 开发板上对 STM32N6 微控制器的 OTP124 进行编程的分步指南。特别关注第 15 位和第 16 位,它们分别对应 VDDIO3 和 VDDIO2。编程使用 STM32CubeProgrammer 软件完成。通过遵循本指南,您将全面了解该过程,并确保这些关键设置的正确配置。

1. 硬件和 OTP 熔丝

STM32N6570-DK 开发板使用 1.8V 电压的外部存储器,相关的 I/O 口应从默认的 3.3V 通过固件或软件以及 OTP 进行配置,以达到标称速度。
请注意,当 VDDIOx 处于 3.3V 范围时设置 HSLV_VDDIOx 和 VDDIOxVRSEL 位会损坏器件。
开发套件硬件上的相关电源连接如下所示:



这意味着:

  • XSPIM_P2 NOR 闪存(8 位)→连接 VDDIO3
  • XSPIM_P1 PSRAM(16 位)→连接 VDDIO2

OTP124 位反映了 I/O 域的电压电平,如参考手册中的表格所示:

在固件层面,PWR_SVMCR3.VDDIOxVRSEL 寄存器位必须与 OTP 字 124 的位一致,因此在使用 VDDIO2 I/O 口之前必须执行以下步骤:
如果 VDDIO2 与 VDD 独立:

  1. a) 通过设置 PWR_SVMCR3 中的 VDDIO2VMEN 位来使能 VDDIO2VM。
  2. b) 等待 VDDIO2VM 唤醒时间。
  3. c) 等待直到 PWR_SVMCR3 中的 VDDIO2RDY 位被置位。
  4. d) (可选)为节省功耗,禁用 VDDIO2VM。
  5. e) 如果 VDDIO2 处于 1.8V 范围:通过设置 PWR_SVMCR3 中的 VDDIO2VRSEL 位来设置 VDDIO2 电压范围。
  6. 设置 PWR_SVMCR3 中的 VDDIO2SV 位以去除 VDDIO2 电源隔离。

对于 VDDIO3 I/O 口,必须使用同一寄存器中的相应位执行相同的步骤。

2. OTP 熔丝编程

开发板应处于开发模式,以便连接到 STM32CubeProgrammer 软件并对开发板进行编程。要确保开发板处于开发模式,请按照以下步骤操作:

  1. 通过将 BOOT0 设置为低电平,BOOT1 设置为高电平,将启动配置设置为开发启动(DEV BOOT)。
  2. 将 USB Type-C® 电缆连接到您的电脑。

连接到 USB 后,打开 STM32CubeProgrammer 软件,然后点击 [连接]:

现在,转到 OTP 选项卡,然后点击 [读取] 按钮以刷新所有值。

之后,将 OTP124(HCONF1)编辑为 0x0001 8000,

           将 HSLV_VDDIO3(第 15 位)和 HSLV_VDDIO2(第 16 位)设置为 1。

点击 [应用] 以更新对 OTP 的修改。

STM32CubeProgrammer 软件部分的示例到此结束。现在,您可以再次读取 OTP 以验证 OTP124 是否已更改。

同样的过程也可以通过固件来执行。意法半导体提供的 STM32N6 HAL 驱动程序中包含了一个示例。

在完成 OTP 更改后,最后需要做的一步是确保固件能够利用这一更改。这可以通过几个函数调用来实现:

/* 设置用于优化IO速度的PWR配置 */
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWREx_EnableVddIO3();
HAL_PWREx_ConfigVddIORange(PWR_VDDIO3, PWR_VDDIO_RANGE_1V8);
HAL_PWREx_EnableVddIO2();
HAL_PWREx_ConfigVddIORange(PWR_VDDIO2, PWR_VDDIO_RANGE_1V8);

开发套件的模板实现了 OTP 检查。接下来是时钟配置,以达到外部存储器的最大频率(200 MHz)并将 VDDIO3 配置为 1.8V。该示例可以在以下位置找到:STM32CubeN6/Projects/STM32N6570-DK/Templates/Template_FSBL_XIP(位于 STM32CubeN6 项目的主分支下,意法半导体官方仓库),具体在 stm32n6xx_hal_msp.c 文件中的 HAL_XSPI_MspIni () 函数内。

结论
在本文中,我们探讨了如何对 STM32N6 微控制器中的 OTP 熔丝进行编程,特别关注了 OTP124 的第 15 位和第 16 位,它们分别对应 VDDIO3 和 VDDIO2。通过根据特定的电压设置和约束调整硬件,能够确保嵌入式应用程序的最佳性能和可靠性。

Logo

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

更多推荐