PY32 两种 Flash 读保护方案总结

PY32 防 Flash 读取分为两种架构:

  1. RDP 全局读保护:适用于 F002A / F030 / F040 / F071 等主流型号
  2. SDK 分区保护:PY32F002B 独有(无 RDP 功能)

两种均可通过 PuyaProgrammer 软件代码配置 开启,开启后 SWD / JLINK / 串口 ISP 均无法读取 Flash 完整固件。

一、RDP 全局读保护(主流芯片)

RDP 通过 OptionByte 选项字节 控制,共 2 个档位:

保护等级 配置值 效果说明
Level0(默认关闭) 0xAA 可正常读、写、擦除 Flash,出厂默认
Level1(开启读保护) 0x55 禁止 SWD / ISP 读取 Flash,程序可正常运行;解除保护必须整片擦除

⚠️ 重要:
从 Level1 恢复 Level0 必须整片擦除,所有程序数据清空。
务必 调试完成后再开保护,不要在开发阶段开启。
单片机FLASH程序内部无法执行保护降级,所以如果开启读保护后,必须用专用软件解除读保护。

方案1:PuyaProgrammer 开启读保护(量产首选)

无需改代码,适合量产烧录:

  1. 使用 PY-LINK(SWD) 或 USB-TTL(ISP) 连接芯片,选择对应型号
  2. 加载 hex / bin 固件,正常烧录程序
  3. 打开菜单栏 Option Byte 选项字节配置
  4. RDP 默认 0xAA 修改为 0x55(开启 Level1 保护)
  5. 勾选「下载时同步写入选项字节」
  6. 点击编程,烧录完成后断电重启
  7. 保护立即生效,无法读取 Flash

RDP 读保护解除方法

只能原厂工具解锁,JLINK/STLINK 无法解锁:

  1. PuyaProgrammer 连接芯片,进入选项字节
  2. RDP 改回默认值 0xAA
  3. 执行 整片擦除(Erase All)
  4. 擦除完成,保护解除,可重新烧录调试

二、实战 PY32F030K28T6 解除读保护

  1. PuyaProgrammer 与单片机连接有两种方式:SWD和ISP
    在这里插入图片描述
    SWD方式需要用专用的下载器,我没有,就没有测试。
    ISP使用普通USB转TTL,但是实测无法解除读保护。
  2. PY32IspTool
    串口 ISP 专用烧录工具,,就是串口解锁用的 ISP 烧写软件,BOOT0 拉高进串口模式,用它全擦除解锁读保护。
    在这里插入图片描述
    我就是用这个软件,成功解除了读保护(单片机程序被清空,不是单片机解密,只是恢复为五保户可继续下载程序)。
    操作步骤:
    1 将单片机BOOT0引脚接3.3V。
    2 按复位按钮,进入ISP模式。
    3 USB转TTL接单片机的串口1。
单片机型号 USART1_TX USART1_RX 复位引脚 BOOT0
PY32F030K28T6 PA2 PA3 Pin4 PF2 Pin31 PF4
PY32F040C1BT6 PA9 PA10 Pin7 Pin44 PF8

注意:单片机的RX/TX与USB转TTL的RX/TX连接时要交叉连接。
4 点击Connect ,如果单片机有读报,软件会提示你是否擦除,确定即可。

软件下载网址:
https://gitee.com/puya-semiconductor/tools-and-software/blob/master/PY32_GCC/Firmware.zip

2026.6.3

Logo

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

更多推荐