USB端点与中断:数据传输与DMA操作
需积分: 45 123 浏览量
更新于2024-08-06
收藏 18.87MB PDF 举报
"从模式操作-word.origins.the.secret.histories.of.english.words.from.a.to.z"
在LPC178x微控制器中,从模式操作主要涉及CPU如何通过寄存器接口与RAM和端点缓冲区之间的数据交互。这种操作特别在处理USB通信时显得尤为重要,因为中断的产生和数据传输都是基于这种模式。
10.11 中断的产生:
在从模式中,中断是数据传输的关键机制。非同步的OUT端点在接收到数据包后会触发端点中断,这可以通过设置USBEpIntEn寄存器来启用,并通过USBEpIntSt寄存器来查询中断状态。非同步的IN端点则在成功发送数据包或发送NAK握手信号并启用了NAK特性中断时产生中断。同步端点的中断则与FRAME中断相关联,即在USBDevIntSt寄存器中出现FRAME中断时进行数据传输。
10.11.2 OUT端点的数据传输:
当软件需要从端点缓冲区读取数据时,需设置USBCtrl寄存器中的RD_EN位,并设定LOG_ENDPOINT字段为相应的端点编号。这样,控制逻辑会将数据包长度放入USBRxPLen寄存器,设置PKT_RDY标志。接下来,软件可以从USBRxData寄存器中读取数据。读取完成后,RD_EN位会被清除,USBDevSt寄存器的RxENDPKT位置位,提示软件可以清除缓冲区以接收新数据。对于同步OUT端点,即使缓冲区未清空,也会继续接收新的数据包,未读取的数据可能会丢失。
10.11.3 IN端点的数据传输:
在向端点缓冲区写入数据时,需要置位WR_EN位,并将待发送的数据字节数写入USBTxPLen寄存器,然后向USBTxData寄存器连续写入数据。一旦写入的数据量达到USBTxPLen寄存器设定的值,WR_EN位会清除,USBDevIntSt寄存器的TxENDPKT位置位,软件应确认缓冲区,以便端点可以发送数据包。对于IN同步端点,必须在下一帧中断前确认缓冲区,否则将发送空包。如果在写完整个包前清除WR_EN,下次重新置位时,写操作将从缓冲区开头继续。
10.11.4 DMA操作:
在DMA(直接内存访问)模式下,DMA控制器接管了CPU,负责在RAM和端点缓冲区之间直接传输数据,减轻了CPU的负担,提高了数据传输效率。
这些操作机制是LPC178x微控制器处理USB通信的基础,通过精确控制中断和DMA,确保了高效、可靠的外设间数据传输。同时,微控制器还包含其他功能部件,如E2PROM存储器和外部存储器控制器(EMC),它们提供了额外的存储和扩展能力。E2PROM用于非易失性数据存储,EMC则允许连接和控制外部存储设备,如SD卡或SRAM,以满足不同应用的需求。
2013-02-15 上传
2022-06-20 上传
2019-02-18 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
思索bike
- 粉丝: 38
- 资源: 3984
最新资源
- Haskell编写的C-Minus编译器针对TM架构实现
- 水电模拟工具HydroElectric开发使用Matlab
- Vue与antd结合的后台管理系统分模块打包技术解析
- 微信小游戏开发新框架:SFramework_LayaAir
- AFO算法与GA/PSO在多式联运路径优化中的应用研究
- MapleLeaflet:Ruby中构建Leaflet.js地图的简易工具
- FontForge安装包下载指南
- 个人博客系统开发:设计、安全与管理功能解析
- SmartWiki-AmazeUI风格:自定义Markdown Wiki系统
- USB虚拟串口驱动助力刻字机高效运行
- 加拿大早期种子投资通用条款清单详解
- SSM与Layui结合的汽车租赁系统
- 探索混沌与精英引导结合的鲸鱼优化算法
- Scala教程详解:代码实例与实践操作指南
- Rails 4.0+ 资产管道集成 Handlebars.js 实例解析
- Python实现Spark计算矩阵向量的余弦相似度