0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DWC2的USB驅(qū)動開發(fā)-DOEP接收相關(guān)的其他寄存器詳解

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-07-19 10:50 ? 次閱讀

本文轉(zhuǎn)走公眾號歡迎關(guān)注

基于DWC2的USB驅(qū)動開發(fā)-DOEP接收相關(guān)的其他寄存器詳解 (qq.com)

前言

前面介紹了DOEP的DMA相關(guān)的寄存器,這一篇繼續(xù)來講剩下的寄存器。

DOEPTSIZi

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

RxDPID對于控制OUT端點(diǎn)表示可以接收連續(xù)的SETUP包數(shù),只讀

對于同步 OUT端點(diǎn),用于表示最后接收的包的類型,只讀。

圖片

PktCnt軟件寫接收的包數(shù),硬件處理完即指定的包數(shù)從RxFIFO搬運(yùn)到用戶存儲之后,該值硬件更新遞減,處理完變?yōu)?.

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

圖片

傳輸數(shù)據(jù)的大小,軟件寫該寄存器表示有多少數(shù)據(jù)需要接收,硬件從RxFIFO搬運(yùn)了指定數(shù)據(jù)到用戶指定的DMA區(qū)域時(shí)產(chǎn)生接收完成中斷,并且硬件更新該值,接收了多少數(shù)據(jù)就減少多少,減少到0說明接收完

只有非Scatter/Gather DMA的DMA模式才有,Scatter/Gather DMA模式在描述符中定義
圖片

DOEPINTi

寄存器偏移地址

0xB08 + i*20

各中斷狀態(tài)位,寫1清零
圖片

其中XferCompl表示接收完,是最重要中斷。其他中斷狀態(tài),后面驅(qū)動講接收中斷處理時(shí)單獨(dú)詳講。

比如如下OUT中斷讀出值為0x201即XferCompl=1和BNAIntr=1,即接收完成沒有后續(xù)描述符需要處理了。
圖片

DOEPCTLi

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

幾乎和DIEP對應(yīng)的寄存器是對應(yīng)的,參考上篇DIEP相關(guān)的介紹

圖片

如下是OUT 中斷時(shí)寄存器值

CTL寄存器值為0x48040,

接收中斷時(shí)ENPena硬件自動清零了,

EPType為ISO端點(diǎn)

USBActEP=1表示端點(diǎn)是激活狀態(tài)

包大小為0x40

圖片

另外雖然是Scatter/Gather DMA模式實(shí)際我們觀察DOEPTSIZi也是會遞減變化的,

包括偏移0xB18 + i*20處的值(之前說的對于DOEP保留的對應(yīng)DIEP的DTXFSTSi的寄存器)也是會遞減的,只是手冊描述保留了,實(shí)際IP應(yīng)該還是有使用更新的,這個(gè)要去看IP的代碼了,應(yīng)該是不開放給用戶。

總結(jié)

對于接收即OUT端點(diǎn),

Scatter/Gather DMA模式就只需要配置兩個(gè)寄存器

DOEPCTLi

DOEPDMAi為描述符鏈表的地址, 還需要填充描述符的內(nèi)容

最后DOEPCTLi的EPEna置位,開始交給DMA去接收數(shù)據(jù),此時(shí)軟件不能再訪問相關(guān)寄存器,必須等接收完成中斷EPEna硬件清零,軟件才能去訪問。

