USB下载,只能是冷启动吗? | 已解决, 可以用软复位
本帖最后由 tzz1983 于 2024-9-4 20:42 编辑USB下载,只能是冷启动吗?
型号: STC32G12K128
最近在调试项目时,用USB下载代码,按下3.2断电冷启动,可以识别 USB Writer HID1
不断电,用软件软复位时不能识别,以下代码
if(!P32){
IAP_CONTR=0X60;
}
手册上说软复位可以, 是不是我忽略了什么细节?大家帮忙看看
****************************************************************
已解决问题
感谢各位回复,原因已经找到, 是因为我本身已经开启了USB应用,
软复位时电脑还没来得及断开上一次的USB连接
经过改良,现在已经成功,代码如下:
if(!P32){
USBCON = 0x00; //先禁用USB功能
delay_ms(2); //等2毫秒,电脑检测到USB设备掉线, 才会枚举新的设备
IAP_CONTR=0X60; //现在重启,可以成功检测到 USB Writer HID1
}
总结: USB软复位至 USB下载代码, 如果应用本身没有USB应用,简单的一句 IAP_CONTR=0X60;即可,
如果本身有USB应用,则断开USB连接后,再执行 IAP_CONTR=0X60; 才保险。
wnagming 发表于 2024-9-4 09:02
手动时,启动后还得保证P32脚低电平,软件复位P32脚设置低电平,然后复位,试试 ...
必须的呀,一直都按着3.2按键的 软件复位进入USB下载模式也没什么特别的,用USB线连接电脑跟芯片就可以,试试附件例子。 软复位USB下载我试的可以 本帖最后由 tzz1983 于 2024-9-4 20:42 编辑
乘风飞扬 发表于 2024-9-4 09:28
软件复位进入USB下载模式也没什么特别的,用USB线连接电脑跟芯片就可以,试试附件例子。 ...
****************************************************************
已解决问题
感谢各位回复,原因已经找到, 是因为我本身已经开启了USB应用,
软复位时电脑还没来得及断开上一次的USB连接
经过改良,现在已经成功,代码如下:
if(!P32){
USBCON = 0x00; //先禁用USB功能
delay_ms(2); //等2毫秒,电脑检测到USB设备掉线, 才会枚举新的设备
IAP_CONTR=0X60; //现在重启,可以成功检测到 USB Writer HID1
}
总结: USB软复位至 USB下载代码, 如果应用本身没有USB应用,简单的一句 IAP_CONTR=0X60;即可,
如果本身有USB应用,则断开USB连接后,再执行 IAP_CONTR=0X60; 才保险。 本帖最后由 tzz1983 于 2024-9-4 10:08 编辑
DebugLab 发表于 2024-9-4 09:29
软复位USB下载我试的可以
我也试成功了,这前因为我的应用本身USB设备模式没有完全断开,即对于电脑来说,上一次的USB连接还没断开,改良后可以了,谢谢 tzz1983 发表于 2024-9-4 10:07
我也试成功了,这前因为我的应用本身USB设备模式没有完全断开,即对于电脑来说,上一次的USB连接还没断开 ...
哦对,我当时也发现了这个问题 还有这种操作啊,以为只要复位就进入模式,结果前提是要先断开在连接啊 学习了.{:4_250:} 才发现这个秘密,
软复位其实不需要 P3.2 == 0 , 就可以直接进USB下载引导 USB Writer HID1 ,
只要设置任意端口:
if (!Pxx){
IAP_CONTR=0X60; //如果自身不包含USB相关的应用,这一句就够了
}
如果本身就是USB应用,则需要多加两句来断来原有的USB连接:
if(!Pxx){
USBCON = 0x00; //禁用USB功能
delay_ms(2); //等电脑检测到USB设备掉线
IAP_CONTR=0X60; //软复位, 电脑重新枚举到 USB Writer HID1
}
还是挺方便的
页:
[1]
2