打印
[应用相关]

实战经验 | 如何操作BlueNRG LPLPS芯片内的OTP区域

[复制链接]
91|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 STM新闻官 于 2025-4-20 01:42 编辑

01背景介绍BlueNRG系列芯片是意法半导体推出的一系列超低功耗的可编程Bluetooth®低功耗无线SoC解决方案。
芯片内嵌了意法半导体先进的2.4 GHz RF射频IP,结合了无与伦比的性能和超长电池寿命。支持点对点连接和Bluetooth™ Mesh网络,允许以可靠的方式建立大规模设备网络。BlueNRG系列芯片还适用于2.4 GHz专有无线通信,支持超低延迟应用。
从BlueNRG LP开始到后续的BlueNRG LPS及目前最新STM32WB09(之前称为BlueNRG-LPF),芯片内置一个1K字节的OTP区域。
地址空间从0x10001800~0x10001BFF。
如用户的产品设计中会用到Secure bootloader功能(关于Secure Bootloader功能请参见相关LAT文档或ST提供的关于芯片UART bootloader的官方应用笔记),则Secure bootloader功能会使用到OTP区域。
如用户的产品设计中不会用到Secure bootloader功能则OTP区域可以用来存储客制的固定数据。
这一点也恰恰是很多用户在评估BlueNRG LP/LPS系列方案时提出的问题,本文档的目的就是为说明目前ST提供的如何操作(读写)OTP区域的方式方法,解答此类问题。


02相关资源介绍
2.1. RF-Flasher Utility工具

要对BlueNRG LP/LPS中的OTP区域进行读写,首先需要安装ST提供的上位机软件RF-Flasher Utility工具。该工具主要用于代码烧录,目前从ST官网上可下载的最新版本为4.3.5。
请注意:
  • RF-Flash Utility的最初版本是不支持对OTP区域的读写操作的,所以请尽量从官网上下载最新版本。
  • 目前安装完成4.3.5版本后,其安装目录下附带的用户手册(UM2406)中还没有包含对OTP读写功能的相关说明,但实际上对应的功能已经包含了。
  • RF-Flash Utility工具包含两个部分:

  • 一个是GUI界面工具“RF-Flasher_GUI.exe”,其中只支持OTP区域内容的读取操作。
  • 一个是命令行工具“RF-Flasher_Launcher.exe”,通过命令行工具可以实现对OTP区域的读写。该命令行工具也是本文档介绍的重点。




图1. RF-Flasher Utility官网截图


2.2. OTP区域介绍

OTP的意思是One Time Programmable,也就是只能写一次,不能像Flash ROM那样擦除后重写。OTP存储区域位于地址空间:0x10001800~0x10001BFF,占1K字节空间。OTP读写操作是按“字”(Word,4字节)为单位进行的。用户将OTP的最后4个字节(起始地址为0x10001BFC)写入非0xFFFFFFFF的任意值后系统复位,可以保护OTP中的内容不会被再次更改(即单BIT从1到0的更改)。


2.3. 芯片内置的Bootloader程序

BlueNRG LP/LPS系列芯片在出厂前都会预烧录一个UART bootloader程序,使用RF-Flasher Utility工具对BlueNRG系列芯片进行的操作都需要UART bootloader程序的配合,对于OTP的读写操作也是同理,所以在用户在进行OTP读写操作前必须保证芯片当前运行在UART bootloader状态。
将芯片置于运行UART bootloader状态的方法是,将BlueNRG-LP/LPS的PA10引脚强制拉高后再复位芯片。在ST提供的评估板上,用户按照如下操作方法也可方便地将芯片置于UART bootloader状态:
  • 同时按住PUSH1和RESET按钮
  • 释放RESET按钮
  • 释放PUSH1按钮

确认芯片是否处于UART bootloader运行状态的方法是通过串口给芯片发送单字节数据“0x7F”,如果芯片返回单字节数据“0x79”,则证明芯片已处于UART bootloader运行状态。


03OTP操作命令解析

3.1. 调用RF-Flasher Launcher工具


打开Windows命令行工具窗口,进入到RF-Flasher Utility按照目录下的Application子目录后运行命令“RF-Flasher_Launcher.exe-h”,如下图2中帮助信息会列举出所有支持的命令行工具命令。可以看到版本4.3.5已经支持了“read_OTP”和“Write_OTP”命令。注意这两个命令只支持SWD模式的读写操作。




