同步端点错误处理与DMA传输控制

需积分: 45 28 下载量 182 浏览量 更新于2024-08-06 收藏 18.87MB PDF 举报
《错误结束:Word的起源——英语单词的秘密历史A-Z》是一本探讨英语词汇历史的书籍,它深入浅出地揭示了单词的演变过程和背后的故事。本书不仅仅关注语言的字面意义,更侧重于探索词汇的来源和文化内涵。然而,在提供的IT技术背景部分,讨论的是LPC178x系列微控制器的相关功能,特别是DMA(Direct Memory Access)在数据包传输中的应用。 DMA是直接内存访问,一种处理器与外设之间快速交换数据的技术,无需CPU介入,提高了数据传输效率。在描述中,主要关注两个方面: 1. **数据包传输错误处理**: 如果数据包在传输过程中未能完整到达DMA缓冲区末尾,就会发生DataOverrun错误。这时,DD(Descriptor Doubleword,描述符双字)会被写回内存,DD_retired置位并设置为DataOverrun状态,EOT(End Of Transfer)中断会被触发,受影响的USB端点DMA请求位会被清除。为了纠正错误,剩余数据会在下次DMA启用时重新发送。 2. **No_Packet DD**: 对于IN(Input)传输,如果系统暂时没有数据,可以通过设置No_Packet DD来响应NDDR(Non-DMA Request)中断。Max_packet_size和DMA_buffer_length字段被设置为0,没有传输的数据包导致DMA请求位清零,DD状态变为NormalCompletion。系统会以NAK(Not Acknowledge)信号回应IN令牌包,直到有数据包被发送到DMA缓冲区。 3. **同步端点操作**: 同步端点支持不固定长度的数据包传输,每个帧传输一个数据包。操作流程包括:设置DMA传输,其中同步端点标志、帧大小等参数需要特殊处理;查找并提取DMA描述符,同步端点在帧中断时会产生DMA请求;传输数据时,数据从DMA_buffer_start_addr开始,传输完成后Present_DMA_count递增。对于OUT端点,每次传输后更新Isochronous_packet_size_memory_address;IN端点则在传输时根据Packet_length字段指定数据包大小,并在传输结束后更新地址。 这部分内容详细描述了在LPC178x/177x微控制器中如何通过DMA进行高效的数据包传输,并且强调了同步端点处理的特殊性。这对于理解和实现基于这些芯片的嵌入式系统设计至关重要,尤其是在实时性要求高的应用中。同时,它展示了如何在实际硬件环境中应用理论知识,使得技术文章不仅仅是理论探讨,还包含了实际工程实践的应用示例。