tzz1983 发表于 2024-9-4 08:47:06

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; 才保险。




tzz1983 发表于 2024-9-4 09:19:58

wnagming 发表于 2024-9-4 09:02
手动时,启动后还得保证P32脚低电平,软件复位P32脚设置低电平,然后复位,试试 ...

必须的呀,一直都按着3.2按键的

乘风飞扬 发表于 2024-9-4 09:28:41

软件复位进入USB下载模式也没什么特别的,用USB线连接电脑跟芯片就可以,试试附件例子。

DebugLab 发表于 2024-9-4 09:29:14

软复位USB下载我试的可以

tzz1983 发表于 2024-9-4 10:02:15

本帖最后由 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:07:20

本帖最后由 tzz1983 于 2024-9-4 10:08 编辑

DebugLab 发表于 2024-9-4 09:29
软复位USB下载我试的可以
我也试成功了,这前因为我的应用本身USB设备模式没有完全断开,即对于电脑来说,上一次的USB连接还没断开,改良后可以了,谢谢

DebugLab 发表于 2024-9-4 10:10:53

tzz1983 发表于 2024-9-4 10:07
我也试成功了,这前因为我的应用本身USB设备模式没有完全断开,即对于电脑来说,上一次的USB连接还没断开 ...

哦对,我当时也发现了这个问题

soma 发表于 2024-9-4 12:00:56

还有这种操作啊,以为只要复位就进入模式,结果前提是要先断开在连接啊

ainiwuhui 发表于 2024-9-4 14:23:14

学习了.{:4_250:}

tzz1983 发表于 2024-9-4 21:17:14

才发现这个秘密,
软复位其实不需要 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
查看完整版本: USB下载,只能是冷启动吗? | 已解决, 可以用软复位