31.6.3.13 数据流错误 这个错误只存在于同步和中断管道输入和输出方向。在PINTFLAG中的传输失败比特(PINTFLAG.TRFAIL)设置,这触发一个中断如果PINTENCLR/SET(PINTENCLR/SET.TRFAIL)被设置。用户必须检查管道中断摘要寄存器(PINTSMRY)来发现触发中断的管道。然后用户必须通过察看管道bank状态寄存器检查中断bank的来源。如果在STATUS_BK(STATUS_BK.ERRORFLOW)中的错误流比特被设置,那么用户能检测数据流错误的来源。当用户知道端点是一个输入或输出,错误流被推出是输出下溢或是输入上溢。 如果主机试图从一个空bank中发射数据,在输出阶段一个下溢将发生。如果一个新的事务成功了,相关bank描述符的STATUS_BK.ERRORFLOW将被清除。 如果设备试图发射一个包当bank是江满的,一个上溢能发生在一个输入阶段。典型这个发生是当CPU不够快。包数据没有写到bank并且丢失。如果一个新的交易成功,相关的bank描述符STATUS_BK.ERRORFLOW将被清除。 31.6.3.14 CRC错误 这个错误只在同步输入管道中发生。它设置PINTFLAG.TRFAIL,如果PINTENCLR/SET.TRFAIL被设置。用户必须检查PINTSMRY来找出触发中断的管道。 然后用户必须检查中断bank的源,通过看每个bank的bank描述符中STATUS_BK,并且如果在STATUS_BK(STATUS_BK.CRCERR)中的CTC错误比特被设置用户能检测CRC的错误源。在输入阶段如果USB检测一个损坏的包一个CRC错误能发生。输入包将仍然存贮在bank,PINTFLAG.TRCPT0/1将被设置。 31.6.3.15 PERR错误 这个错误存在于所有的通道。它设置PINTFLAG.PERR中断,如果PINTFLAG.PERR被设置它将触发一个中断。用户必须检查PINTSMRY寄存器来发现哪个管道导致中断。 如果在主机管道描述符中的STATUS_PIPE寄存器的一个错误段被设置并且在STATUS_PIPE中的错误记数字段(STATUS_PIPE.ERCNT)超过了在CTRL_PIPE定义的最大允许管道错误数(CTRL_PIPE.PERMAX)一个PERR错误发生。请参考STATUS_PIPE。 如果在主机描述符中的STATUS_PIPE寄存器中的一个错误字段被设置并且STATUS_PIPE.ERCNT比CTRL_PIPE.PERMAX小,STATUS_PIPE.ERCNT增加。
|