bboyer
243

EZ-USB FX3 Endpoint的学习

概要

端点在USB中是一个重要的知识点。我们需要详细的了解这个知识点,以便创建端点,使其作为输入或者输出的点。

结构体 CyU3PEpConfig_t

struct CyU3PEpConfig_t {
  CyBool_t enable;
  CyU3PUsbEpType_t epType;
  uint16_t streams;
  uint16_t pcktSize;
  uint8_t  burstLen;
  uint8_t  isoPkts;
}
  • enable 端点是否开启
  • epType 端点类型:Control = 0, Isochronous = 1 , Bulk = 2, Interrupt = 3.
    • enum CyU3PUsbEpType_t {
      CY_U3P_USB_EP_CONTROL = 0,       /**< 控制端点类型 */
      CY_U3P_USB_EP_ISO = 1,          /**< Isochronous端点类型 */
      CY_U3P_USB_EP_BULK = 2,         /**< Bulk端点类型 */
      CY_U3P_USB_EP_INTR = 3          /**< 终端端点类型 */
      }
      
  • streams 端点的steams大小, 这个需要去指定,而不像super speed companion 描述符那样的stream count - 1
  • pcktSize 端点的最大的packet(包)大小。 如果最大数据包大小应设置为与 USB 规范一致的最大值,则可以设置为 0。
  • burstLen 在packet中最大的burst大小。 这个需要去指定,而不像super speed companion 描述符那样的burst length - 1
  • isoPkts ISO端点中每个微帧的packet数。 设置不为0的时候, 端点配置必须是3或者7

配置设置好后, 我们需要调用CyU3PSetEpConfig(端点值, 配置对象)来启用端点或者关闭端点。

端点

fx3设备有着30个Endpoint(后面翻译为端点)。 15个输出端点、15个输入端点。默认情况下, 所有端口都是没有开启的。 我们需要通过对应的函数调用来开启端点。我们也可以通过对应的关闭函数, 来关闭端点。

端点列表:

方向 端点列表
输出 0x01,0x02,...0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
输入 0x81,0x82,...0x8A,0x8B, 0x8C, 0x8D, 0x8E, 0x8F

这个端点值用在函数CyU3PSetEpConfig第一个参数上。

使用流程

Endpoint的使用是非常简单的,只需配置一下就可以。以下步骤:

  1. 创建CyU3PEpConfig_t类型对象, 配置对象的属性
  2. 调用CyU3PSetEpConfig函数, 传入端点及配置对象, 使其生效
  3. 在USB配置描述信息(参考端点描述)里面, 我们还需要配置对应端点的说明信息。
Fx3 端点设置 Endpoint USB端点
发布于: 2022年6月15日