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

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个回答
七哥 回答时间: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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版