"这篇文档主要介绍了与恩智浦K60微控制器相关的USB错误中断和处理机制,以及如何通过配置错误中断使能寄存器(USBx_ERREN)来管理这些错误。此外,还提到了K60中文文档的整合与获取来源,包括智能车制作论坛、飞思卡尔社区等平台,以及野火提供的K60开发板和模块的购买方式。"
在USB通信中,确保数据的完整性和正确传输至关重要。文档中提到的几个关键错误中断位如下:
1. **DFN8** (Data Field Not Multiple of 8):当接收的数据字段长度不是8字节的倍数时,此位被置1。USB 1.0规范要求数据字段必须为字节的整数倍,因此,如果违反了这个规则,设备会通过设置这个标志来指示错误。
2. **CRC16**:如果数据包的CRC16校验错误,表明数据包在传输过程中可能已损坏,该位被置1,数据包将被拒绝。
3. **CRC5EOF**:此中断有两种功能。在设备模式下,如果检测到主机发送的令牌包的CRC5错误,此位被置1,该令牌包将因校验错误被拒绝。在主机模式下,它用于检测EOF(End Of Frame)中断,这发生在USB模块在发送或接收数据时SOF(Start Of Frame)计数器为0时,对于规划USB事务调度非常有用。
4. **PIDERR**:Packet ID Error,如果PID(Packet Identifier)字段检查出错,该位被置1,表明包的标识符不正确。
错误中断使能寄存器(USBx_ERREN)允许开发者启用或禁用这些特定的错误中断。将相应位设置为1会开启ERRSTAT寄存器中的中断,一旦检测到错误,对应位会被立即置1。但是,这并不表示错误已经被处理。该寄存器在复位时所有位都被设置为0。
例如,要启用DFN8中断,需要将DFN8EN位设置为1;若要禁用DMA错误中断,需将DMAERREN位清零。寄存器的其他位如BTSERREN、DMAERREN和BTOERREN分别控制BTERR(Buffer Transfer Error)、DMAERR(DMA Error)和BTOERR(Buffer Overflow Error)中断。
在开发基于K60微控制器的USB系统时,理解和配置这些错误中断是确保系统可靠性和稳定性的重要步骤。同时,K60中文文档的整合提供了方便,让初学者能够更轻松地查找和学习相关资料。