非Scatter/Gather DMA模式,則還要配置DOEPTSIZi 和DOEPDMABi ,配置緩沖區(qū)和傳輸數(shù)據(jù)大小,Scatter/Gather DMA模式這兩個(gè)寄存器不需要配置,對應(yīng)信息在描述符中配置。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119205
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7773

    瀏覽量

    262389
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4771

    瀏覽量

    96176
  • 單板計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    15569
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    646

    瀏覽量

    32671
  • 驅(qū)動開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    130

    瀏覽量

    12036
  • DWC2
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    110
收藏 人收藏

    評論

    相關(guān)推薦

    寄存器是什么意思?寄存器是如何構(gòu)成的?

    在計(jì)算機(jī)科學(xué)中,寄存器(Register)是一個(gè)高速存儲單元,它位于中央處理(CPU)內(nèi)部,用于存儲計(jì)算機(jī)程序執(zhí)行過程中所需要的數(shù)據(jù)、指令地址或狀態(tài)信息。寄存器是計(jì)算機(jī)體系結(jié)構(gòu)中至關(guān)重要的組成部分,對計(jì)算機(jī)的運(yùn)算速度和性能有著
    的頭像 發(fā)表于 08-02 18:23 ?1498次閱讀
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何構(gòu)成的?

    寄存器尋址和直接尋址的區(qū)別

    寄存器尋址和直接尋址是計(jì)算機(jī)指令系統(tǒng)中的兩種基本尋址方式。它們在指令的執(zhí)行過程中起著至關(guān)重要的作用,決定了指令操作數(shù)的來源和目標(biāo)。下面我們將介紹這兩種尋址方式的特點(diǎn)、區(qū)別以及在實(shí)際應(yīng)用中的優(yōu)缺點(diǎn)
    的頭像 發(fā)表于 07-12 10:42 ?465次閱讀

    寄存器尋址的實(shí)現(xiàn)方式

    在計(jì)算機(jī)體系結(jié)構(gòu)中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部的寄存器寄存器尋址可以提高程序的執(zhí)行效率,因?yàn)樗苊饬藢?nèi)存的訪問。 寄存器尋址的基本概念
    的頭像 發(fā)表于 07-12 10:36 ?360次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲數(shù)據(jù)的高速存儲單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?635次閱讀

    與定時(shí)相關(guān)寄存器有哪些類型

    ,微控制通常提供了一系列的定時(shí)寄存器,用于配置和控制定時(shí)的行為。 以下是一些常見的與定時(shí)相關(guān)
    的頭像 發(fā)表于 07-12 10:25 ?362次閱讀

    干貨滿滿:ARM的內(nèi)核寄存器講解

    內(nèi)核寄存器與外設(shè)寄存器: 內(nèi)核寄存器與外設(shè)寄存器是完全不同的概念。內(nèi)核寄存器是指 CPU 內(nèi)部的寄存器
    發(fā)表于 04-17 11:47 ?1905次閱讀
    干貨滿滿:ARM的內(nèi)核<b class='flag-5'>寄存器</b>講解

    CPU的6個(gè)主要寄存器

    CPU寄存器是中央處理內(nèi)的組成部分,是有限存貯容量的高速存貯部件。寄存器是CPU內(nèi)部的元件,包括通用寄存器、專用寄存器和控制
    的頭像 發(fā)表于 02-03 15:15 ?2941次閱讀

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

    移位寄存器是一種用于在數(shù)字電路中實(shí)現(xiàn)數(shù)據(jù)移位操作的基本電路元件。它由多個(gè)觸發(fā)以及相關(guān)控制電路組成,具有存儲、接受和移動數(shù)據(jù)的功能。移位寄存器可以分為兩種類型:串行移位
    的頭像 發(fā)表于 01-18 10:52 ?6008次閱讀

    MC17XS6500高邊驅(qū)動芯片寄存器的介紹

    本文主要是對MC17XS6500高邊驅(qū)動芯片寄存器進(jìn)行的介紹,MC17XS6500寄存器分為輸入寄存器和輸出寄存器,對常用的幾個(gè)輸入和輸出
    的頭像 發(fā)表于 12-29 08:27 ?585次閱讀
    MC17XS6500高邊<b class='flag-5'>驅(qū)動</b>芯片<b class='flag-5'>寄存器</b>的介紹

    寄存器查看的功能和使用

    對于搞嵌入式底層開發(fā)的軟件或者硬件工程師來說,經(jīng)常會涉及到查看芯片手冊,比如某個(gè)芯片的串口控制寄存器值,需要知道這個(gè)值對應(yīng)寄存器的哪些位,微軟計(jì)算
    的頭像 發(fā)表于 11-28 12:26 ?1427次閱讀
    <b class='flag-5'>寄存器</b>查看<b class='flag-5'>器</b>的功能和使用

    MSP430F5529硬件IIC驅(qū)動OLED(初始化使用的寄存器)

    MSP430F5529硬件IIC驅(qū)動OLED(初始化使用的寄存器)
    發(fā)表于 11-24 16:36 ?1次下載

    寄存器開發(fā),HAL開發(fā)和LL開發(fā)的區(qū)別和參考代碼

    不依賴高級的抽象層。以下是寄存器開發(fā)的一般步驟和示例:1.包含頭文件在程序中包含與目標(biāo)微控制系列相關(guān)寄存器定義頭文件。#include
    的頭像 發(fā)表于 11-17 08:00 ?1018次閱讀
    <b class='flag-5'>寄存器</b><b class='flag-5'>開發(fā)</b>,HAL<b class='flag-5'>開發(fā)</b>和LL<b class='flag-5'>開發(fā)</b>的區(qū)別和參考代碼

    gic的寄存器 gicv3的LPI中斷

    (1)gicv2寄存器 gicv2寄存器,都是使用memory-mapped的方式去訪問的 ? ?GICD_: distributor的寄存器
    的頭像 發(fā)表于 11-08 16:09 ?561次閱讀

    CPSR寄存器和APSR寄存器的組成

    程序狀態(tài)寄存器的作用就是反映處理的狀態(tài)信息。在程序運(yùn)行期間我們可以通過查看程序狀態(tài)寄存器的狀態(tài)位來進(jìn)行程序的分支跳轉(zhuǎn)處理,或者我們可以設(shè)置程序狀態(tài)寄存器的模式位來改變處理
    的頭像 發(fā)表于 10-20 11:38 ?3731次閱讀
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的組成

    Linux驅(qū)動操作寄存器

    ,第四個(gè)參數(shù)是映射的大小。 驅(qū)動中操作: #define?OFFSET??0x60?//某個(gè)寄存器的偏移地址 static?int?my_probe(struct?platform_device
    的頭像 發(fā)表于 09-26 16:34 ?673次閱讀