OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6106|回复: 1

OTP写数据失败,提示写保护

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-7-7
在线时间
1 小时
发表于 2015-7-9 15:09:01 | 显示全部楼层 |阅读模式
5金钱

读写OTP区域,按照中文手册先写00到BLOCK0的LOCK位,再写BLOCK

读LOCK位发现已经成功清0,但是读BLOCK发现没能成功写入,读到全F,追踪代码 写入OTP数据后 FLASH->SR 的FLASH_FLAG_WRPERRbit为1 ,即写保护  

请教下:

1,为何写保护?   查看手册,写保护原因以下

[mw_shl_code=c,true]If a program operation is requested, the WRPERR bit is set when: ? A write operation is performed on system memory or on the reserved part of the user specific sector. ? A write operation is performed to the user configuration sector ? A write operation is performed on a sector write protected by option bit. ? A write operation is requested on an OTP area which is already locked ? The Flash memory is read protected and an intrusion is detected.[/mw_shl_code]
第一/二/三条不符合, 第四条我已经清0。第五条不太明白,但是我可以写LOCK位,不能写OTP BLOCK,似乎也不像是这原因。


2,应当如何正确操作


代码如下

[mw_shl_code=c,true]#define OTP_BLOCK_BASE 0x1FFF7800 #define OTP_LOCK_BASE 0x1FFF7A00 STMFLASH_Write(OTP_LOCK_BASE,0x00000000,1); STMFLASH_Write(OTP_BLOCK_BASE,0x1a2b3f4d,1);// 没写成功 STMFLASH_Read(OTP_LOCK_BASE,(u32*)datatemp,1);//读到0 之前读是0xffffffff说明成功了 STMFLASH_Read(OTP_BLOCK_BASE,(u32*)datatemp,1);//一直是0xffffffff SR的写保护有问题 [/mw_shl_code]


  移植的原子大神的代码,大家帮忙看看哈

最佳答案

查看完整内容[请看2#楼]

英文不好被调戏了,0xff可写,0x00上锁。 Each OTP data block can be programmed until the value 0x00 is programmed in the corresponding OTP lock byte.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-7-7
在线时间
1 小时
 楼主| 发表于 2015-7-9 15:09:02 | 显示全部楼层

英文不好被调戏了,0xff可写,0x00上锁。

Each OTP data block can be programmed until the value 0x00 is programmed in the corresponding
OTP lock byte.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 20:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表