产品选型

虚拟单片机 单片机虚拟串口无法被识别,这个方法学到了

小编 2024-11-24 产品选型 23 0

单片机虚拟串口无法被识别,这个方法学到了

解决 STM32H750 USB 虚拟串口无法被识别

大家好,我是一哥,之前有同学私信我,USB串口老是无法识别,本文就是介绍这个情况的。

现象

板子和电脑联调的时候发现,USB线插入板子以后电脑不识别虚拟串口,通过禁用设备再启用,能够正常工作。也能够按一下复位键才能识别。

以前似乎没有这个问题,但记不清详细情况了。

电路

D+通过一.5K电阻上拉, 调试时整个板子通过与电脑连接的USB口供电, 即插上USB线才初始供电。

查找

由于通过禁用,启用能正常工作,于是有了上一篇文章

python–禁用、启用串口设备。

后来发现,如上操作之后,有时候依然不能正常工作,表现为设备管理器中该设备为未识别的设备,于是判断是板子上出了问题。

换板子发现,故障反复,所以排除硬件问题。

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令一哥///

开发 STM32 的时候,须要串口、调试器等等外接设备来方便调试,可是对于我来说,那一大堆的线实在不够优雅。而通过 USB-DFU 下载程序、USB 虚拟串口打印信息,则只有一根 USB 即可搞定,非常简洁。

可是今天在用 CubeMX 开发 STM32H750VBT 的时候,USB 总是没法被识别。经过了一阵的探索,终于找得到了问题的理由——时钟配置。在此记录一下。

首先我先在网上查找了有关的资料,一般来说,STM32 USB 虚拟串口没法被识别可能有两种情况:

堆栈设置太小,USB 没法完成初始化,在 CubeMX 上设置大一点。

电脑端运用了 USB 分线器,把 USB 直接连接到电脑上。

两种方法我都尝试了,没效。其次我就初始思考,是不是由于 STM32H750 的时钟主频太高了(400MHz),导致时钟出错?其次我就把主频设置为了 100MHz,欸?结果能够了,终于被识别到了。但是把主频设置为 200MHz 就又不行了。可是我用 H7 不就是为了高主频吗?低主频还有什么意义?

进一步我猜想,USB 外设时钟有一个最高限速,说不定只有把 USB 外设时钟限制好就能够了。果真,在网上浏览有关信息的时候看到一篇文章,提到了 USB 时钟频次应该设置为 48MHz,我也才知道了原来 CubeMX 中 STM32H750 还能设置 USB 外设的时钟。

在 Clock Configuration 中配置 USB Clock Mux 为 RC48 ,能够获得精确的 48MHz,否则在其他频次时 USB 初始化会发生错误。

这一点在《STM32H750 Reference Manual》中 P2619 也有说明 ,即 USB OTG 的接收到的时钟应为 48MHz。

在USB设备连上主机以后, 主机检测到D+或D-上的电平变化, 识别出有设备接入。于是开始与从设备的握手过程。

但是我板子上的片上外设比较多,CubeMX生成USB的初始化代码又放在比较靠后的位置,造成USB初始化还未完成,主机已经等待超时,造成握手失败。

将初始化代码前移以后,即可正常工作。

CubeMX生成的代码有坑,不是一次两次了,甚至HAL库自带的初始化代码不能驱动硬件我也遇到过,平常心,问题解决就好

需要学习单片机的朋友 ,做毕业设计的同学,参加竞赛,关注我们,口令一哥,与导师一起学习成长,共同进步,还有更多资料领取。

说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

-END-

*本文系网络转载,版权归原作者所有,如有侵权请联系删除

单片机入门教程之仿真软件proteus

学习单片机离不开仿真,需要对我们写的代码进行试验仿真看看能不能实现自己想要的功能,通过仿真软件来实现不仅可以节约成本还可以节约时间,所以今天来介绍以下仿真软件

Proteus介绍:

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、

PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。

Keil编程和Proteus仿真软件联合直接用写的程序烧写到仿真软件里面,以上通过自己做的仿真,需要仿真程序实例的可以私聊我

Proteus功能特点:

Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:

1.原理布图

2.PCB自动或人工布线

3.SPICE电路仿真

革命性的特点

1.互动的电路仿真

用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

2.仿真处理器及其外围电路

可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境

仿真软件界面

现在应该对仿真软件有个基本了解了吧,这一篇不讲软件的安装使用,等下一篇来说说它的安装和使用

七夕快到了,明天将出一期心形LED流水灯制作,这电路很简单,程序也不难,但是实现的功能很酷炫,通过录制视频的方式教你怎么做心形LED流水灯,送给你心意的女孩子

关注智联电子DIY敬请期待

相关问答

在proteus中如何将元器件的端点与 单片机 端点设置 虚拟 (不需要用导线连接那种)连接,求设置方法?

在需要连接的导线但表面上没有导线,在两端都加相同的网络标号就行了,在左边的工具条点LBL,之后当鼠标移到导线上时就会出现一个叉,点下鼠标后就可以输入几个...

proteus 虚拟 终端设置?

1.virtualterminal默认显示字符,如果单片机发送的是非显示字符,则虚拟终端不会显示,会导致用户认为通讯未通。运行程序,在虚拟终端窗口里面点击右键,在...

usb 虚拟 串口是什么?

usb虚拟串口指的是将串口转成USB,USB接口的方式来仿真出一个串口。在通信的时候可以直接使用串行口的协议来进行通信。因为现在很多电脑都已经没有串口了,可是...

multisim怎么用C语言仿真51 单片机 ?

2、在新建的设计文档的工具栏选择“PlaceMCU”,在弹出的列表中选择8051单片机,点击“OK”确定选择。3、将单片机放置在Design上后会弹出MCU向导(MCUWizard...

我想知道 LPG 虚拟 仿真系统, 虚拟 仿真如何选?

[回答]PC与C51单片机串行通信仿真,仿真就是在电脑上的,还与电脑通信吗?还是电脑上仿真,与实物单片机通信呢?如果是仿真电脑与单片机通信,不是实物,那仿真...

单片机 外包怎么算费用?线上推广外包费用有知道的吗?

[回答]GPRS或者CDMA的无线上网卡有2个插件组成pcmica的卡槽跟sim卡组合而成的1.GPRS速率移动能提供的最快速度为160kbps相当于1兆的adsl的1/6的速度费用一...

想学习电子电路,请问各位大神们哪里有模拟软件学习呢?

Proteus是最适合大学生的电子模拟软件。因为Proteus是这些专业软件当中,最简单易用的,而且有着丰富的元件库,几乎能满足大学生所有的仿真需求。还可对单片机...

proteus中virtual terminal怎样显示字母?

1.virtualterminal默认显示字符,如果单片机发送的是非显示字符,则虚拟终端不会显示,会导致用户认为通讯未通。运行程序,在虚拟终端窗口里面点击右键,在...

51 单片机 教程有哪些推荐?

有没有什么教程,视频比较好的,或者有什么好的方法呢?

用51 单片机 做电子钟,自动校时方面最简单的能用什么方法?

[回答]数字电子钟以multisim为仿真软件,由虚拟元器件组成的数字电子钟,它主要由振荡器、时分秒计数器、校时电路、译码器、数码管等级部分组成。通过multi...

猜你喜欢