21ic问答首页 - CW32L010使能读保护后标志位不正确
CW32L010使能读保护后标志位不正确
本帖最后由 精灵魔仙 于 2025-5-20 08:16 编辑
手头测试的是TSSOP20,使用官方库 void FLASH_SetReadOutLevel(uint16_t RdLevel) 设置为 FLASH_RDLEVEL1,系统会自动重启,但是重启后使用FLASH_GetReadOutLevel()读取值还是为0,查看是读取的 FLASH_CR1.SECURITY。
使能 FLASH_RDLEVEL1 后,尽管标志位FLASH_CR1.SECURITY为0,但是看起来读保护是起作用的,此时使用SWD无法写入,通过ISP下发0x30清除读保护后,可以继续SWD写入。
手头测试的是TSSOP20,使用官方库 void FLASH_SetReadOutLevel(uint16_t RdLevel) 设置为 FLASH_RDLEVEL1,系统会自动重启,但是重启后使用FLASH_GetReadOutLevel()读取值还是为0,查看是读取的 FLASH_CR1.SECURITY。
使能 FLASH_RDLEVEL1 后,尽管标志位FLASH_CR1.SECURITY为0,但是看起来读保护是起作用的,此时使用SWD无法写入,通过ISP下发0x30清除读保护后,可以继续SWD写入。

问答
赞0
不能读取Flash内容,如果48th读保护确定是1的话。
评论
2026-07-24
赞0
我也遇到这个限制问题,请教 最后一次设置了读保护0x01,后面再执行全片擦除,烧录之后 还能读取flash内容吗?
评论
2026-07-23
赞0
评论
2025-05-28
赞0
评论
2025-05-28
赞0
评论
2025-05-24
赞0
居然还有一个读保护的操作有效次数限制呀,这个问题要是不问技术支持,估计一时半会还真想不到
评论
2025-05-22
@精灵魔仙 其他行业不清楚,反正软件开发过程中会经常踩坑,特别是刚接触新MCU芯片的时候,也算是一种实战经验吧。
国内MCU厂商最大的问题,不是怕坑,而是有坑不告诉你。非重要设备用用。
赞0
代码读保护的有效次数用尽之后,以最后一次的保护等级为准,如果是0,则无法进行读保护;如果是1~3,则读保护仍然有效。
评论
2025-05-21
赞0
原次数确实已经用尽,使用新的芯片该部分是全FF。当使能读保护后,FLASH_GetReadOutLevel() 会返回1. 可以澄清返回0是用尽的问题。当用尽后,再调用官方的 FLASH_SetReadOutLevel() 函数就会死循环,建议此函数中添加次数是否用尽的检查。
现在的疑问:
48次的限制,是否意味着48次加保护,去保护操作之后,芯片就只能处于非读保护状态了?
48次读保护限制应该是你们的SPEC,希望写入官方文档,方便用户解惑。
评论
2025-05-21
赞0
CW32L010代码读保护的有效次数只有48次,次数用完之后,读保护就失效了。但此状况与你反馈的现象完全不同。
1、请检查一下读保护次数,附图是48次用尽的情况,其地址为0x100730~0x10075F。
2、你之前所言,读保护已生效,但CR1.security为0,是如何得知,请告之操作流程,且截图FLASH & SYSCTRL。
3、建议批量生产时,再使能读保护功能。
评论
2025-05-21
您需要登录后才可以回复 登录 | 注册