打印
[STM32L0]

STM32L053做Virtual Com Port问题

[复制链接]
3168|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nemogg|  楼主 | 2016-4-8 13:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nemogg 于 2016-4-8 13:34 编辑

用CUBEMX 配置USB VCP,按照网上的配置生成的工程烧进去之后WINDOWN识别不出设备,显示Unknow Device. 安装VCP_V1.3.1_Setup.exe驱动也报告说安装失败。。。检查了N遍硬件和初始化的程序,都没什么头绪,唯一可疑的是在HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)中好像缺了IO的初始化代码。。。不过好像加上去了没什么卵用。。。。。快要崩溃了。。。有人遇到过类似的情况吗?
  GPIO_InitTypeDef  GPIO_InitStruct;

__GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12);
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF0_USB;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


截图00.jpg (81.87 KB )

截图00.jpg

截图01.jpg (99.77 KB )

截图01.jpg

截图02.jpg (90.59 KB )

截图02.jpg

截图03.jpg (115.83 KB )

截图03.jpg
沙发
nemogg|  楼主 | 2016-4-8 13:47 | 只看该作者
补充一下,D+上是通过5V接了个1.5K的上拉电阻的。

使用特权

评论回复
板凳
玄德| | 2016-4-8 14:15 | 只看该作者

可能是上位机驱动方面的原因。


使用特权

评论回复
地板
玄德| | 2016-4-8 17:09 | 只看该作者
nemogg 发表于 2016-4-8 14:30
在两台电脑上都试过,一台是64位的WIN7,另外一台是32位的WIN7,电脑都没有像下面图片这样显示Virtual COM ...


一直用USB库,没有发现这问题,
倒是经常有黄色感叹号。

使用特权

评论回复
5
E-Kaia| | 2016-4-8 22:21 | 只看该作者
你排除你的硬件有无问题,再看看你的程序设置的对不对

使用特权

评论回复
6
nemogg|  楼主 | 2016-4-9 00:07 | 只看该作者
E-Kaia 发表于 2016-4-8 22:21
你排除你的硬件有无问题,再看看你的程序设置的对不对

硬件原来接个STF202做ESD保护的,现在都卸下来,只串两个10欧电阻,D+接1.5K上拉。。。从端子到片子上的管脚都量过了,没查出哪里连接有问题。。。难道是端子和线接触有问题,但是线也换过两根了

使用特权

评论回复
7
nemogg|  楼主 | 2016-4-9 00:09 | 只看该作者
玄德 发表于 2016-4-8 17:09
一直用USB库,没有发现这问题,
倒是经常有黄色感叹号。

在STM32L053上用过USB库吗? 我看网上都是F4和F1用的。

使用特权

评论回复
8
robter| | 2016-4-9 09:48 | 只看该作者
没有遇到类似的情况

使用特权

评论回复
9
nemogg|  楼主 | 2016-4-9 17:41 | 只看该作者
1223657347 发表于 2016-4-9 01:43
资源管理器里能看到枚举后设备的vidpid,看不到的话就查硬件问题吧

我也觉得很可能是硬件问题,可是查了很久都没有头绪。。。上拉电阻如果接5V会不会有问题的?

使用特权

评论回复
10
1223657347| | 2016-4-9 18:39 | 只看该作者
本帖最后由 1223657347 于 2016-4-9 20:12 编辑
nemogg 发表于 2016-4-9 17:41
我也觉得很可能是硬件问题,可是查了很久都没有头绪。。。上拉电阻如果接5V会不会有问题的? ...


上拉1.5k到3v3不能乱改,试试去掉外部的上拉电阻。
RM0367, P902已经指出D+线内部有上拉(Embedded pull-up resistor on USB_DP line)。
至于IO初始化,跟踪下USBD_Init调用了USBD_LL_Init,USBD_LL_Init调用了HAL_PCD_Init,HAL_PCD_Init调用了HAL_PCD_MspInit。HAL_PCD_MspInit是以__weak实现的,在usbd_conf.c文件中进行了重构。

使用特权

