V1.0 / 指南 / 中文

TXW81x USB开发指南

TXW81x USB方案开发指南

泰芯半导体LOGO 2022版本透明底

责任与版权

责任限制

由于产品版本升级或者其他原因,本文档会不定期更新。除非另行约定,泰芯半导体有限公司对本文档所有内容不提供任何担保或授权。

客户应在遵守法律、法规和安全要求的前提下进行产品设计,并做充分验证。泰芯半导体有限公司对应用帮助或客户产品设计不承担任何义务。客户应对其使用泰芯半导体有限公司的产品和应用自行负责。

在适用法律允许的范围内,泰芯半导体有限公司在任何情况下,都不对因使用本文档相关内容及本文档描述的产品而产生的损失和损害进行超过购买支付价款的赔偿(除在涉及人身伤害的情况中根据适用的法律规定的损害赔偿外)。

版权申明

泰芯半导体有限公司保留随时修改本文档中任何信息的权利,无需提前通知且不承担任何责任。

未经泰芯半导体有限公司书面同意,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。除非获得相关权利人的许可,否则,任何人不能以任何形式对前述软件进行复制、分发、修改、摘录、反编译、反汇编、解密、反向工程、出租、转让、分许可等侵犯本文档描述的享有版权的软件版权的行为,但是适用法禁止此类限制的除外。

修订记录

日期

版本

描 述

修订人

2023-11-25

V1.0

初始版本

TX

1. 概述

本文为使用方案软件设计开发人员而写,目的帮助您快速入门USB方案开发。

本文档主要适用于以下工程师:

  • 技术支持工程师
  • 方案软件开发工程师

本文档适用的产品范围:

型号

封装

包装

TXW81x

2. USB Common

TXW81x USB支持DEVICE和HOST模式,支持USB2.0 HighSpeed传输,共有EP0/1/2/四对收发端点,除去EP0枚举外还有EP1/2/3 收发6个端点。

USB device硬件抽象层请查看usb_device.h,此抽象包含了USB HOST和DEVICE.

使用步骤如下:

  1. 和其他外设一样,使用前在device.c中先将设备加入系统设备链表

  1. 获取设备句柄(dev_get)、打开设备(usb_device_open)、配置设备(usb_device_ioctl)、中断请求(usb_device_request_irq)

详细说明:

  • usb_device_ioctl 使用说明

【USB_DEV_IO_CMD_AUTO_TX_NULL_PKT_ENABLE】:

【USB_DEV_IO_CMD_AUTO_TX_NULL_PKT_DISABLE】:USB自动发送空包:当发送包长和MaxPacketSize对齐时,自动补发空包作为短包结束开关。

【USB_DEV_IO_CMD_REMOTE_WAKEUP】:USB Device远程唤醒Host

【USB_DEV_IO_CMD_SET_ID】:USB Device VID/PID设置,此动作需要在usb_device_open后马上执行。

  • usb_device_request_irq使用说明

目前支持的usb irq如下:

【USB_DEV_RESET_IRQ】:usb device收到总线reset信号

【USB_DEV_SUSPEND_IRQ】:usb device收到总线suspend信号

【USB_DEV_RESUME_IRQ】:usb device收到总线resume信号

【USB_DEV_SOF_IRQ】:usb device收到总线sof信号

【USB_DEV_CTL_IRQ】:usb 端点0收发中断

【USB_EP_RX_IRQ】:usb 端点收到数据中断

【USB_EP_TX_IRQ】:usb 端点发送数据完成中断

【USB_CONNECT】:usb host发现设备连接上来中断

【USB_DISCONNECT】:usb host发现设备连接断开中断

【USB_BABBLE】:usb host遇到babble

【USB_XACT_ERR】:usb host遇到xact error

3. USB HOST

3.1. USB Host相关配置

方案配置看project_config.h配置:USB_HOST_EN和USB_EN均使能。

3.2. USB Host工作流程

USB Host软件配置和工作流程如下。

图3.2.1 USB Host工作流程图

4. USB Device

4.1. USB Device相关配置

方案配置看project_config.h配置:USB_EN使能。

Device配置已经抽象到了一个结构体:struct usb_device_cfg,此结构体在usb_device_open()的时候传入,USB后台枚举时会提取相应信息做枚举,结构体定义如下:

【vid】:厂商ID

【pid】:产品ID

【speed】:暂未使用

【p_device_descriptor】:设备描述符

【p_config_desc_hs/fs】:配置描述符

【config_desc_len】:配置描述符长度

【interface_num】:接口数量

【ep_nums】:端点数量(EP0不计入)

【ep_cfg】:端点配置:端点号、传输方向、传输类型、最大包大小

下面是自定义USB设备类的配置示例:

图4.1.1 自定义USB设备类配置示例

4.2. USB Device工作流程

    • USB Device配置和工作流程如:
      • 图4.2.1 USB Device软件配置和工作主流程
      • 图4.2.2 USB Device EP0后台枚举流程
  1. V2.50开发工具包枚举采用“后台”枚举流程
  2. V2.5.1以后开放了设备枚举流程,用户需实现以下函数接口:
    1. usb_device_ep0_setup_irq : 处理setup阶段获取各种描述符请求、类请求、厂商请求等信息
    2. usb_device_ep0_rx_irq : 处理数据阶段已接收完成的数据,通常在末尾调用hgusb20_dev_ep0_clrrx_pkt0处理status
    3. usb device epO tx irq : 处理数据阶段已发送完成数据

常规情况下,简单的USB Device方案,用户只需要配置好struct usb_device_cfg即可实现;

如果配置usb_device_cfg无法满足用户需求,则可以重写绿色部分的函数实现用户想要实现的功能,此动作需要要求熟悉USB协议,非必要不建议使用。

图4.2.1 USB Device软件配置和工作主流程

图4.2.2 USB Device EP0后台枚举流程