STM32
直播中

王利祥

7年用户 1447经验值
私信 关注
[问答]

STM32F072的USB虚拟串口初始化时进入ESOF遇到的疑问求解

各位大佬,这边使用STM32F072做DFU+目标程序,在执行完第一段Boot后,进入第二段目标程序中,出现一些问题疑惑不解,具体如下:    1、在将USB转成虚拟串口执行USBD_Init( USB_Device_dev, USB_desc, USBD_CDC_cb, USB_cb)函数时,程序一直卡在里面;

    2、调试后,发现卡在USBD_Init( USB_Device_dev, USB_desc, USBD_CDC_cb, USB_cb)函数里的USB_BSP_EnableInterrup(pdev);
    3、继续调试,发现一直进入if (wIstr   ISTR_ESOF   wInterrupt_Mask)的ESOF中断,和SOF中断;
备注:几十台设备,就几台设备出现这样的以上的卡在ESOF中断,目测硬件引脚焊接正常,尝试了重新手动上锡焊接一次,就解决了问题,但   
          是在故意将DP,DM引脚相互短接断开或与邻近引脚短接,尝试没有任何异常。
问题:1. 请问如果是硬件出问题,是哪些引脚(DM,DP引脚已排除)会影响USB初始化时进入ESOF中断,SOF中断呢?
           2. 查看了相关资料,说的是硬件置位SUSP@USB_ISTR,换个说法外部的引脚哪些会影响这样呢?
求各位前辈指导指导!感谢!!!



回帖(1)

bigbangboom

2024-4-12 16:02:25
以下是关于STM32F072 USB虚拟串口初始化过程中遇到的问题的解答:

1. 在调用USBD_Init函数时,程序一直卡在里面的问题可能是由于硬件连接或者配置问题导致的。你可以确保USB接口的物理连接是正确的,并且确认配置文件中的相关参数设置正确。

2. USB_BSP_EnableInterrup是用来使能USB中断的函数,程序卡在这里可能是由于USB中断没有正常触发引起的。你可以检查USB外设的时钟配置是否正确,以及相关中断优先级和中断向量表的配置是否正确。

3. 进入ESOF中断和SOF中断的问题可能是由于USB主机与目标设备之间的通信出现了问题,导致USB时钟同步失效引起的。你可以检查USB主机端和目标设备端的USB时钟源配置是否一致,并确保USB时钟源的稳定和准确性。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分