查看: 4543|回复: 5

[求助] MCUXpresso IDE配置工具配置USB失败

[复制链接]
  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-3-4
    发表于 2020-1-22 22:44:00 | 显示全部楼层 |阅读模式
    本帖最后由 day_day 于 2020-1-22 23:31 编辑

    使用SDK版本:2.6.3/2.7.0,IDE:11.1.0使用的板子是LPC55s69
    用MCUXpresso IDE带有的配置工具配置出来的USB工程,电脑无法识别USB,vendor id根本就没有传上来。

    import例程是可以的,dev_cdc_vcom_bm,能够正常识别。


    具体配置:
    1、建立工程时倒入USB相关SDK文件
    YC3AP)@55~{OPHB72_(]U38.png
    2、引脚配置
    ZF8KK)Y6}9I)X[BQE}V4YWN.png
    3、时钟配置
    (NQ]{0)2[A2APRK}H9A34{5.png
    4、外设配置,默认VCOM配置
    [6_%0JYDL6K~3F`~~FF(JLX.png
    5、主函数循环体内加入
    USB_DeviceTasks();


    一开始以为是VCOM配置工具有问题,后来试了下MSC RAM,发现电脑也是识别不了。
    是不是还要配置些什么其他东西?还是说这个配置工具出来的有bug?

    使用USBlyzer抓包,识别不了的包全是空的:
    抓包.png






    我知道答案 目前已有5人回答
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24978
    最后登录
    2025-7-25
    发表于 2020-1-23 09:11:52 | 显示全部楼层
    1.首先建议对比一下新创建工程的USB driver代码与SDK library内的工程中的USB driver代码有何区别;
    2. 从抓包数据来看,USB传递的是错误的数据,所以建议设置断点看看程序在响应PC的requet的时候具体代码是怎么运作的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-3-4
     楼主| 发表于 2020-1-25 19:54:14 | 显示全部楼层
    本帖最后由 day_day 于 2020-1-25 21:06 编辑

    找到解决方法了,生成的USB初始化代码确实有些问题,某种程度上也可以称为BUG。
    顺着 BOARD_InitBootPeripherals(); 找下去,会找到 USB_DeviceClockInit(void) 函数
    这里有一段时钟初始化代码:
    1.     if (USB0_GetClockSource() == kCLOCK_UsbfsSrcFro)
    2.     {
    3.         /* Turn ON FRO HF and let it adjust TRIM value based on USB SOF */
    4.         ANACTRL->FRO192M_CTRL = (ANACTRL->FRO192M_CTRL & ~(ANACTRL_FRO192M_CTRL_USBCLKADJ_MASK)) | ANACTRL_FRO192M_CTRL_USBCLKADJ(1U);

    5.     }

    6.     CLOCK_EnableClock(kCLOCK_Usbd0);
    7.     CLOCK_EnableClock(kCLOCK_UsbRam1);
    复制代码
    把这段代码改为:
    1. CLOCK_EnableUsbfs0DeviceClock(kCLOCK_UsbfsSrcFro, CLOCK_GetFroHfFreq());
    复制代码

    应该是生成的代码没有根据现有时钟配置做出对应的时钟配置,而 CLOCK_EnableUsbfs0DeviceClock 函数可以自动适配
    具体是否这个原因还需要再观察一下,但修改之后PC就能识别USB了
    -----------------------------------------
    观察了一下代码,发现USB需要用FRO_HF时钟,即kCLOCK_UsbfsSrcFro,但即使配置了这个时钟,让USB外设有96M的时钟,原本的代码依然无法正常运行。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-3-4
     楼主| 发表于 2020-1-25 21:39:13 | 显示全部楼层
    此外还有一个未解决的问题:
    中断里面接收到上位机发送的串口信息时, 在 kUSB_DeviceCdcEventRecvResponse 这个case里面 s_UsbInterface0CicVcom.startTransactions 没有被置1,导致逻辑判断error,没有响应上位机,上位机卡死。
    我手动清除掉这个 s_UsbInterface0CicVcom.startTransactions 的判断条件结果无补于事
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-3-4
     楼主| 发表于 2020-1-26 12:39:52 | 显示全部楼层
    上位机发送卡机的问题也解决了:
    1、函数 USB_DeviceInterface0CicVcomTask(void) 里面:
    1. if ((1 == s_UsbDeviceComposite->attach)&& (1 == s_UsbInterface0CicVcom.startTransactions) )       
    复制代码
    改为:
    1. if ((1 == s_UsbDeviceComposite->attach) )
    复制代码

    2、回调函数 USB_DeviceInterface0CicVcomCallback 里面
    case kUSB_DeviceCdcEventRecvResponse:下面,也安好第一点那样改,因为 s_UsbInterface0CicVcom.startTransactions 不知道因为什么原因,不会置位

    3、还是第二点的地方,还有个判断条件:
    if (!s_recvSize)
    改为
    if (s_recvSize)

    运行了一下,没有什么问题,不发送回车键只会回显,发送回车键,末尾多一行时间戳
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    2025-2-27
    发表于 2024-11-28 15:20:33 | 显示全部楼层
    楼主你好,4年了也不知道还有没有回复。

    描述如图片中所述。使用keil做分散加载的时候,相同的代码移植过来,用哪个RAM都行! ...

    描述如图片中所述。使用keil做分散加载的时候,相同的代码移植过来,用哪个RAM都行! ...
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-29 14:38 , Processed in 0.106539 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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