Host 接收和发送控制
3 Mar 2025
Read time: 1 minute(s)
-
通道初始化
-
使能相应通道的总中断
-
使能该次传输所需要的通道中断
-
设置该次传输的 PID、数据包数量、传输数据总长度
-
设置该次传输的最大包和传输方向
-
-
发送 OUT 传输
-
通道初始化
-
使能通道
-
使能 TXFIFO 的空中断
-
当 TXFIFO 空中断到来,读取 TXFIFO_STS 状态寄存器
-
对通道相应的 FIFO 的起始地址写数据,每次写 4Byte,直到写完配置的数据传输总长度
-
完成写数据后屏蔽 TXFIFO 的空中断
-
-
接收 IN 传输
-
通道初始化
-
使能通道
-
等待 RxFLvl 中断到来后,屏蔽 RxFLvl 中断
-
读取 RXFIFO_STS_POP 寄存器,将接收到的数据 POP 到端点相应的 FIFO 的起始地址(BASE_USB + 0x1000)。因此其它非接收数据操作时,不允许对此寄存器进行读操作,避免造成接收数据的错误。
-
通过读取 RXFIFO_STS_POP 寄存器可知接收数据的状态、接收到数据的 Byte 数量、通道号、数据 PID 类型等信息。
-
读取通道相应的 FIFO 的起始地址即可获取数据,每次读 4Byte,直到读完所有数据
-
使能 RxFLvl,等待下一次的传输
-
IN 传输完成后需要软件关闭通道并等待通道关闭的中断
-