本帖最后由 muyichuan2012 于 2024-11-13 19:54 编辑
AT32 FLASH OTP(one time programmable)应用笔记
雅特力官网下载地址:https://www.arterytek.com/file/download/2325
前言
这篇应用笔记描述了怎么使用AT32系列MCU的OTP(one time programmable)。OTP分为DATA和LOCK两部分,一个LOCK数据对应着多个DATA数据,两部分的数据都不可擦除,LOCK区写入0x00后其对应的DATA区数据被锁定不可再写入。
参考资料:
RM 文档的FLASH 章节
注:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要注意使用上的区别。
支持型号列表:
支持型号 支持OTP 功能的系列
目录
OTP 功能介绍 .......................................................................................................... 5
应用实例 .................................................................................................................. 6
代码操作OTP ........................................................................................................... 6
功能简介 ....................................................................................................................... 6
资源准备 ....................................................................................................................... 6
软件设计 ....................................................................................................................... 6
实验效果 ....................................................................................................................... 6
工具操作OTP ........................................................................................................... 6
在线操作 ....................................................................................................................... 6
离线操作 ....................................................................................................................... 8
1 OTP 功能介绍
AT32各个型号的OTP功能以及操作方式基本相同,下面以AT32M412为例,介绍OTP功能以及操作方式。
OTP的DATA与LOCK区都不可擦除,其操作方法,包括读取、解锁、编程都跟主存储器相同。
每32字节DATA对应1字节LOCK,当LOCK字节被写为0x00时,该32字节DATA无法再写入。
OTP与LOCK同样有访问保护,请参照RM中的表闪存访问权限。
表1. AT32M412 DATA 与LOCK 对应关系
2 应用实例
下面介绍了OTP的应用实例,分别演示如何通过代码以及ISP、ICP及ATLink等工具操作写指定的OTP DATA区域,并且锁定该区域。代码实例的工程代码可以在BSP软件包的AT32M412_416_Firmware_Library_V2.x.x\project\at_start_m412\examples\flash中获取到。
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
2.1 代码操作OTP
功能简介
程序中调用flash_otp_data_program()函数写OTP DATA数据,然后调用flash_otp_lock_enable()函数对该区域的OTP DATA数据进行锁定。
注意:因为OTP区域无法擦除后重复操作,所以该程序只能执行运行一次!
2.1.2 资源准备
1) 硬件环境:
AT-START-M412 BOARD
2) 软件环境
AT32M412_416_Firmware_Library_V2.x.x\project\at_start_m412\examples\flash\otp_write_and_lock
2.1.3 软件设计
1) 配置流程
解锁flash
写OTP DATA数据
写OTP LOCK,锁定OTP DATA
2.1.4 实验效果
从指定地址OTP DATA区域读取的数据跟写入的数据对比,如果相同,并且操作对应OTP LOCK锁定该DATA区域成功,则点亮3个LED灯。
2.2 工具操作OTP
使用雅特力提供的ISP、ICP烧录工具可以操作OTP,AT-Link还支持跟工程文件一起离线操作OTP。
2.2.1 在线操作
ISP、ICP(仅支持AT-Link)可以通过界面在线操作OTP,Flash info界面加载连接芯片的OTP信息,DATA及LOCK状态都能直接显示。
图1. 加载芯片OTP 数据界面
File Untitle界面用于配置、保存、加载参数文件,以及在线操作OTP,如下
图2. 配置芯片OTP 数据界面
各个按键功能描述如下表:
表2. OTP 配置页面按钮说明
2.2.2 离线操作
AT-Link离线配置项目文件时,可以配置OTP,跟程序代码一块烧录,勾选Write OTP data,然后加载电脑端的后缀名.attp的OTP参数文件即可
图3. AT-Link 离线配置OTP 数据
|