本帖最后由 小恩GG 于 2022-3-2 14:47 编辑
从USB0到USB1软件更新方法小结
USB是英文Universal Serial Bus(通用串行总线)的缩写。NXP LPC目前集成了全速USB(FS, Full Speed,12Mbps)和高速(HS, High Speed,480Mbps)USB。 具体来讲,对于LPC系列: - 某些LPC如LPC55xx,LPC54xxx的部分芯片同时集成了HS USB和FS USB。 通常USB0 为FS USB, USB1为HS USB。 - 某些LPC如LPC43xx,LPC18xx 的部分芯片集成了两个HS USB, 那么USB0和USB1均为HS USB。 NXP为LPC系列推出的软件包最著名的两个软件包是MCUXpresso SDK 和 LPCOpen。MCUXpressoSDK主要面向NXP近几年推出的LPC产品, LPCOpen则用于更早期的LPC芯片。这两种软件包里涉及的USB 例程默认跑在USB0上。 本文推出的目的就是向用户介绍如何将基于USB0的例程切换为USB1的例程。
1 基于MCUXpressoSDK的USB Demo (例如LPC54XXX,LPC55XX系列) 基于MCUXpresso SDK开发包中的USB演示例程包括 - USB作为 Device : 例如usb_device_cdc_vcom,usb_device_hid_generic - USB 作为 Host:例如usb_host_hid_mouse,usb_host_msd_fatfs - 基于USB ROM 的demo code:usb_rom_device_audio,usb_rom_device_cdc 1.1更新USB device例程:USB0->USB1 以usb_device_cdc_vcom为例,要切换到USB1,只需将source\usb_device_config.h文件的对应代码变更如下。 /*! @brief LPC USB IP3511 FS instance count*/ #define USB_DEVICE_CONFIG_LPCIP3511FS (0U) /*! @brief LPC USB IP3511 HS instance count*/ #defineUSB_DEVICE_CONFIG_LPCIP3511HS (1U) 重新编译运行。程序更新为USB1 device demo。 1.2 更新USB host例程:USB0->USB1 以usb_host_hid_mouse为例,要切换到USB1,将source\usb_host_config.h中宏定义修改如下。 #defineUSB_HOST_CONFIG_KHCI (0U) #defineUSB_HOST_CONFIG_EHCI (0U) #define USB_HOST_CONFIG_OHCI (0U) #define USB_HOST_CONFIG_IP3516HS (1U) 重新编译运行。程序更新为USB1 host demo。 1.3 更新USB ROM例程:USB0->USB1 ( 如LPC54XXX系列) 由于USB ROM例程调用了USB ROM API,所以没有办法通过宏定义来将默认USB0切换为USB1。如果需要更改,推荐的修改步骤如下: -更改USB HS DEVICE 和USB PHY 时钟配置 -更改使用 USB HS ISR -将相关缓冲区定位到 USB RAM中 -将 USB ROM 手动设置为 HS模式
如果自己操作有困难,可以向nxp lpc申请demo code。
2. 基于LPCOpen的USB Demo (例如LPC43XX、LPC18XX系列) 某些芯片推荐在LPCOpen软件开发工具包上运行,例如LPC43xx系列、LPC18xx系列,尽管他们的USB0、USB1都是高速,但如果需要切换可在app_usbd_cfg.h中注释 #defineUSE_USB0 后取消注释 #defineUSE_USB1来完成。 // #define USE_USB0 #define USE_USB1
以usbd_rom_cdc_uartdemo为例: 重新编译运行,程序更新为USB1 demo。
3. 注意事项:
本文的侧重点在于转换USB0到USB1在软件上的修改。硬件上建议客户查阅对应demo板的手册,例如在USB1的情况下,可能需要外加电源,跳线也需要调整,搭建好使用于USB1运行的硬件环境。这里就不一一赘述了。
小结: 本文总结了常用的几个LPC系列在SDK和LPCOpen上将USB0切换为USB1的方法,客户如需USB1例程,可针对自己的软件和芯片在本文中查找到对应修改方法。
|