主机指示能从设备接收数据通过清除在PSTATUS中的Bank 0/1准备好比特(PSTATUS.BK0/1RDY),这意味着bank的存贮空间对新的USB传输可用。 USB将执行输入请求同管道被用户冻结的时间一样长。 当管道没有冻结产生输入请求状态(PSTATUS.PFREEZE设为零)。 当当前的bank已经满了,在PINTFLAG的传输结束0/1比特将被置位并且如果使能触发一个中断,并且PSTATUS.BK0/1RDY比特将被设置。 PINTFLAG.TRCPT0/1必须被通过软件清除用来识别中断。这个通过写一个1到指定地址管道的PINTFLAG.TRCPT0/1。 用户通过读PCKSIZE.BYTE_COUNT来知道多少字节被读。 为了释放bank用户必须从管道描述里的地址ADDR读出输入的数据并且清PKSTATUS.BK0/1RDY比特。当输入管道是由多个bank组成,一个成功的输入交易将转换到下一个bank。另一个的输入请求将被主机执行同那个bank的PSTATUS.BK0/1RDY比特被设置时间一样长。PINTFLAG.TRCPT0/1和PSTATUS.BK0/1RDY将被相应地更新。 用户能跟踪当前bank看PSTATUS中的当前Bank比特(PSTATUS.CURBK)并且在PSTATUS(PSTATUS.DTGLIN)观察输入管道数据反转。 当管道被配置成单bank(在PCFG(PCFG.BK)管道Bank比特为0),只有PINTFLAG.TRCPT0和PSTATUS.BK0被使用。当管道被配置为双管道时(PCFG.BK是1),PINTFLAG.TRCPT0/1和PSTATUS.BK0/1都被使用。 31.6.3.11 输出管道管理 输出包由主机发出,所有的数据存在bank将被发出到设备防止bank被装满。在RAM中管道和它的描述符必须被配置。 主机可以发送数据到设备,当单bank时通过写设备的数据bank 0或者在双bank时写数据bank 0/1。 当管道是不冻结时(PSTATUS.PFREEZE是零)输出包开始产生。 用户写输入数据缓冲通过在管道描述符中的指向的地址,并且允许USB发送数据,通过向PSTATUS.BK0/1RDY写1。这也导致如果管道是双向bank配置,将转向下一个bank。 PINTFLAGn.TRCPT0/1必须在设置PSTATUS.BK0/1RDY以避免错过PINTFLAGn.TRCPT0/1之前被清除。 31.6.3.12 交替管道 用户也许连续运行几个逻辑管道在一个相同的物理管道。它允许给在总线上的任何连接设备的任何设备端点分配地址。 在转换管道之前,用户应保存管道的上下文(管道寄存器和管道n的描述符) 在转换管道之后,用户应重新取出管道的上下文(管道寄存器和管道描述符n)并且个别PCFG,和PSTATUS。
|