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

STM32的DFU和CDC模式切换

[复制链接]
bbslhb 提问时间:2018-10-29 17:10 /
各位大佬,请教一下一个USB口,同时实现firmware update和vcm的功能,不通过外部跳线,能实现吗?
如果用跳线比较好弄,通过boot0引脚的高低,进入DFU和VCM模式。这需要一个拨码开关来做跳线功能,不太方便。
DFU好像是默认就有的,VCM需要通过代码来实现。
如果平时默认VCM模式,要firmware update时通过VCM发送命令直接进入DFU模式,完了直接重启又进入VCM模式,这样不需要拨码开关,有办法做吗?

还有个疑问就是单片机没有初始代码,跳线就有DFU功能了,DFU代码在哪呢?
如果单片机是空的没代码,VCM还是需要一段代码来实现的。
收藏 1 评论11 发布时间:2018-10-29 17:10

举报

11个回答
原来的你 回答时间:2018-10-29 17:24:05
没必要这样做呀,直接CDC就可以更新固件,自己加个处理就好,判断是升级模式还是正常工作模式即可

评分

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

查看全部评分

bbslhb 回答时间:2018-10-29 19:15:52
原来的你 发表于 2018-10-29 17:24
没必要这样做呀,直接CDC就可以更新固件,自己加个处理就好,判断是升级模式还是正常工作模式即可 ...

啊,还有这种搞法?具体有文档资料可以参考吗?
刚翻帖子找到了这个办法:
https://www.stmcu.org.cn/module/forum/thread-606839-1-1.html?lat
关键在于后备数据寄存器的使用。
maxtch 回答时间:2018-10-30 10:49:40
取决于具体型号。有些型号的 bootloader 是可以从单片机代码里面进入的,这样的话设计一种判断复位目的的代码就可以切换了。如果必须用 boot0 的话可以用一个片外 I/O 扩展芯片来达成目的。不过还有一点要记得的是如果你要这么用 USB 你一定要用单片机控制 USB D+ 的上拉电阻,这样的话电脑端才能注意到你的设备重新枚举了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

bbslhb 回答时间:2018-10-30 11:42:59
本帖最后由 bbslhb 于 2018-10-30 14:02 编辑
maxtch 发表于 2018-10-30 10:49
取决于具体型号。有些型号的 bootloader 是可以从单片机代码里面进入的,这样的话设计一种判断复位目的的代 ...

多谢楼上提醒。通过D+的上拉电阻重新枚举。
还想到一个办法就是:(适用于外接DC供电和USB供电两路供电的硬件)
USB的5V上电时,进入DFU模式。
DC的5V上电时,进入VCM模式。
两个5V别连在一起。
硬件上只需要USB的5V上拉boot0就行了。这样USB上电就是boot0上拉状态的上电,进入DFU。
DC的5V上电就是boot0悬空状态的上电,从flash启动。
2018-10-30_140057.png
maxtch 回答时间:2018-10-30 19:32:03
bbslhb 发表于 2018-10-30 11:42
多谢楼上提醒。通过D+的上拉电阻重新枚举。
还想到一个办法就是:(适用于外接DC供电和USB供电两路供电的 ...

我个人倾向于工装数据线:USB micro-B 插座有五根线,1/2/3/5 脚用作 USB 通讯,第 4 脚普通数据线是直接短接到地的,工装数据线管脚可以自行定义,譬如第 4 脚对电源短路。USB Type-C 更是直接定义了工装数据线在 CC 两根线上面的处理方式。这样的话通过检测数据线,可以做到插普通数据线或不插数据线开机是正常工作模式,插工装数据线开机则是 DFU 模式。
maxtch 回答时间:2018-10-30 19:57:49
本帖最后由 maxtch 于 2018-10-30 20:02 编辑

Untitled-1.png
上面这个电路可以实现工装数据线,图中的比较器 LMV331 和电阻 R1-R4 构成数据线检测电路。B 点固定 2.66V;A 点不插数据线电压 1.33V,插普通数据线电压 0V,因此在这两个状态下 LMV331 输出接地,BOOT0 = 0。插工装数据线 A 点电压 5V,LMV331 输出高阻态,R5 上拉到 3.3V,BOOT0 = 1。

p.s. 画图软件是 KiCad,所以字体和颜色是这样的。系统是 macOS,因此可以打出希腊字母 µ。
bbslhb 回答时间:2018-10-30 20:22:57
maxtch 发表于 2018-10-30 19:57
上面这个电路可以实现工装数据线,图中的比较器 LMV331 和电阻 R1-R4 构成数据线检测电路。B 点固定 2.66V ...

真会玩啊。。。
LMV331不会用,还看不懂这个图。。。
感谢给出这么好的思路。
maxtch 回答时间:2018-10-31 00:16:34
bbslhb 发表于 2018-10-30 20:22
真会玩啊。。。
LMV331不会用,还看不懂这个图。。。
感谢给出这么好的思路。 ...

LMV331 是单开漏比较器,和 LM393 一类是相似的。一般比较器如果正输入端(图中 A 点)电压高于负输入端(图中 B 点)比较器输出高电平;反之输出低电平。LMV331 则是开漏输出,因此在一般比较器输出高电平的时候 LMV331 输出高阻态,这一特点被我用来实现 5V 转 3.3V 的电压转换。

这个就是正常的原理图啊?F1 是我习惯性的在 USB 电源线上加的自恢复保险丝,LM1117 就是 AMS1117。
bbslhb 回答时间:2018-10-31 15:39:36
maxtch 发表于 2018-10-31 00:16
LMV331 是单开漏比较器,和 LM393 一类是相似的。一般比较器如果正输入端(图中 A 点)电压高于负输入端 ...

哦明白了。
接普通USB线或者不接线,电压:A<B,boot=0
接ID=5V的工装USB线,电压:A>B,boot=1
那R1和R2去掉也可以的吧。
maxtch 回答时间:2018-10-31 17:43:37
bbslhb 发表于 2018-10-31 15:39
哦明白了。
接普通USB线或者不接线,电压:AB,boot=1
那R1和R2去掉也可以的吧。 ...

不可以。R1、R2 去掉的话不接线 boot 就不确定了。
bbslhb 回答时间:2018-10-31 17:55:04
maxtch 发表于 2018-10-31 17:43
不可以。R1、R2 去掉的话不接线 boot 就不确定了。

明白了。
毕业后就没用过运放相关的东西,

所属标签

相似问题

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