精华内容
下载资源
问答
  • STM32】【USB】使用STM32CubeMx配置HID模式,电脑无法识别USB设备的问题分析
    千次阅读
    2019-02-22 14:35:48

    使用STM32CubeMx工具配置STM32F103ZE芯片,在HID模式下,电脑不能识别到USB设备。经分析跟DP线有关。

    硬件板的设计是 STM32F103ZE芯片+FE2_QFP48(USB hub芯片)。

    其中:

    PA11-->USB_DM

    PA12-->USB_DP

    PG8-->USB_CTRL(CTRL=1时DP悬空,CTRL=0时DP被上拉)

    若想使电脑识别到USB设备,需要将DP上拉即可。

    硬件电路上做如此设计是考虑到设备端重启,电脑需要重新识别到这是一次重启事件,否则电脑会显示“未识别设备”。在设备端重启后,首先将DP悬空,让电脑检测到USB设备掉线,然后再将DP上拉,让电脑识别到USB设备。如果不做此处理,则电脑不知道设备已经重启过了。

    以下表格是USB各引脚配置及意义:

     HOST端device端(高速)device端(低速)
    VBUS+5V自供电/外供电自供电/外供电
    D-(DP)15K下拉

    悬空

    15K上拉
    D+(DM)

    15K下拉

    15K上拉悬空
    ID拉低悬空悬空
    GNDGNDGNDGND

    其中,关于ID脚功能的说明,当2个OTG设备连接到一起的时候 ,ID为0的OTG设备默认为主机(Adevice),ID为1的OTG设备默认为从机(B device)。

     

    更多相关内容
  • 基于STM32F7 + USB3300 USB-HS 枚举为复合设备 MSC+CDC
  • 利用STM32F407实现人脸识别 硬件资源: 1,DS0(连接在PF9),DS1(连接在PF10) 2,串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面) 3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过FSMC驱动,FSMC_NE4接LCD片...
  • 在方案设计中遇到的问题是USB断开没问题,STM32可以检测的到,并且CPU正常工作,但是USB连接上时,STM32立马假死,即CPU仍在工作,只是USB的中断太频繁了,程序无法执行,产生这种原因不是很清楚,但是可以将中断...
  • STM32USB-Device不能识别问题的解决

    万次阅读 2019-06-20 19:02:15
    用CubeMX生成STM32F765的USB Device工程,编译运行后USB连到电脑不能识别,电脑显示如下: 搞了很久,最后发现问题出在这: pdev->pClassData = USBD_malloc(sizeof (USBD_MSC_BOT_HandleTypeDef)); if...

    环境:CubeMX(STM32F7的HAL库版本为1.15.0),STM32F765

    用CubeMX生成STM32F765的USB Device工程,编译运行后USB连到电脑不能识别,电脑显示如下:

    搞了很久,最后发现问题出在这:

      pdev->pClassData = USBD_malloc(sizeof (USBD_MSC_BOT_HandleTypeDef));
      if(pdev->pClassData == NULL)
      {
        return USBD_FAIL;
      }

    这个USBD_MSC_BOT_HandleTypeDef结构体足足有620字节,而且使用的是编译器自带的malloc函数,这就意味着它的堆空间来源于startup_stm32f765xx.s,而后者默认的堆空间只有512字节(0x200)!!!

    Heap_Size      EQU     0x200

    把这个值改成0x400(大于620就行),一切OK。

     

    这应该是CubeMX的一个BUG。

     

    展开全文
  • STM32F407 USB通信源码,单片机做从设备,使用的CDC类进行数据传输,通信速率可接近理论极限值12Mbps,亲测可以使用!
  • STM32F407 USB口的 U盘读写操作,可以实现建立文件、修改文件,查阅目录等功能。
  • 在公司做嵌入式的实习,让我讲一个U盘识别成WinUSB设备,实现无驱动。在网上找了很多资料,也下过一些,但是我还是懵里懵懂。借到公司的USB分析仪,抓取了枚举过程中的命令,再结合相关知识,在对应的位置修改就可以...
  • 根据ST的usb官方例程做的移植,采用STM32F407,作为通用设备device,可识别,可发送接受数据
  • 3,播放设备用的是windows的ECap软件。 4,NANDFLASH里面预存了原子的测试文件夹,里面有做好的AVI文件,名字是“[卢冠廷-一生所爱]_240160_10帧.avi” 5,由于NANDFLASH读取速度不理想,变读取边发送USB的话,经常...
  • 电脑不识别STM32USB虚拟串口

    千次阅读 2022-01-28 10:06:30
    电脑不识别STM32USB虚拟串口 现象 板子和电脑联调的时候发现,USB线插入板子以后电脑不识别虚拟串口,通过禁用设备再启用,可以正常工作。也可以按一下复位键才能识别。 以前似乎没有这个问题,但记不清具体情况了...

    电脑不识别STM32的USB虚拟串口

    现象

    板子和电脑联调的时候发现,USB线插入板子以后电脑不识别虚拟串口,通过禁用设备再启用,可以正常工作。也可以按一下复位键才能识别。
    以前似乎没有这个问题,但记不清具体情况了。

    电路

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

    查找

    由于通过禁用,启用能正常工作,于是有了上一篇文章
    python–禁用、启用串口设备。
    后来发现,如上操作之后,有时候仍然不能正常工作,表现为设备管理器中该设备为未识别的设备,于是判断是板子上出了问题。
    换板子发现,故障重复,所以排除硬件问题。
    初始化代码如下
    在这里插入图片描述
    将124行的USB初始化代码移到最前面,故障消除。

      MX_USB_DEVICE_Init();
      MX_GPIO_Init();
      MX_CRC_Init();
      MX_I2C2_Init();
      MX_I2C3_Init();
      MX_QUADSPI_Init();
      MX_USART1_UART_Init();
      MX_SPI1_Init();
      MX_USART2_UART_Init();
      MX_USART3_UART_Init();
      MX_ADC1_Init();
      MX_TIM15_Init();
      MX_TIM16_Init();
      MX_TIM17_Init();
      MX_RNG_Init();
      MX_TIM3_Init();
      MX_TIM4_Init();
    //  MX_USB_DEVICE_Init();
      MX_TIM1_Init();
      MX_TIM2_Init();
      MX_TIM5_Init();
    
    

    由于这是CubeMX生成的代码,现在运行没问题,可一旦重新运行CubeMX,我移到前面的部分又会回复如初。
    于是代码变成这样

      /* Configure the system clock */
      SystemClock_Config();
    
      /* USER CODE BEGIN SysInit */
      MX_USB_DEVICE_Init();					//增加的USB初始化代码
      /* USER CODE END SysInit */
    
      /* Initialize all configured peripherals */
      MX_GPIO_Init();
      MX_CRC_Init();
      MX_I2C2_Init();
      MX_I2C3_Init();
      MX_QUADSPI_Init();
      MX_USART1_UART_Init();
      MX_SPI1_Init();
      MX_USART2_UART_Init();
      MX_USART3_UART_Init();
      MX_ADC1_Init();
      MX_TIM15_Init();
      MX_TIM16_Init();
      MX_TIM17_Init();
      MX_RNG_Init();
      MX_TIM3_Init();
      MX_TIM4_Init();
      MX_USB_DEVICE_Init();
      MX_TIM1_Init();
      MX_TIM2_Init();
      MX_TIM5_Init();
      /* USER CODE BEGIN 2 */
    
    

    在USER CODE BEGIN SysInit代码段,增加USB的初始化部分,其他不变。
    即整个初始化阶段USB被初始化了2次,但不会影响正常工作。

    分析

    在USB设备连上主机以后, 主机检测到D+或D-上的电平变化, 识别出有设备接入。于是开始与从设备的握手过程。
    但是我板子上的片上外设比较多,CubeMX生成USB的初始化代码又放在比较靠后的位置,造成USB初始化还未完成,主机已经等待超时,造成握手失败。
    将初始化代码前移以后,即可正常工作。
    CubeMX生成的代码有坑,不是一次两次了,甚至HAL库自带的初始化代码不能驱动硬件我也遇到过,平常心,问题解决就好

    展开全文
  • 一、使用STM32CubeMX生成USB驱动程序 打开STM32CubeMX软件,选择Start My project formMCU,点ACCESS TO MCU SELECTOR。 选择相应的芯片信号,点击Start Project 配置RCC的High Speed Clock为图中所示,...

    以STM32CubeMX生成USB驱动为例,其步骤如下:

    一、使用STM32CubeMX生成USB驱动程序

    打开STM32CubeMX软件,选择Start My project formMCU,点ACCESS TO MCU SELECTOR。

    选择相应的芯片信号,点击Start Project

    配置RCC的High Speed Clock为图中所示,位置为外部时钟。

    选择SYS的Debug为Serial Wire,开启调试,否则下载程序后无法再次下载。具体解决方法参考链接:

    ST-LINK无法下载程序的解决方法

    在Connectivety下选择USB,勾选Device(FS),配置NVIC的中断,打上对勾,开启中断。

    在USB_DEVICE中的mode,选择Communication Device Class配置,在Device Descriptor中配置USB的信息,根据图片自行修改。

    在Clock configuration中,选择HES外部晶振,选择PLLCLK。在HCLK(MHz)下,填入72,点回车,等待系统自动配置时钟,配置完成后,USB时钟为48MHz,注意USB必须为48MHz。

    在Project Manager中,一次填写工程名称,路径,IDE选择MDK-ARM,Minimum Heap Size改为0x400或者0x800,否则可能出现USB在调用USBD_malloc() 申请内存是失败,导致数据无法接收的情况。点击右上角GENERATE CODE。

    打开工程文件,编译后下载到板子上,会在设备管理器看到这个设备

    测试中出现电脑上检测不到USB设备的情况,经过查阅资料,USB的DP引脚必须上拉1.5K欧的电阻,才能检测到,否则电脑上检测不到。

    电脑检测到USB的设备后,还需要安装相应的驱动。使用inf-wizard工具生成USB驱动。

    打开后,选择对应的设备,一路NEXT下去,等一会就会生成对应的驱动,安装该驱动,设备就能被电脑识别。

    工程文件和USB驱动生成工具稍后附上链接。

    下载链接:

    STM32F103的USB工程及USB驱动生成工具

    STM32F103的USB上位机软件

    展开全文
  • 这是因为STM32F4的USB_OTG_GCCFG寄存器里面有NOVBUSSENS这一位,可以打开内部的上拉电阻,而STM32F1却没有。 当PE1(可以选择其他I/O口)为低电平时使能上拉电阻,主机认为USB设备已插入。当PE1为高电平时,主机认为
  • 已调试成功,可以实现读写U盘数据,系统用FreeRTOS,用STM32CubeMX生成的代码,ioc文件也在
  • 本文件是STM32 USB串口最新驱动, 支持WIN7/WIN8和WIN10. 本人已在WIN10下测试通过, 可正常识别使用.内有详细使用说明文档.
  • 基于STM32F103的USB键盘程序代码

    热门讨论 2015-05-25 21:55:11
    基于STM32F103C8的USB键盘程序代码,Keil,与电脑相连后被识别为键盘并周期发送‘a’,主程序可变。
  • stm32f407 usb 鍵盤實驗

    2018-09-02 23:07:25
    学习STM32USB HOST功能使用,实现对U盘的读写 硬件资源: 1,DS0(连接在PF9),DS1(连接在PF10) 2,串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面) 3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过...
  • 安装驱动的过程中并没有报错单设备管理器中并为识别出单片机型号,仅显示为“USB串行设备”,有朋友遇见过同样的情况吗 问题相关代码,请勿粘贴截图 运行结果及报错内容 我的解答思路和尝试过的方法 接口接的是USB ...
  • stm32 usbtmc通过USB线连接到电脑上时,开机上电,此时电脑的NI软件无法识别设备的序列号资源。电脑右下方弹出提示框【“无法识别USB设备”】。 初步调试的结果是:初始化延时等的处理耗时太长,导致中断处理等...
  • STM32配置USB组合设备

    千次阅读 2020-11-11 16:48:11
    STM32配置USB组合设备 有个比喻描述的特别好 说到USB复合设备就不得不说说USB的枚举过程,也就是USB插入后主机的一系列动作。当然我们这里是不会用很专业的术语来说明的,相信如果你是开发者,必然已经了如指掌,...
  • 已调试成功,可以实现读写U盘数据,系统用FreeRTOS,用STM32CubeMX生成的代码,ioc文件也在
  • STM32H743ZIT6USB_BOOT.rar

    2020-03-26 13:50:31
    这是自己移植好的利用STM32H743自带的USB HOST 进行读写U盘并实现BOOTLAD的功能,简而言之就是可以实现以U盘方式给STM32H743升级APP了,移植的时候可是花了好多时间,在此奉献给各位了。
  • ST USB 标准库:STM32_USB-FS-Device_Lib_V4.1.0 芯片:STM32F103RC 端点使用: HID收发:EP1 VCP收发:EP3,EP4 串口:UART1 PA9-TX PA10-RX USB D+控制端口,可控,实际测试时,保持上拉也能正常识别。 程序自用,...
  • 把以前WIN7下的描述符改动一下 const u8 CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC] = { 0x12, /*bLength */ USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/ 0x00, ...
  • 虽然网上有很多CMSIS_DAP的例程,但这些例程都是用的都不是ST的usb库,但我想使用ST的usb库来实现winusb,顺带加入一个虚拟串口。
  • 如下图,直到在设备管理器中的端口中显示出USB-SERIAL口就可以了。就说明串口驱动安装成功。 2、USB是一个协议,具有软件和硬件部分,要实现普通USB电脑通讯,需要开发板硬件支持,烧录程序需要USB通讯,还有和你...
  • 1.usb所使用的io口在... 3.usbp线一定要接1.5k的上拉电阻,用于电脑识别设备,官方库使用了lO口模拟了上拉电源,这样方3便软件控制断开与重新连接,直接上拉到电源也是可以的,不过需要断开和重新连接时只能手动插拔
  • stm32f407 usb cdc设备无法启动问题

    千次阅读 2019-05-28 11:17:35
    最新要做一个项目,要求基于STM32F407实现USB CDC设备,首先想到的就是直接用STM32CUBEMX工具来生成,OK,话不多说,直接上过程: RCC配置: Sys配置 USB_OTG_FS配置: USB_DEVICE配置: 时钟配置 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,195
精华内容 1,278
关键字:

stm32无法识别的usb设备

友情链接: Model-based-3D-Motion.rar