硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2683|回复: 3
收起左侧

[有问必答] F103C8T6的USB无法被PC识别问题,请求指导

[复制链接]

28

主题

178

回帖

262

积分

高级会员

积分
262
发表于 2020-12-17 17:03:36 | 显示全部楼层 |阅读模式
本帖最后由 mioc_hust 于 2020-12-17 17:15 编辑

各位大神好,目前遇见一个小问题,如下:
根据历程中的说明《第8期 基于emWin模拟器的USB BULK上位机开发,仅需C即可,简单易实现》,我想试试看这个USB通信具体有什么效果。
因为手上没有F103RC的板子,就用了F103C8T6的板子。

我运行程序时,发现有资源不够的现象,LED灯不闪烁,我把原来程序中的各种任务都删除了。仅保留了LED闪烁和USB通信的程序。

20201217171402.png



调整了线程的协议栈分布,如图所示:(好像没法上传图片,忧伤。。。。)


任务调整成2  堆栈1  大小为4096(图片无法上传,详细的可以看代码)
微信图片_20201217165507.png

现在的问题是:在PC段,USB设备为


20201217171247.png
由于该设备有问题,Windows 已将其停止。 (代码 43)
请求 USB 设备描述符失败。

我查看了上报被识别的VID和PID,都不是我预计的的值。软件预设的值应该是 PID=0xC251 VID=0x3505

20201217171428.png

USB\VID_0E0F&PID_0001\6&DBB73C4&0&2
还有一个现象是,我启动虚拟机和不启动虚拟机时,PC获取的USB的VID和PID居然不同。不启动虚拟机时,获取的是 0001和0002
usb_bulk.rar (3.44 MB, 下载次数: 0)



20201217171416.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106906
QQ
发表于 2020-12-18 08:48:35 | 显示全部楼层
我们那个例子的晶振大小HSE_VALUE和你板子的实际大小是否一致
回复

使用道具 举报

28

主题

178

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2020-12-18 10:42:38 | 显示全部楼层
eric2013 发表于 2020-12-18 08:48
我们那个例子的晶振大小HSE_VALUE和你板子的实际大小是否一致

niubility。。。我当时也考虑到这里了。我外部的HSE_VALUE是8MHz,应该是和V4的开发板是一样的。
我手上没板子,我看代码里面这里应该是
    /*  PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
应该是外部8MHz,是没错的。最后得到72MHz。。


现在问题解决了。是可以看见设备了。。解释下原因。
1·我之前怀疑是时钟问题,因为芯片手册说USB必须使用48M的时钟,我就修改了CFGR寄存器,我把倍频系数修改成RCC_CFGR_PLLMULL6 = 8*6= 48M。然后后面忘记了。(因为当时LED不闪烁,定位这个问题去了)

2·然后,我发现可能是资源不够问题,删除了不需要的任务。然后修改了堆栈大小和任务数。
刚才返回来看时钟,发现,在时钟树里面,PLL时钟是可以输出72M的,在USB模块时钟前还有一个1.5分频的系数可以修改。默认应该历程里面修改成1.5了。于是把时钟倍频调整回原来的9倍,得到72M时钟

3·在删除任务配置时,我把任务数调整成2了,堆栈1.然后看了PDF中的说明,
  程序运行起来后会自动创建四个 USB 任务:
  USBD_RTX_Device 任务
  USBD_RTX_EndPoint0 任务
  USBD_RTX_CDC_ACM_EP_BULK_Event 任务
  USBD_RTX_CDC_ACM_EP_INTIN_Event 任务
也就是加上我的LED程序,最少要5个任务。于是,把任务数调整为5,堆栈1,堆栈长度1024(2048会导致死机)。。。

4 最后就可以在PC段识别USB设备了。。。。
总结就是,程序没问题,完全不需要修改。时钟已经设置配置好。在换了处理器(F103RC换成F103C8T6后)由于内部资源的减少,需要调整一下RTOS的任务数和任务堆栈大小
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106906
QQ
发表于 2020-12-19 10:37:31 | 显示全部楼层
mioc_hust 发表于 2020-12-18 10:42
niubility。。。我当时也考虑到这里了。我外部的HSE_VALUE是8MHz,应该是和V4的开发板是一样的。
我手上 ...

好的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 13:53 , Processed in 0.158654 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表