评论回复
11
nemogg|  楼主 | 2016-4-9 22:58 | 只看该作者
本帖最后由 nemogg 于 2016-4-9 23:02 编辑
1223657347 发表于 2016-4-9 18:39
上拉1.5k到3v3不能乱改,试试去掉外部的上拉电阻。
RM0367, P902已经指出D+线内部有上拉(Embedded pull- ...
那个1.5K上拉是用来给主机识别FS和LS用的。去掉了好像也没有作用。。。。
我现在上拉电阻接的是+5V的,回头再试试上拉3.3V。

在CUBEMX生成的工程里唯一发现的问题可能是在HAL_PCD_MspInit里根本没有初始化IO的代码,这个后来自己加上去了,不知道有没有用。

使用特权

评论回复
12
戈卫东| | 2016-4-9 23:02 | 只看该作者
似乎好多盗版WIN7会因为少文件(USBSER.SYS)无法安装驱动 不知道你的是不是

使用特权

评论回复
13
nemogg|  楼主 | 2016-4-9 23:04 | 只看该作者
戈卫东 发表于 2016-4-9 23:02
似乎好多盗版WIN7会因为少文件(USBSER.SYS)无法安装驱动 不知道你的是不是

驱动现在装上了,只是识别不出板子,怀疑还是硬件的问题。

使用特权

评论回复
14
huangqi412| | 2016-4-10 16:15 | 只看该作者
l053跟哪个系列兼容  l151?  似乎只有103要外加电阻  别的不用

使用特权

评论回复
15
nemogg|  楼主 | 2016-4-11 09:34 | 只看该作者
huangqi412 发表于 2016-4-10 16:15
l053跟哪个系列兼容  l151?  似乎只有103要外加电阻  别的不用

好像跟151差不多,多了BC1.2支持,1K专用缓冲和USB2.0 POWER MANAGEMENT支持。内部也有集成的上拉电阻。

使用特权

评论回复
16
Beckham_Owen| | 2016-4-11 14:53 | 只看该作者
你直接用stlink v2.1的那个Windows驱动试一下呢

使用特权

评论回复
17
huangqi412| | 2016-4-11 16:02 | 只看该作者
nemogg 发表于 2016-4-11 09:34
好像跟151差不多,多了BC1.2支持,1K专用缓冲和USB2.0 POWER MANAGEMENT支持。内部也有集成的上拉电阻。 ...

下了个L053的PDF帮你看了下。。。这个片子跟F0系列差不多。基本可以照搬F0   
0  将其他所有模块和功能关闭,最好是新建一个专门USB测试工程。   硬件把外挂电阻扔掉,芯片里面有电阻。
1  请理顺时钟模块,可以用内部HSI16M通过PLL生成*6/2=48M给USB和CPU。调试界面确认RCC相应的寄存器位,确保,肯定,保证,确保PLL出来48M给USB和CPU。 确认已经使能USB即RCC_APB1ENR.USBEN位    USB引脚不需要配置,上电默认是USB功能的。
2  你之前去掉外部电阻能否识别到未知设备。  如果之前已经能发现未知USB设备,那么硬件应该没问题,如果不能, 去USB调试窗翻转USB_BDCR.DPPU位,应该会发现未知USB设备,如果不能,应该是硬件问题。
3  这个CUBEMX我不懂,之前一模一样生成新工程,一个工程无法枚举USB,一个可以枚举。也就没用这个CUBEMX了。 如果上面2步没问题,你可以考虑追一下CUBE生成工程的USB处理流程。

使用特权

评论回复
18
nemogg|  楼主 | 2016-4-12 00:37 | 只看该作者
huangqi412 发表于 2016-4-11 16:02
下了个L053的PDF帮你看了下。。。这个片子跟F0系列差不多。基本可以照搬F0   
0  将其他所有模块和功能关 ...

是的,看了一下L0的参考文件,芯片有内部上拉,后来把自己焊的上拉去掉了。
最后发现可能是CUBMEMX 的BUG。自动生成的工程漏了下面代码,1楼的代码没把输出模式设为OD输出和上拉,所以也连不上。这次改成下面这样就可以了,感觉是被ST坑了一把。。。。谢谢大家帮忙。           

GPIO_InitTypeDef  GPIO_InitStruct;
__GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12);
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF0_USB;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

使用特权

评论回复
评论
huangqi412 2016-4-13 18:04 回复TA
额,我印象里st的芯片好像默认都USB不用设置 
19
lhchen922| | 2016-5-26 11:09 | 只看该作者
nemogg 发表于 2016-4-8 13:47
补充一下,D+上是通过5V接了个1.5K的上拉电阻的。

3.3v上拉1.5电阻,5v上拉10k.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

48

帖子

0

粉丝