在 NuMicro® 系列芯片中使用 ISP 更新固件是一个高效且常用的方法。以下是详细的步骤和关键点解析:
核心流程
LDROM 存储 ISP 引导代码
- 芯片出厂时,LDROM 已预烧录 ISP 固件(需确认具体型号是否默认包含)。
- 若需自定义 LDROM:通过 ICP(In-Circuit Programming)工具(如 Nu-Link)首次烧录。
触发 ISP 模式
- 硬件方式:
- 特定引脚(如
ICE_CLK / ICE_DAT)在上电时拉高/拉低(查看芯片手册确认引脚)。
- 按键触发(需在用户代码中预置检测逻辑)。
- 软件方式:
在用户代码(APROM)中调用软件复位指令(SYS->IPRST0 = SYS_IPRST0_CHIP_RST_Msk),并配置 ISP 使能标志位。
通过外设接口传输固件
- 接口支持:USB / UART / SPI / I²C / RS-485 / CAN
- 操作步骤:
- 连接目标外设(如 USB 线或 UART 转 USB 工具)。
- 使用上位机工具(如 NuMicro ISP Programming Tool)或自定义脚本发送固件(.bin/.hex)。
- 芯片接收数据后自动擦写 APROM / Data Flash。
配置字更新
- ISP 过程中可同步修改配置字(如时钟源、看门狗使能),避免单独操作风险。
关键注意事项
Boot 顺序配置
- 配置字设置
CBS (Config Boot Select) 选择 LDROM / APROM 启动。
- 示例:设
CBS=0b01 表示从 LDROM 启动 ISP 模式。
空间分配冲突
- LDROM 和 APROM 共享 Flash 空间。若 APROM 过大覆盖 LDROM,会导致 ISP 功能失效,需预留足够空间(如 4KB)。
数据安全
- 启用
Flash Protect(配置字)防止固件被非法读取,但 ISP 更新前需临时解除保护。
双映像备份 (Dual Bank)
- 部分型号(如 M480)支持 Dual APROM,可在主映像失败时切至备份映像,提升可靠性。
操作示例(以 UART ISP 为例)
硬件连接
- 将芯片 UART0 (TX/RX) 连接至 PC 串口工具(如 FT232)。
- 上电前将 ISP 触发引脚(如
PB.15)拉低。
上位机操作
# 使用 NuMicro ISP Tool 命令
isp_tool -port COM3 -bin firmware.bin -aprom -erase -write
自定义脚本 (Python 简化版)
import serial
ser = serial.Serial("COM3", 115200)
with open("firmware.bin", "rb") as f:
data = f.read()
ser.write(b"x7F") # 发送 ISP 进入命令
ser.write(len(data).to_bytes(4, "little"))
ser.write(data) # 传输固件
异常处理
- ISP 失败处理:
若因配置错误导致无法进入 ISP,需通过 ICP(Nu-Link 调试器)强制擦除并恢复 LDROM。
- 校验和错误:
传输后自动校验,失败时重试或降低波特率(尤其在 RS-485/CAN 长距离传输时)。
进阶建议
- 远程更新 (OTA):
结合网络模块(如 WiFi)和用户程序,实现 HTTP/MQTT 远程触发 ISP(需保留 RAM 执行跳转代码)。
- 加密更新:
在 LDROM 中集成 AES 解密算法,上位机发送加密固件提升安全性。
通过以上流程,可高效利用 NuMicro® 的 ISP 功能完成固件更新,同时确保系统可靠性和灵活性。开发前务必查阅对应型号的技术参考手册(TRM) 以确认细节差异。
在 NuMicro® 系列芯片中使用 ISP 更新固件是一个高效且常用的方法。以下是详细的步骤和关键点解析:
核心流程
LDROM 存储 ISP 引导代码
- 芯片出厂时,LDROM 已预烧录 ISP 固件(需确认具体型号是否默认包含)。
- 若需自定义 LDROM:通过 ICP(In-Circuit Programming)工具(如 Nu-Link)首次烧录。
触发 ISP 模式
- 硬件方式:
- 特定引脚(如
ICE_CLK / ICE_DAT)在上电时拉高/拉低(查看芯片手册确认引脚)。
- 按键触发(需在用户代码中预置检测逻辑)。
- 软件方式:
在用户代码(APROM)中调用软件复位指令(SYS->IPRST0 = SYS_IPRST0_CHIP_RST_Msk),并配置 ISP 使能标志位。
通过外设接口传输固件
- 接口支持:USB / UART / SPI / I²C / RS-485 / CAN
- 操作步骤:
- 连接目标外设(如 USB 线或 UART 转 USB 工具)。
- 使用上位机工具(如 NuMicro ISP Programming Tool)或自定义脚本发送固件(.bin/.hex)。
- 芯片接收数据后自动擦写 APROM / Data Flash。
配置字更新
- ISP 过程中可同步修改配置字(如时钟源、看门狗使能),避免单独操作风险。
关键注意事项
Boot 顺序配置
- 配置字设置
CBS (Config Boot Select) 选择 LDROM / APROM 启动。
- 示例:设
CBS=0b01 表示从 LDROM 启动 ISP 模式。
空间分配冲突
- LDROM 和 APROM 共享 Flash 空间。若 APROM 过大覆盖 LDROM,会导致 ISP 功能失效,需预留足够空间(如 4KB)。
数据安全
- 启用
Flash Protect(配置字)防止固件被非法读取,但 ISP 更新前需临时解除保护。
双映像备份 (Dual Bank)
- 部分型号(如 M480)支持 Dual APROM,可在主映像失败时切至备份映像,提升可靠性。
操作示例(以 UART ISP 为例)
硬件连接
- 将芯片 UART0 (TX/RX) 连接至 PC 串口工具(如 FT232)。
- 上电前将 ISP 触发引脚(如
PB.15)拉低。
上位机操作
# 使用 NuMicro ISP Tool 命令
isp_tool -port COM3 -bin firmware.bin -aprom -erase -write
自定义脚本 (Python 简化版)
import serial
ser = serial.Serial("COM3", 115200)
with open("firmware.bin", "rb") as f:
data = f.read()
ser.write(b"x7F") # 发送 ISP 进入命令
ser.write(len(data).to_bytes(4, "little"))
ser.write(data) # 传输固件
异常处理
- ISP 失败处理:
若因配置错误导致无法进入 ISP,需通过 ICP(Nu-Link 调试器)强制擦除并恢复 LDROM。
- 校验和错误:
传输后自动校验,失败时重试或降低波特率(尤其在 RS-485/CAN 长距离传输时)。
进阶建议
- 远程更新 (OTA):
结合网络模块(如 WiFi)和用户程序,实现 HTTP/MQTT 远程触发 ISP(需保留 RAM 执行跳转代码)。
- 加密更新:
在 LDROM 中集成 AES 解密算法,上位机发送加密固件提升安全性。
通过以上流程,可高效利用 NuMicro® 的 ISP 功能完成固件更新,同时确保系统可靠性和灵活性。开发前务必查阅对应型号的技术参考手册(TRM) 以确认细节差异。
举报