嵌入式Lee

文章数:196 被阅读:578672

datasheet推荐 换一换
随便看看
账号入驻

基于DWC2的USB驱动开发-DOEP接收相关的其他寄存器详解

最新更新时间:2023-07-19
    阅读数:

前言

前面介绍了 DOEP DMA 相关的寄存器,这一篇继续来讲剩下的寄存器。

DOEPTSIZi

寄存器偏移地址 0xB10 + i*20

RxDPID 对于控制 OUT 端点表示可以接收连续的 SETUP 包数,只读

对于同步 OUT 端点,用于表示最后接收的包的类型,只读。

PktCnt 软件写接收的包数,硬件处理完即指定的包数从 RxFIFO 搬运到用户存储之后,该值硬件更新递减,处理完变为 0.

只有非 Scatter/Gather DMA DMA 模式才有, Scatter/Gather DMA 模式在描述符中定义

传输数据的大小,软件写该寄存器表示有多少数据需要接收,硬件从 RxFIFO 搬运了指定数据到用户指定的 DMA 区域时产生接收完成中断,并且硬件更新该值,接收了多少数据就减少多少,减少到 0 说明接收完

只有非 Scatter/Gather DMA DMA 模式才有, Scatter/Gather DMA 模式在描述符中定义

DOEPINTi

寄存器偏移地址

0xB08 + i*20

各中断状态位,写 1 清零

其中 XferCompl 表示接收完,是最重要中断。其他中断状态,后面驱动讲接收中断处理时单独详讲。

比如如下 OUT 中断读出值为 0x201 XferCompl=1 BNAIntr=1 ,即接收完成没有后续描述符需要处理了。

DOEPCTLi

寄存器偏移地址 0xB00 + i*20

几乎和 DIEP 对应的寄存器是对应的,参考上篇 DIEP 相关的介绍

如下是 OUT 中断时寄存器值

CTL 寄存器值为 0x48040,

接收中断时 ENPena 硬件自动清零了,

EPType ISO 端点

USBActEP =1 表示端点是激活状态

包大小为 0x40

另外虽然是 Scatter/Gather DMA 模式实际我们观察 DOEPTSIZi 也是会递减变化的,

包括偏移 0xB18 + i*20 处的值 ( 之前说的对于 DOEP 保留的对应 DIEP DTXFSTSi 的寄存器 ) 也是会递减的 , 只是手册描述保留了,实际 IP 应该还是有使用更新的,这个要去看 IP 的代码了,应该是不开放给用户。

总结

对于接收即 OUT 端点,

Scatter/Gather DMA 模式就只需要配置两个寄存器

DOEPCTL i

DOEPDMAi 为描述符链表的地址, 还需要填充描述符的内容

最后 DOEPCTLi EPEna 置位,开始交给 DMA 去接收数据,此时软件不能再访问相关寄存器,必须等接收完成中断 EPEna 硬件清零, 软件才能去访问。

Scatter/Gather DMA 模式,则还要配置 DOEPTSIZi DOEPDMABi 配置缓冲区和传输数据大小, Scatter/Gather DMA 模式这两个寄存器不需要配置,对应信息在描述符中配置。



最新有关嵌入式Lee的文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved