You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAMD21E16B-U使用Atmel ICE通过SWD连接报错无法重新编程调试

问题根因判断

首次烧写正常后续无法连接,90%以上概率是你烧入的用户代码将SAMD21的**SWD引脚(PA30=SWCLK、PA31=SWDIO)**配置为了其他功能(GPIO/外设引脚),芯片启动后直接切换了引脚功能,导致调试器无法通过SWD接口读取芯片IDR寄存器。

可行解决方案

方法1:手动实现复位下连接(无需修改配置)

  • 用镊子或跳线将SAMD21的RESET引脚拉低到GND并保持
  • 点击IDE中的调试/烧写按钮,在调试器发起连接请求的瞬间松开复位引脚
  • 此时芯片刚退出复位状态,还未运行用户代码修改SWD引脚配置,调试器可以正常连接,连接成功后直接执行全擦除/重新烧写即可恢复

方法2:配置VisualGDB支持复位下连接

VisualGDB本身支持该功能,无需依赖STM32类的专属选项:

  • 打开当前项目的调试属性页,找到调试后端配置项(默认一般为OpenOCD)
  • 在「额外调试命令参数」栏中添加命令:set CONNECT_UNDER_RESET 1
  • 保存配置后直接触发调试,即可自动实现复位下连接

方法3:用官方工具直接擦除芯片

如果上述IDE操作失败,可以用Microchip官方工具直接擦除:

  • 打开Microchip Studio(原Atmel Studio),进入「器件编程」界面
  • 调试器选择Atmel ICE,通信接口选择SWD,目标器件选择SAMD21E16B-U
  • 按住芯片复位引脚,点击「读取设备信息」,连接成功后直接执行「全片擦除」即可清空用户代码,恢复SWD功能
后续规避建议
  • 非必要不要复用PA30、PA31两个引脚的功能,保留默认SWD属性
  • 若业务必须使用这两个引脚,可在用户代码开头添加2~3秒的上电延时,延时结束后再执行引脚复用配置,后续烧写时在上电后立刻发起连接即可

内容的提问来源于stack exchange,提问作者Mary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 20:48:03