色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

基于DWC2的USB驅(qū)動(dòng)開(kāi)發(fā)-發(fā)送相關(guān)的寄存器DMA寄存器詳解

嵌入式USB開(kāi)發(fā) ? 來(lái)源:嵌入式USB開(kāi)發(fā) ? 作者:嵌入式USB開(kāi)發(fā) ? 2023-07-16 16:42 ? 次閱讀

本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注

基于DWC2的USB驅(qū)動(dòng)開(kāi)發(fā)-發(fā)送相關(guān)的寄存器DMA寄存器詳解 (qq.com)

前言

如下寄存器DIEPxxx,對(duì)應(yīng)IN端點(diǎn),和發(fā)送數(shù)據(jù)相關(guān),這一篇先介紹和DMA相關(guān)的兩個(gè)寄存器,其他的后續(xù)再講,

并且通過(guò)觀察其寄存器的實(shí)際值的變化來(lái)加深理解。

了解這些值的含義以及何時(shí)如何變化,可以在有問(wèn)題時(shí)幫助進(jìn)行調(diào)試,知道當(dāng)前出于何種狀態(tài)。

以下實(shí)例是以Scatter/Gather DMA模式IN端點(diǎn)1進(jìn)行操作

寄存器的地址偏移分別是

0x900+i*0x20

0x908+i*0x20

0x910+i*0x20

0x914+i*0x20

0x918+i*0x20

0x91C+i*0x20

圖片

DIEPDMA****i

寄存器偏移:0x914 + i*20

Scatter/Gather DMA模式時(shí)該寄存器的值即用戶指定的描述符鏈表的地址

非Scatter/Gather DMA時(shí)該寄存器的值即用戶指定的DMA待發(fā)送數(shù)據(jù)的地址。

必須DWORD即8字節(jié)對(duì)齊。

比如這里描述符鏈表使用了全局?jǐn)?shù)組,用attribute指定對(duì)齊大小

attribute ((aligned(8))) static uint32_t s_dam[1024][2];

注意該寄存器在每次處理完描述符后會(huì)遞增,用戶可以通過(guò)該寄存器判斷DMA是否進(jìn)行了描述符的處理。

注意該寄存器需要CTL寄存器ENA置位后才能回讀否則讀到的是0.

我們以一個(gè)實(shí)例來(lái)看該寄存器值的變化,以下是關(guān)鍵代碼,即準(zhǔn)備一次DMA發(fā)送,前面描述符的準(zhǔn)備過(guò)程不在這里貼出。

void ep_writedma(uint32_t dma, uint8_t epnum)
{
  REG_DIEP_DMA(epnum) = dma;
  REG_DIEP_CTL(epnum) |= (DEP_ENA_BIT | DEP_CLEAR_NAK);
}

以下是執(zhí)行REG_DIEP_DMA(epnum) = dma;前,寄存器DIEPDMA1的值為0

傳入的參數(shù)即描述符鏈表的地址是0x81008d8是8字節(jié)的對(duì)齊的

此時(shí)a0為0x81008d8,即我們的描述符鏈表的地址

a4為寄存器地址0x3000934,sw a0,0(a4) 即將0x81008d8寫入寄存器0x3000934
圖片

注意在CTL寄存器使能端點(diǎn)之前是不能回讀該寄存器的值的,如下為0

執(zhí)行完sw語(yǔ)句再來(lái)看,此時(shí)DIEPDMA1還是0

圖片

在執(zhí)行完使能,CTL寄存器的ENA置位后才能看到,如下此時(shí)看待DIEPDMA1的值變?yōu)榱?x08100968,為什么不是寫入的0x81008d8呢,也就時(shí)之前說(shuō)的,ENA一置位,DMA就會(huì)去處理該描述符,0x08100968-0x81008d8=0x90=144 ,144/8=18個(gè)描述符(一個(gè)描述符2個(gè)WORD8字節(jié))。

圖片

那么為什么該寄存器值遞增了這么多呢

那是因?yàn)槲覀冞@里配置p_dam就是配置了18個(gè)描述符,如下18個(gè)DWORD,所以可以看到如下18個(gè)描述符一起處理完了,最后一個(gè)描述符標(biāo)志了是最后一個(gè)。

