Edit online

Host 接收和发送控制

3 Mar 2025
Read time: 1 minute(s)
  1. 通道初始化

    1. 使能相应通道的总中断

    2. 使能该次传输所需要的通道中断

    3. 设置该次传输的 PID、数据包数量、传输数据总长度

    4. 设置该次传输的最大包和传输方向

  2. 发送 OUT 传输

    1. 通道初始化

    2. 使能通道

    3. 使能 TXFIFO 的空中断

    4. 当 TXFIFO 空中断到来,读取 TXFIFO_STS 状态寄存器

    5. 对通道相应的 FIFO 的起始地址写数据,每次写 4Byte,直到写完配置的数据传输总长度

    6. 完成写数据后屏蔽 TXFIFO 的空中断

  3. 接收 IN 传输

    1. 通道初始化

    2. 使能通道

    3. 等待 RxFLvl 中断到来后,屏蔽 RxFLvl 中断

    4. 读取 RXFIFO_STS_POP 寄存器,将接收到的数据 POP 到端点相应的 FIFO 的起始地址(BASE_USB + 0x1000)。因此其它非接收数据操作时,不允许对此寄存器进行读操作,避免造成接收数据的错误。

    5. 通过读取 RXFIFO_STS_POP 寄存器可知接收数据的状态、接收到数据的 Byte 数量、通道号、数据 PID 类型等信息。

    6. 读取通道相应的 FIFO 的起始地址即可获取数据,每次读 4Byte,直到读完所有数据

    7. 使能 RxFLvl,等待下一次的传输

    8. IN 传输完成后需要软件关闭通道并等待通道关闭的中断