这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » M487JIDAE设计了一个电路板,但是跑USB例程识别USB失败了怎么处理?

共2条 1/1 1 跳转至

M487JIDAE设计了一个电路板,但是跑USB例程识别USB失败了怎么处理?

工程师
2024-11-05 21:47:37     打赏

由于3月初刚刚接触M487JIDAE这个MCU,目前根据开发板的电路图,重新设计了一个当作普通HID设备使用的电路图,
目前按照这个电路图设计出来了PCB板,PCB板烧录了HID例程(HSUSBD_HID_MouseKeyboard)成功,但是插到电脑的USB接口上无法识别USB设备,连感叹号都识别不了。(但是同样的HID例程,烧录到M487JIDAE这个开发板上是可以正常识别USB设备的),目前调试了程序,发现最后卡死在这个USB初始化函数出不来:


  • void HSUSBD_Open(S_HSUSBD_INFO_T *param, HSUSBD_CLASS_REQ pfnClassReq, HSUSBD_SET_INTERFACE_REQ pfnSetinterface)

  • {

  •     g_hsusbd_sInfo = param;

  •     g_hsusbd_pfnClassRequest = pfnClassReq;

  •     g_hsusbd_pfnSetInterface = pfnSetInterface;


  •     /* get EP0 maximum packet size */

  •     g_hsusbd_CtrlMaxPktSize = g_hsusbd_sInfo->gu8DevDesc[7];


  •     /* Initial USB engine */

  •     HSUSBD_ENABLE_PHY();


  •     /* wait PHY clock ready */

  •     while (1)

  •     {

  •         HSUSBD->EP[EPA].EPMPS = 0x20ul;

  •         if (HSUSBD->EP[EPA].EPMPS == 0x20ul)

  •         {

  •             HSUSBD->EP[EPA].EPMPS = 0x0ul;

  •             break;

  •         }

  •     }

  •     HSUSBD->OPER  = ~HSUSBD_OPER_HISPDEN_Msk;   /* full-speed */

  • }


其中这里的条件if (HSUSBD->EP[EPA].EPMPS == 0x20ul)一直满足不了,无法break退出来:

我这里已经确定了电路上的12M晶振已经跑起来了(使用频谱仪测试了)。所以一直想不到思路了,请教一下大家怎么处理,谢谢!





关键词: M487JIDAE     电路板    

助工
2024-11-05 21:47:51     打赏
2楼

从debug看来USB PHY初始化失败了。
可以从下面几点来debug:
1、 先测量晶振是否起振是对的,还需要确认晶振频率是否正确
2、 确认各个引脚之间没有短路
3、测量HUSB的电源
    HUSB_VDD33、HUSB_VDD12_CAP和HUSB_VSS没有短路
HUSB_VDD33 =3.3V
HUSB_VDD12_CAP=1.2V
4、测量D+ D-是否正常
测量D+ D-阻抗,如果阻抗没有异常可以再测一下二极管特性(正常应该0.6v左右)
5、如果上述都没有问题,PHY初始化依然失败,考虑芯片的USB PHY坏了,可以换一颗芯片再试试。 


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]