外部供电时USB下载方案-下载快速、不怕死机、不断电下载调试方便
一般的项目都是由外部电源/电池给MCU供电的,单纯使用TypeC给整个系统供电的情况并不是很多(这里不讨论使用TyepC给单片机供电的情况)
那么,总结一下平时进行USB下载时的几个较为麻烦的点
1.需要同时按下电源按键和P32两个按键,且有顺序要求,不够简便
2.虽然可以使用USB不断电下载,但是遇到单片机内部中断卡死、逻辑卡死等情况就没法下载了
3.存在外部器件推挽输出时MCU断电不彻底无法正常冷启动
所以,基于以上痛点,这里推荐一种适合外部供电的USB下载方案
(使用TypeC供电的情况,直接按住P32插拔usb口就能进入下载模式了,新的固件都支持这个操作,这里不讨论)
1.P32固定接地,只要插着TypeC线上电就能进入USB下载模式
2.TyepC接口不接+5V线,只连接D+/D-和GND,防止电源冲突
3.不插USB线上电,默认正常运行,因为进入USB下载前会判断P30/P31电平
4.程序内加入USB库实现不断电下载,这样平常情况就不用动电源开关了
5.如果遇到程序卡死导致无法不断电下载,只需要将总电源断电再上电,可以进入USB下载模式
6.因为是总电源断电,所以不会出现外部设备从I/O口供电导致的无法冷启动问题
(单片机上,只需要将P32直接接地,记得给Ucap接一个电容到地(USB部分需使用))
使用如上的USB口接线即可
针对外部供电时的USB下载调试痛点,推荐一种高效、稳定的解决方案。首先,采用独立电源管理模块,确保MCU与外部器件在下载过程中稳定供电,避免因断电不彻底导致的冷启动问题。其次,优化下载协议,实现单按键触发下载,简化操作流程,无需同时按下多个按键。此外,引入硬件复位机制,当检测到MCU内部中断或逻辑卡死时,自动触发复位,确保下载过程不受影响。最后,通过软件优化,实现断点续传功能,即使在下载过程中出现异常,也能从中断处继续,提高调试效率。该方案适用于大多数外部供电场景,显著提升USB下载的便捷性和可靠性。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考] 新更新的USB只需要一句usb_init()就能用啦
只需要添加usb的lib库、引入“ai_usb.h”头文件、设定调用usb_init()并打开中断就可以使用了
建议:将usb_init放到程序最开头,并且马上使用EA=1打开总中断
这样就算后面卡死,也可以正常使用usb的不断电下载了
不断电下载的ISP设置部分
使用USB-CDC库:
使用USB-HID库:
USB库更新说明:
1、使用此压缩包中的新USB库函数,用户程序中不需要再对
USER_DEVICEDESC,USER_PRODUCTDESC,USER_STCISPCMD进行定义
如已定义,请删除。
2、USB库默认的不停电下载命令为“@STCISP#”
3、新USB库函数不再区分查询库和中断库,已统一为同一个库
使用set_usb_OUT_callback函数设置回调函数时可实现中断模式
若不设置回调函数则为查询模式(详情请参考范例程序)
我断开VCC直接D+D- GND 不能通电。
意思是VCC接外部电池吗
抽空我试下
页:
[1]