1. USB应用指南

该文档围绕 USB 应用展开,主要从简介、从机与主机的定义及应用场景、配置方法、主要特性和使用注意事项等方面进行了介绍,梳理如下:

1.1 简介

  • USB 位于 HPSYS,芯片集成一路全速(FS)USB2.0Host/Device 接口,符合 USB2.0 协议规范。

  • 功能包括:

    • 软件可配置端点设置,支持挂起 / 恢复;

    • 支持动态 FIFO 大小;

    • 支持会话请求协议和主机协商协议;

    • 支持全速及慢速模式;

    • 片内集成 USB2.0FSPHY;

    • 拥有 ep0~ep7 8 个通道。

1.2 USB-SLAVE 定义与应用场景

USB-SLAVE(从设备)是指在 USB 通信中,设备作为被动端响应主机(Host)的请求,完成数据的收发和控制。

常见的 USB-SLAVE 应用场景包括:

  • 外部存储设备(如 U 盘、移动硬盘)

  • USB 键盘、鼠标等人机交互设备

  • 摄像头、打印机等外设

  • 工业控制、数据采集终端

  • 音频、视频传输设备

在这些场景中,USB-SLAVE 设备通过标准的 USB 协议与主机进行通信,实现即插即用、跨平台的数据交换和控制功能。

目前在平台中已经调试完成的应用场景如下:

  • MSTORAGE

  • CDC-VCOM

  • printer

1.3 USB-HOST 定义与应用场景

USB-HOST(主机)是指在 USB 通信中,设备作为主动端发起对从设备(Device)的控制和数据传输。主机负责总线管理、设备枚举、供电和数据交换等任务。

常见的 USB-HOST 应用场景包括:

  • 连接 U 盘、移动硬盘等存储设备,实现数据读写

  • 连接 USB 键盘、鼠标等外设,实现人机交互

  • 连接打印机、摄像头等设备,扩展系统功能

  • 工业控制系统中作为主控端,管理多个 USB 设备

  • 车载、医疗等嵌入式系统的外设扩展

在这些场景中,USB-HOST 通过标准 USB 协议管理和访问各种 USB 从设备,实现灵活的外设扩展和数据交互。

1.4 从机配置

  1. 使能USBD slave设备 “BSP_USING_USBD”

../../_images/usb_slave_1.png
  1. 使能对应的USB 的应用设备

../../_images/usb_slave_2.png
  1. 修改usbd的硬件ID

../../_images/usb_slave_3.png

1.5 主机配置

  1. 使能USBD host设备 “BSP_USING_USBH”

../../_images/usb_host_1.png
  1. 使能对应的USB 的应用设备

../../_images/usb_host_2.png

目前在平台中已经调试完成的应用场景如下:

  • udisk

  • RNDIS

1.6 主要特性

  • 56x/52x 芯片拥有 ep0~ep7 8 个通道,其中 ep2~ep4 只支持 rx (即 host 只支持 IN,device 只支持 OUT),ep5~ep7 只支持 tx (即 host 只支持 OUT,device 只支持 IN);

  • 55x 芯片不支持 DMA 模式;只支持 device 模式

  • 58x 芯片 ep0~ep7 8 个通道都支持 IN 与 OUT; 支持高速(HS)、全速模式(FS)

1.7 USB 使用注意事项

  1. 由于 USB 使用时候 usb 的频率必须在 60MHz 下,因此 usb 在使用的时候不能降频不能睡眠。

//禁止睡眠
rt_pm_request(PM_SLEEP_MODE_IDLE);
//退出禁止睡眠
rt_pm_release(PM_SLEEP_MODE_IDLE);
//禁止降频
rt_pm_hw_device_start();
//退出禁止降频
rt_pm_hw_device_stop();
  1. 由于目前 USB slave 模式下在拔出的时候没有拔出中断,因此需要外部 VBUS 分压到芯片一个 IO 口来作为 USB 的插拔检测。