0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式USB开发 ? 来源:嵌入式USB开发 ? 作者:嵌入式USB开发 ? 2023-07-19 10:50 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文转走公众号欢迎关注

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

前言

前面介绍了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模式就只需要配置两个寄存器

DOEPCTLi

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

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

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5447

    浏览量

    125399
  • usb
    usb
    +关注

    关注

    60

    文章

    8264

    浏览量

    274865
  • 开发板
    +关注

    关注

    25

    文章

    5772

    浏览量

    106459
  • 单板计算机
    +关注

    关注

    0

    文章

    87

    浏览量

    16018
  • 编译
    +关注

    关注

    0

    文章

    680

    浏览量

    34318
  • 驱动开发
    +关注

    关注

    0

    文章

    134

    浏览量

    12360
  • DWC2
    +关注

    关注

    0

    文章

    35

    浏览量

    273
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 ?738次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    如何通过USB或者I2C对DLPC910的寄存器进行配置?

    1、如何通过USB或者I2C对DLPC910的寄存器进行配置,是否有相应的软件提供,此外, 2、TIDA-00570参考设计中,电路板上电后,ECP_FINISHED信号并未拉高
    发表于 02-28 06:57

    新思 DWC2 的参考手册从哪里可以下载

    最近在学习STM32F4 USB驱动,有看到 dwc2驱动的代码,但是没有手册用来参考,ST手册上寄存器不全,从网上看到有下面两个手册,但
    发表于 01-22 11:32

    迅为RK3568开发板SPI驱动指南-mcp2515驱动编写:读寄存器函数

    迅为RK3568开发板SPI驱动指南-mcp2515驱动编写:读寄存器函数
    的头像 发表于 01-20 14:43 ?1157次阅读
    迅为RK3568<b class='flag-5'>开发</b>板SPI<b class='flag-5'>驱动</b>指南-mcp2515<b class='flag-5'>驱动</b>编写:读<b class='flag-5'>寄存器</b>函数

    写单个线圈与单个保持寄存器相关

    ,0xFF00表示 ON状态,0x0000表示OFF状态。其他值均是非法的,并且对寄存器不起作用,将会返回异常响应。
    的头像 发表于 11-01 13:46 ?838次阅读

    Modbus协议的读取保持寄存器

    功能码用于读取从设备保持寄存器的内容,不支持广播模式。消息顿中指定了需要读取的保持寄存器的起始地址和数目。而保持寄存器中各地址的具体内容和意义则由设备开发者自行规定。
    的头像 发表于 10-30 10:54 ?4283次阅读

    详解寄存器模型镜像值

    DUT的配置寄存器的值是实际值,reg_model有镜像值、期望值的概念。
    的头像 发表于 10-23 09:43 ?1162次阅读
    <b class='flag-5'>详解</b><b class='flag-5'>寄存器</b>模型镜像值

    接口的控制与状态寄存器什么作用

    接口的控制与状态寄存器(Control and Status Registers,简称CSR)是计算机系统中用于控制和监控硬件设备操作的寄存器。它们是硬件设备与其驱动程序之间的桥梁,允许软件控制硬件
    的头像 发表于 10-17 10:42 ?1677次阅读

    什么是寄存器移位寻址

    寄存器移位寻址是一种特定的寻址方式,主要出现在某些处理架构中,如ARM指令集。这种寻址方式在处理数据移动和操作时提供了极大的灵活性和效率。下面将从定义、工作原理、特点、应用场景以及与其他寻址方式的对比等方面对
    的头像 发表于 10-05 17:38 ?1151次阅读

    寄存器间接寻址和寄存器寻址的区别

    寄存器间接寻址和寄存器寻址是计算机体系结构中两种重要的寻址方式,它们在指令执行过程中起着关键作用。下面将从定义、原理、特点、应用场景以及区别等方面对这两种寻址方式进行详细阐述。
    的头像 发表于 10-05 17:13 ?3807次阅读

    PCM1864 PGA相关寄存器1,2,3,4写不进去,为什么?

    pcm1864 只有寄存器地址是1,2,3,4的写不进去,其他寄存器可以写,寄存器地址是1,2
    发表于 09-29 07:49

    ARM寄存器的分类及功能

    ARM寄存器是ARM处理内部的重要组成部分,它们在处理的运算、控制以及数据存储等方面发挥着至关重要的作用。下面,我们将从ARM寄存器的定义、结构、分类以及功能等多个方面进行详细阐述
    的头像 发表于 09-05 14:18 ?3168次阅读

    通用寄存器是什么意思

    在计算机体系结构中,通用寄存器是中央处理(CPU)内部最为核心和基础的组成部分之一。它们被设计为能够存储和传输各种类型的数据和指令,是CPU进行数据处理和运算的关键工具。通用寄存器不仅在程序的执行过程中起着至关重要的作用,还直
    的头像 发表于 09-05 14:13 ?2533次阅读

    寄存器的类型和作用

    在计算机科学中,寄存器(Register)是一种高速存储单元,它位于CPU内部,与CPU的运算单元和逻辑控制单元紧密相连。寄存器的主要作用是暂时存储指令、操作数和地址等临时数据,以便CPU快速访问和处理。由于寄存器直接集成在CP
    的头像 发表于 09-05 14:11 ?5103次阅读

    寄存器故障分析

    寄存器故障分析是计算机硬件维护与系统稳定性保障中的重要环节。寄存器作为计算机中的关键组成部分,负责存储和传输数据,其稳定性和可靠性直接影响到整个计算机系统的性能。以下是对寄存器故障的全面分析,包括故障类型、故障现象、故障原因及诊
    的头像 发表于 08-29 11:26 ?2358次阅读