USB DMA传输错误与同步端点操作详解
需积分: 45 16 浏览量
更新于2024-08-06
收藏 18.87MB PDF 举报
"LPC178x系列微控制器的USB DMA传输机制与同步端点操作"
在LPC178x微控制器中,USB设备的DMA(直接内存访问)传输机制是高效处理数据的关键部分。当涉及到USB通信,尤其是在IN和OUT端点之间传输大量数据时,DMA可以显著减少CPU的介入,提高系统的整体性能。
首先,让我们关注"错误结束"的情况。如果在数据包传输过程中,由于某些原因导致数据未完全传输至DMA缓冲区,DD(DMA描述符)会被写回存储器,其DD_retired位置位,DD_status设置为DataOverrun状态。此时,端点的EOT中断产生,清除USBEpDMASt寄存器的相关位。当再次使用USBEpDMAEn寄存器使能EPxx_DMA_ENABLE时,未完全传输的数据包会从端点缓冲区重新发送,确保数据完整传输。
接下来,我们讨论"No_Packet DD"的情况。在IN传输中,如果系统暂时无数据可发送,可以设置No_Packet DD来响应NDDR中断。通过将DD的Max_packet_size和DMA_buffer_length字段设为0,系统可以在没有实际数据包的情况下清零USBDMARSt中对应端点的DMA请求位。这种状态下,DD退出,状态编码为NormalCompletion。设备将对IN令牌包以NAK信号回应,直到有数据包的DD被设置并由DMA传输至端点缓冲区。
关于同步端点的操作,它们的独特之处在于每个包的长度可能不同,每个同步端点在每帧信息传输时都有一个数据包。设置DMA传输时,软件需将DD的同步端点位设为1,并初始化Isochronous_packetsize_memory_address字段。同步端点的DMA_buffer_length和Present_DMA_count字段以帧数而非字节数表示。
在处理DMA请求时,DMA引擎会提取描述符,如果Isochronous_endpoint位置位,它将从DD的第5个字中提取Isochronous_packetsize_memory_address。数据传输完成后,Present_DMA_count的值会递增。
对于OUT端点,每帧信息传输后,软件将数据包大小写入 Isochronous_packet_size_memory_address 指定的地址,并将该地址值加4。而对于IN端点,只需使用Packet_length字段指定数据包大小,USB设备会在每个帧信息传输时向主机发送指定大小的数据包,传输结束后,Isocronous_packet_size_memory_address的值加4。若Packet_length为0,设备则发送空包。
LPC178x的USB DMA机制提供了灵活且高效的数据处理方式,能够适应不同类型的端点操作,特别是同步端点,保证了实时性和传输的准确性。E2PROM存储器和外部存储器控制器(EMC)虽然未在本次讨论中详述,但它们同样在LPC178x的系统架构中扮演着重要角色,提供了额外的存储解决方案。
2013-02-15 上传
2022-06-20 上传
2019-02-18 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-11-13 上传
2024-11-13 上传
2024-11-13 上传
Davider_Wu
- 粉丝: 45
- 资源: 3893
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载