查看: 1418|回复: 1

[原创] 【IRD-LPC1768-DEV】USB CDC再探成功一次,失败一次

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

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1371
    最后登录
    2024-3-21
    发表于 2019-3-11 17:30:13 | 显示全部楼层 |阅读模式
    本帖最后由 day_day 于 2019-3-11 17:37 编辑

    (一)
    之前使用宝马了例程,无论如何都无法检测到设备:USB CDC初探失败
    后来证实了是硬件问题。

    上面这两颗电阻对应板子上的位置是没有焊上的,需要自己短接。
    短接后,宝马的例程就能够正常运行了。
    驱动程序最好选择segger的VCP驱动,网上很多LPC的驱动都是用不了的。

    (二)移植
    既然能够使用,那当然是先移植到自己的工程里面啦。

    宝马的usb库是完全基于旧的LPC17xx.h头文件,各种定义跟LPCOPEN新库不一样,所以这里又得翻回以前的工程……这个翻来翻去的过程够折腾的。
    把usb库加入工程之后,竟然发现出现了error?
    51.png
    找了半天,发现原来是C/C++选项卡里面两个选项被勾选上了。
    52.png
    去掉勾选就能去掉目前有的错误。

    但之后又产生了新的错误,这点让我很费解:
    分别需要在usbcore.h里面包含usbcfg.h、usbhw.h里面包含usb.h

    (三)应用
    头文件包含:

    1. #include "usbhw.h"
    2. #include "type.h"
    3. #include "usbcore.h"
    4. #include "usb.h"
    5. #include "usbcfg.h"
    6. #include "cdcuser.h"
    复制代码
    声明定义变量:
    1. char serBuf[20]="just you like\r\n";
    2.         int  numBytesRead = strlen(serBuf);
    复制代码
    初始化:
    1. USB_Init();                               // USB初始化
    2.   USB_Connect(TRUE);                        // USB 连接

    3.   while (!USB_Configuration) ;              // 等待USB配置完成
    4.         
    复制代码
    循环发送:
    1. USB_WriteEP (CDC_DEP_IN, (unsigned char *)&serBuf[0], numBytesRead);        //通过USB口发送数据
    2. delay_ms(1000);
    复制代码


    (四)效果
    61.png

    (五)新LPCOPEN库移植USB CDC失败
    虽然宝马这边轻轻松松就成功了,但新库的那边就大溃败了。
    一开始卡在USB时钟初始化的地方:
    1. Chip_USB_Init();
    复制代码
    这个是库函数的初始化USB的函数,主要是一些时钟初始化的工作,跟踪到里面,具体是卡在:
    1. /* Wait for PLL1 to lock */
    2.         while (!Chip_Clock_IsUSBPLLLocked()) {}
    复制代码
    等待PLL1上锁这里。
    后来发现是因为在C/C++选项卡里面定义了NO_BOARD_LIB(没办法,我没用lib文件,不可能一个个board文件都加进来)

    后来重新捣鼓了一个跟LPCOPEN2.0库里面的USBCDC一样的工程,去掉NO_BOARD_LIB,然后就顺利通过Chip_USB_Init,但随后依然卡在了卡在了USB操作初始化的地方(这跟上面不是一个同初始化):
    1. /* USB Initialization */
    2.         ret = USBD_API->hw->Init(&g_hUsb, &desc, &usb_param);
    复制代码
    这么看来例程也不是拿来就能用的……听说要改哪里?

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    3 天前
  • 签到天数: 1480 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92793
    最后登录
    2024-4-29
    发表于 2019-3-12 07:56:47 | 显示全部楼层
    那个例程写的太稀烂了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-30 00:50 , Processed in 0.112091 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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