你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32l0通过vcp实现IAP

[复制链接]
parjing 提问时间:2018-6-3 18:21 /
公司项目要求通过VCP实现IAP功能。1、boot与app都会有vcp驱动代码,用的是同一套usb代码;
2、在boot时可实现vcp通信,将app代码烧写到相就的app分区;
3、app代码实现了keil的编译(分区偏移)设置,中断向量表重映射;
4、现在遇到的问题是:app应用程序若开启usb时钟配置,IAP跳转到App程序不能正常运行,若关掉app的usb时钟,则能够正常运行;
5、尝试完成IAP功能后复位,boot中直接跳转到app,boot不经过usb初始化,APP的usb也能够正常使用;
6、从以上的现象中,我怀疑是boot,App程序中两次初始化usb导致这个问题的;
7、请问:usb不能够两次初始化(枚举)吗?
8、有什么方法可以同时使得boot与app程序都能够使用usb功能?
收藏 评论1 发布时间:2018-6-3 18:21

举报

1个回答
toofree 回答时间:2018-6-4 00:21:46
这个问题比较高端,请楼下作答。

我这里来说说我的想法。
App中应该是可以使用USB的,枚举两次没问题。
但是首先得让上位机知道,你断开了之前的USB。接下来,才能再次连接新的USB。
具体到你的应用的话,你的USB D+的上拉1.5K的电阻是否接入,必须可控。暴力一点的话,你可以在App中,先把D+的上拉电阻关断,D+、D-置为输入状态,然后延时一定的时间,再次初始化USB,D+的上拉电阻接入。这样就模拟了一次USB拔出,和再次插入的过程。
之前试过用USB Hound发送复位命令给下机位,让USB设备复位,然后重新枚举。
但是不知道下位机有没有软件命令,通知上位机要进行一次复位操作,如果有的话,执行一次也是可以的。复位后执行新设备的枚举。

搜了个帖子,或许对你有用
STM32 软件断开连接 USB 设备问题(在线等!比较急!)
http://bbs.21ic.com/icview-426319-1-1.html?fromuser=toofree






评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版