▲图2. RF-Flasher_Launcher.exe帮助信息
进一步运行“RF-Flasher_Launcher.exe read_OTP-h”或“RF Flasher_Launcher.exe write_OTP-h”可以进一步打印出“read_OTP”和“write_OTP”的参数信息。


3.2. “read_OTP”和“Write_OTP”命令参数说明

-h,--help:打印相关命令的帮助信息。-all,--all:列举出所有连接的设备的ID,包括通过串口连接的设备的串口号或通过SWD口(ST-Link,CMSIS-DAP或JLINK)连接的设备ID号。这些串口号或ID号用于标识对应的设备。-d DEVICE_ID,--device DEVICE_ID:通过串口号或ID号指定要操作的目标芯片。
-address OTP_ADDRESS,
--address TOP_ADDRESS:设定读写操作的起始地址。-num NUM,--number NUM:指定要读写的字(Word,4字节为单位)的数量,默认值为256,即覆盖整个OTP区域。-frequency/--frequency{5,15,25,50,100,125,240,480,900,1800,4000}:指定SWD口的通讯速率,对于串口连接方式无效。默认值为4000。-s,--show:读操作完成后,打印出OTP区域的内容。-l,--log:是否将打印信息存储到log文件中。-verbose/--verbose{0,1,2,3,4}:打印信息中debug信息级别,只对SWD方式和log有效。
-value OTP_VALUE,--value OTP_VALUE:写操作中指定要写入OTP的值。


04实操举例
本实操举例中只使用一块BlueNRG-LP的评估板作为目标板来实现对OTP区域的读写操作。该评估板OTP区域初始内容为全“0xFF”,我们尝试对OTP起始地址0x10001800开始的第一个字进行读写操作。由于BlueNRG-LP评估板上板载有CMSIS DAP调试工具,所以连接方式选用的是SWD口方式。


具体步骤如下:通过Windows命令行工具,调出“RF-Flasher_Launcher.exe”。
执行命令“RF-Flasher_Launcher.exe  swd”,打印出当前连接的PC端的所有目标板。

如下图3中,只有一个连接的设备,打印出对应CMSIS-DAP调试设备的ID号。

▲图3. 显示连接的设备

第一次执行命令“RF-Flasher_Launcher.exe read_OTP-d 07200001066bff383930545043203530a5a5a5a597969908”,通过参数“-d”指定目标设备,运行“read_OTP”,读取OTP内容。这里未通过参数“-num”指定要读取多少个字,由于默认值为256,所以读取了整个OTP区域的值。从读取结果可以看到地址0x10001800处的当前值为0xFFFFFFFF。

▲图4. 第一次读回OTP初始内容

第一次执行命令“RF-Flasher_Launcher.exe write_OTP-d 07200001066bff383930545043203530a5a5a5a597969908-value 0x11223344-address 0x10001800-l”,命令运行写OTP操作,通过参数“-value”指定要写入的字的值,通过参数“-address”指定要写入的地址。必须通过log信息确认该写操作是否执行成功。


▲图5. Write_OTP操作
第二次执行命令“RF-Flasher_Launcher.exe read_OTP-d 07200001066bff383930545043203530a5a5a5a597969908”,读回OTP内容以确认前一步中数据是否成功写入。如下图6,发现OTP起始地址内容已更改为0x11223344,说明前面的写操作成功。

▲图6. 第二次读取OTP内容
第二次执行命令“RF-Flasher_Launcher.exe write_OTP-d 07200001066bff383930545043203530a5a5a5a597969908-value 0x11225544 -address 0x10001800-l”,对相同地址执行写操作,写入值更改为0x11225544,并确认写成功。
第三次执行命令“RF-Flasher_Launcher.exe read_OTP-d 07200001066bff383930545043203530a5a5a5a597969908”,读回OTP内容。发现OTP其实地址处值为0x11221144,而非第二次要写入的0x11225544。此处操作证明在OTP没有锁定的情况下,后续的写操作还可以继续更改OTP中的内容,但只限于将比特值为“1”的内容改写为比特值为“0”。

▲图7. 第三次读取OTP内容
05小结
当用户需要在其产品设计中使用到BlueNRG LP/LPS等系列芯片内置的OTP来存储其客制数据的时候,可以采用本文档所述方法实现。用户在访问OTP时,必须保证芯片处于UART bootloader模式。
▼▼▼

点击按钮下载《如何操作BlueNRG LPLPS芯片内的OTP区域》原文档。点击下载
相关阅读






使用特权

评论回复
沙发
STM新闻官|  楼主 | 2025-4-20 01:42 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

1276

主题

1490

帖子

20

粉丝