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

    文章

    5308

    浏览量

    119975
  • usb
    usb
    +关注

    关注

    60

    文章

    7888

    浏览量

    263915
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97157
  • 单板计算机
    +关注

    关注

    0

    文章

    74

    浏览量

    15610
  • 编译
    +关注

    关注

    0

    文章

    652

    浏览量

    32799
  • 驱动开发
    +关注

    关注

    0

    文章

    130

    浏览量

    12061
  • DWC2
    +关注

    关注

    0

    文章

    35

    浏览量

    119
收藏 人收藏

    评论

    相关推荐

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

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

    详解寄存器模型镜像值

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

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

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

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

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

    寄存器是什么意思?寄存器是如何构成的?

    在计算机科学中,寄存器(Register)是一个高速存储单元,它位于中央处理(CPU)内部,用于存储计算机程序执行过程中所需要的数据、指令地址或状态信息。寄存器是计算机体系结构中至关重要的组成部分,对计算机的运算速度和性能有着
    的头像 发表于 08-02 18:23 3222次阅读
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何构成的?

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

    寄存器寻址和直接寻址是计算机指令系统中的两种基本寻址方式。它们在指令的执行过程中起着至关重要的作用,决定了指令操作数的来源和目标。下面我们将介绍这两种寻址方式的特点、区别以及在实际应用中的优缺点
    的头像 发表于 07-12 10:42 1267次阅读

    寄存器寻址的实现方式

    在计算机体系结构中,寄存器寻址是一种常见的寻址方式,它允许程序直接访问CPU内部的寄存器寄存器寻址可以提高程序的执行效率,因为它避免了对内存的访问。 寄存器寻址的基本概念
    的头像 发表于 07-12 10:36 547次阅读

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 1093次阅读

    与定时相关寄存器有哪些类型

    ,微控制通常提供了一系列的定时寄存器,用于配置和控制定时的行为。 以下是一些常见的与定时相关
    的头像 发表于 07-12 10:25 753次阅读

    干货满满:ARM的内核寄存器讲解

    内核寄存器与外设寄存器: 内核寄存器与外设寄存器是完全不同的概念。内核寄存器是指 CPU 内部的寄存器
    发表于 04-17 11:47 2866次阅读
    干货满满:ARM的内核<b class='flag-5'>寄存器</b>讲解

    CPU的6个主要寄存器

    CPU寄存器是中央处理内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制
    的头像 发表于 02-03 15:15 3852次阅读

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一种用于在数字电路中实现数据移位操作的基本电路元件。它由多个触发以及相关控制电路组成,具有存储、接受和移动数据的功能。移位寄存器可以分为两种类型:串行移位
    的头像 发表于 01-18 10:52 7217次阅读

    MC17XS6500高边驱动芯片寄存器的介绍

    本文主要是对MC17XS6500高边驱动芯片寄存器进行的介绍,MC17XS6500寄存器分为输入寄存器和输出寄存器,对常用的几个输入和输出
    的头像 发表于 12-29 08:27 724次阅读
    MC17XS6500高边<b class='flag-5'>驱动</b>芯片<b class='flag-5'>寄存器</b>的介绍

    寄存器查看的功能和使用

    对于搞嵌入式底层开发的软件或者硬件工程师来说,经常会涉及到查看芯片手册,比如某个芯片的串口控制寄存器值,需要知道这个值对应寄存器的哪些位,微软计算
    的头像 发表于 11-28 12:26 1838次阅读
    <b class='flag-5'>寄存器</b>查看<b class='flag-5'>器</b>的功能和使用

    MSP430F5529硬件IIC驱动OLED(初始化使用的寄存器)

    MSP430F5529硬件IIC驱动OLED(初始化使用的寄存器)
    发表于 11-24 16:36 1次下载