USB端点与中断:数据传输与DMA操作

需积分: 45 28 下载量 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,以满足不同应用的需求。