圖片

DIEPDMABi

寄存器偏移:0x91C + i*20

該寄存器只有Scatter/Gather DMA模式有效,非Scatter/Gather DMA模式,DIEPDMAi就是用戶緩沖區(qū)的地址,也就是Scatter/Gather DMA模式的本寄存器。

用于指示當(dāng)前正在處理的用戶緩沖區(qū)的地址,DMA處理完指定緩沖區(qū)后就會(huì)更新。

所以從該寄存器可以看到是否處理了用戶的緩沖區(qū)數(shù)據(jù)。

同樣是CTL的ENA置位后,處理完描述符后更新,從以下可以看出最后一個(gè)描述的用戶數(shù)據(jù)緩沖區(qū)地址為0x8704400長(zhǎng)度為0x3C1,所以處理完后DIEPDMAB1更新為了0x87047C1

圖片

總結(jié)

這里重點(diǎn)講解了DMA相關(guān)的兩個(gè)寄存器,主要是他們可以協(xié)助分析數(shù)據(jù)發(fā)送,比如有時(shí)候數(shù)據(jù)沒(méi)有發(fā)出,可以從這里看出是否處理了描述符,是否處理了用戶數(shù)據(jù),來(lái)協(xié)助判斷當(dāng)前狀態(tài)。

審核編輯 黃宇

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

    關(guān)注

    31

    文章

    5336

    瀏覽量

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

    關(guān)注

    60

    文章

    7936

    瀏覽量

    264473
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    560

    瀏覽量

    100544
  • 驅(qū)動(dòng)開(kāi)發(fā)

    關(guān)注

    0

    文章

    130

    瀏覽量

    12072
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-0x06 DWC2 USB2.0 IP 頭文件與寄存器的讀寫操作

    上一篇我們介紹了控制寄存器,而驅(qū)動(dòng)的編寫底層無(wú)非就是配置各種寄存器,所以第一步先要準(zhǔn)備寄存器的頭文件,對(duì)
    的頭像 發(fā)表于 05-16 14:04 ?2415次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-0x06 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB</b>2.0 IP 頭文件與<b class='flag-5'>寄存器</b>的讀寫操作

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-IN端點(diǎn)發(fā)送相關(guān)寄存器詳解

    上一篇我們介紹了IN端點(diǎn),發(fā)送DMA相關(guān)的兩個(gè)寄存器,這一篇繼續(xù)講另外的幾個(gè)寄存器
    的頭像 發(fā)表于 07-17 07:41 ?1835次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-IN端點(diǎn)<b class='flag-5'>發(fā)送</b><b class='flag-5'>相關(guān)</b>的<b class='flag-5'>寄存器</b><b class='flag-5'>詳解</b>

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-DOEP接收相關(guān)的其他寄存器詳解

    前面介紹了DOEP的DMA相關(guān)寄存器,這一篇繼續(xù)來(lái)講剩下的寄存器
    的頭像 發(fā)表于 07-19 10:50 ?1510次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-DOEP接收<b class='flag-5'>相關(guān)</b>的其他<b class='flag-5'>寄存器</b><b class='flag-5'>詳解</b>

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-0x05 DWC2 USB2.0 IP 寄存器介紹

    本文對(duì)控制寄存器有了一個(gè)整體上的概覽,先了解個(gè)大概,了解寄存器的組織結(jié)構(gòu),大致了解一下常用的寄存器。后面編程時(shí)再一個(gè)個(gè)對(duì)照每一個(gè)寄存器
    的頭像 發(fā)表于 05-16 12:50 ?3297次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-0x05 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB</b>2.0 IP <b class='flag-5'>寄存器</b>介紹

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-0x0D PHY寄存器讀寫代碼編寫與測(cè)試

    我們前面重點(diǎn)介紹了ULPI接口和PHY的寄存器,這一篇來(lái)進(jìn)行PHY寄存器讀寫的代碼編寫與測(cè)試。從這一篇開(kāi)始就正真進(jìn)入了驅(qū)動(dòng)編寫的過(guò)程了。
    的頭像 發(fā)表于 06-06 13:03 ?2257次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-0x0D PHY<b class='flag-5'>寄存器</b>讀寫代碼編寫與測(cè)試

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-DOEP接收相關(guān)DMA寄存器詳解

    前面我們?cè)敿?xì)介紹了發(fā)送即DIEP相關(guān)的一些寄存器,這一篇我們來(lái)看看接收即DOEP相關(guān)的一些寄存器。形式上DOEP和DIEP
    的頭像 發(fā)表于 07-19 09:00 ?1279次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-DOEP接收<b class='flag-5'>相關(guān)</b>的<b class='flag-5'>DMA</b><b class='flag-5'>寄存器</b><b class='flag-5'>詳解</b>

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-控制傳輸中斷相關(guān)寄存器

    本篇講解Scatter/Gather DMA模式下控制傳輸相關(guān)寄存器。控制傳輸是USB驅(qū)動(dòng)的核心部分,控制傳輸調(diào)通了
    的頭像 發(fā)表于 07-24 00:07 ?2558次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-控制傳輸中斷<b class='flag-5'>相關(guān)</b><b class='flag-5'>寄存器</b>

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思 數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括累加AX、基址寄存器BX、計(jì)數(shù)
    發(fā)表于 03-08 14:38 ?1.3w次閱讀

    ARM寄存器詳解

    ARM有37個(gè)寄存器,其中31個(gè)通用寄存器,6個(gè)狀態(tài)寄存器。   這里尤其要注意區(qū)別的是ARM自身寄存器和它的一些外設(shè)的寄存器的區(qū)別。
    發(fā)表于 07-10 10:04 ?2956次閱讀

    DSP2812寄存器詳解

    DSP2812寄存器詳解DSP2812寄存器詳DSP2812寄存器詳解
    發(fā)表于 01-08 14:17 ?8次下載

    寄存器與移位寄存器

    寄存器與移位寄存器:介紹寄存器原理和移位寄存器的原理及實(shí)現(xiàn)。
    發(fā)表于 05-20 11:47 ?0次下載

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解
    發(fā)表于 10-16 13:04 ?14次下載
    51<b class='flag-5'>寄存器</b>的所有<b class='flag-5'>寄存器</b>名稱,(包括<b class='flag-5'>寄存器</b>每一位的作用及用法)資源<b class='flag-5'>詳解</b>

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一個(gè)具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。本文主要介紹了移位寄存器的用途以及移位寄存器
    發(fā)表于 12-22 15:49 ?2w次閱讀

    ARM通用寄存器及狀態(tài)寄存器詳解

    筆者來(lái)聊聊ARM通用寄存器以及狀態(tài)寄存器的認(rèn)識(shí)與理解。
    的頭像 發(fā)表于 01-06 14:58 ?7142次閱讀
    主站蜘蛛池模板: 麻豆乱码一卡二卡三卡视频| 日本不卡一二三| 我的好妈妈8高清在线观看WWW| 亚洲色婷婷久久精品AV蜜桃| 俄罗斯女人Z0Z0极品| 久久青草免费线观最新| 甜涩性爱下载| 99久久综合| 久久成人亚洲| 香蕉久久夜色精品国产小优| www国产av偷拍在线播放| 久久免费观看视频| 亚州免费一级毛片| 纯肉合集(高H)| 女教师の诱惑| 中文字幕不卡在线高清| 国产一级特黄aa毛片| 日欧一片内射VA在线影院| 506070老熟肥妇bbwxx视频| 国产综合视频在线观看一区| 色偷偷男人的天堂a v| WWW国产精品人妻一二三区| 免费视频xxx| 竹菊影视一区二区三区| 黑人开嫩苞| 香蕉久久一区二区三区啪啪| 俄罗斯大肥BBXX| 人妻久久久精品99系列AV| 91区国产福利在线观看午夜| 久久精品亚洲热综合一本奇米 | 色精品极品国产在线视频| 97一期涩涩97片久久久久久久| 精品无码国产AV一区二区三区| 污到湿的爽文免费阅读| 大香网伊人久久综合观看| 欧美久久综合性欧美| 99精品欧美一区二区三区美图| 美女gif趴跪式动态图| 中国二级毛片| 久久无码AV亚洲精品色午夜麻豆| 一本道本线中文无码|