色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美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ā)-DOEP接收相關(guān)的DMA寄存器詳解

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

本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注
基于DWC2的USB驅(qū)動(dòng)開(kāi)發(fā)-DOEP接收相關(guān)的DMA寄存器詳解 (qq.com)

前言

前面我們?cè)敿?xì)介紹了發(fā)送即DIEP相關(guān)的一些寄存器,這一篇我們來(lái)看看接收即DOEP相關(guān)的一些寄存器。形式上DOEP和DIEP寄存器是類似的。不過(guò)我們看寄存器列表會(huì)發(fā)現(xiàn)DOEP會(huì)少一個(gè)寄存器DTXFSTSi ,

什么會(huì)少這個(gè)寄存器呢?

因?yàn)榻邮帐撬卸它c(diǎn)共享一個(gè)接收緩沖區(qū)的,所以這里就沒(méi)有DRXFSTSi 這個(gè)對(duì)應(yīng)的寄存器來(lái)表示每個(gè)端點(diǎn)對(duì)應(yīng)的接收緩沖區(qū)剩余可用空間了。發(fā)送是可以配置為每個(gè)端點(diǎn)獨(dú)占一個(gè)緩沖區(qū)的所以有對(duì)應(yīng)的寄存器。

雖然POEP少了一個(gè)寄存器,但是寄存器偏移地址上,還是和PIEP保持對(duì)應(yīng)關(guān)系的,缺的位置還是預(yù)留了空間的,這對(duì)軟件來(lái)說(shuō)比較方便,所以一般IP的設(shè)計(jì)也要考慮軟件的實(shí)現(xiàn)是否方便。

圖片

這一篇先來(lái)介紹DMA相關(guān)的寄存器,后面再講剩余的寄存器,為什么DMA寄存器要單獨(dú)講,因?yàn)槠浜苤匾私馄涫侨绾卧O(shè)置,如何更新,什么階段誰(shuí)擁有等很重要,可以協(xié)助調(diào)試分析問(wèn)題,并且DOEP和DIEP的DMA寄存器的行為有些許差異這點(diǎn)調(diào)試時(shí)是很重要的,所以這里重點(diǎn)講。

DOEPDMAi

該寄存器的偏移地址是

0xB14 + i*20,雖然端點(diǎn)0的寄存器手冊(cè)有單獨(dú)描述,但是其偏移地址還是符合該表達(dá)式的,實(shí)際描述內(nèi)容也是重復(fù)的。

這樣所有的寄存器我們可以使用同樣的宏來(lái)尋址

#define DOEP_DMA(n) (OTG_BASE + (0xb14 + (n)*0x20))

這也是IP設(shè)計(jì)寄存器地址設(shè)置要考慮的,方便軟件編程

我們來(lái)看手冊(cè)的描述
圖片

如果是 Scatter/Gather DMA模式則該寄存器設(shè)置為描述符鏈表的地址,否則則設(shè)置接收緩沖區(qū)的地址,DMA接收到數(shù)據(jù)自動(dòng)從RxFIFO搬運(yùn)到該處。

注意該寄存器必須8字節(jié)對(duì)齊。

該值在OUT DONE,接收到數(shù)據(jù)產(chǎn)生中斷后,軟件可以回讀其值,回讀的值為設(shè)置的值偏移已經(jīng)處理的描述符或者已經(jīng)接收的字節(jié)數(shù)。

注意該寄存器寫完后并不能立即回讀,此時(shí)回讀值為之前的值或者默認(rèn)值,只有OUT DONE中斷接收到數(shù)據(jù)之后才能回讀,此時(shí)EPena硬件清零,回讀的值已經(jīng)是按照上述描述更新的值。

在軟件設(shè)置該值(注意此時(shí)哪怕EPEna沒(méi)有置位也是一樣的)到OUT DONE中斷之前該寄存器由控制器所有,此時(shí)軟件不能再次寫,回讀也不能回讀出寫入的值。只有OUT DONE中斷之后EPEna硬件自動(dòng)清零后才能讀會(huì)硬件更新的值,注意不是寫入值,時(shí)硬件根據(jù)處理了多少描述符或者接受了多少數(shù)據(jù)遞增后的值。

以下是實(shí)例

如下使用OUT端點(diǎn)2 設(shè)置

0x81012a0到DOEPDMAi ** ,** 0x81012a0是8字節(jié)對(duì)齊的,時(shí)描述符地址

執(zhí)行完REG_DOEP_DMA(epnum) = (uint32_t)(pep->dma_addr);后回讀DOEPDMAi****的值并沒(méi)有更新,此時(shí)軟件不能再寫,回讀也不能讀出設(shè)置值

圖片

CTL寄存器的EPEna置位,SNAK變?yōu)榱?表示不再NACK了,準(zhǔn)備接收數(shù)據(jù)了

圖片

進(jìn)入OUT DONE中斷再來(lái)看

CTL寄存器的EPEna位硬件清零0.表示接收到了數(shù)據(jù)
圖片

此時(shí)DOEPDMAi 0x81012a0變?yōu)榱?x81012a8,因?yàn)橹挥幸砸粋€(gè)描述符,所以處理完后偏移了8字節(jié)。

DOEPDMABi

該寄存器的偏移地址是

0xB1C + i*20

從上面可以看到

0x0000000變?yōu)榱?/p>

0x8100d58

之前是0x0000000是因?yàn)樵O(shè)置完后并不能回讀,實(shí)際的描述中對(duì)應(yīng)的緩沖區(qū)是

0x8100d38,0x8100d58-0x8100d38正好是接收到的數(shù)據(jù)的長(zhǎng)度。

圖片

總結(jié)

DMA相關(guān)的兩個(gè)寄存器非常重要,可以幫助調(diào)試,但是要注意寫入之后并不能馬上回讀,也不能再寫,需要OUT DONE之后才能回讀和重新寫,寫入該寄存器到OUT DONE中斷之前該寄存器都是控制器所有。

審核編輯:湯梓紅

聲明:本文內(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
  • DWC2
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    125
收藏 人收藏

    評(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)發(fā)送<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)的其他寄存器詳解

    前面介紹了DOEPDMA相關(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>-<b class='flag-5'>DOEP</b><b class='flag-5'>接收</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ā)-0x01開(kāi)篇介紹與新思DWC2 USB2.0控制簡(jiǎn)介

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-0x01開(kāi)篇介紹與新思DWC2 USB2
    的頭像 發(fā)表于 05-08 18:10 ?4584次閱讀
    基于<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>-0x01開(kāi)篇介紹與新思<b class='flag-5'>DWC2</b> <b class='flag-5'>USB</b>2.0控制<b class='flag-5'>器</b>簡(jiǎn)介

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-0x02 DWC2 USB2.0 IP功能特征介紹

    DWC2即新思(Synopsys )的DesignWare? Cores USB 2.0 HiSpeed On-The-Go (OTG)控制IP,被大量使用。從linux的內(nèi)核源碼驅(qū)動(dòng)
    的頭像 發(fā)表于 05-09 10:09 ?9357次閱讀
    基于<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>-0x02 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB</b>2.0 IP功能特征介紹

    基于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ā)-IAD描述符詳解

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-IAD描述符詳解 (qq.com) 一.? 前言 IAD描述符用于一個(gè)設(shè)備功能關(guān)聯(lián)多
    的頭像 發(fā)表于 06-27 08:45 ?12.5w次閱讀
    基于<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>-IAD描述符<b class='flag-5'>詳解</b>

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-USB復(fù)位詳解

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-USB復(fù)位詳解 (qq.com) 一.前言
    的頭像 發(fā)表于 07-07 11:18 ?6.4w次閱讀
    基于<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'>USB</b>復(fù)位<b class='flag-5'>詳解</b>

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-USB連接詳解

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-USB連接詳解 (qq.com) 一.前
    的頭像 發(fā)表于 07-07 08:46 ?3690次閱讀
    基于<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'>USB</b>連接<b class='flag-5'>詳解</b>

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-設(shè)備類驅(qū)動(dòng)框架

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-設(shè)備類驅(qū)動(dòng)框架 (qq.com) 一.前言 從軟件頂層,從數(shù)據(jù)流的角度來(lái)看
    的頭像 發(fā)表于 07-16 15:56 ?1307次閱讀
    基于<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>-設(shè)備類<b class='flag-5'>驅(qū)動(dòng)</b>框架

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

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-發(fā)送相關(guān)寄存器
    的頭像 發(fā)表于 07-16 16:42 ?1641次閱讀
    基于<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>-發(fā)送<b class='flag-5'>相關(guān)</b>的<b class='flag-5'>寄存器</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>

    基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-數(shù)據(jù)不能發(fā)送問(wèn)題分析案例

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開(kāi)發(fā)-數(shù)據(jù)不能發(fā)送問(wèn)題分析案例 (qq.com) ? 一.前言 ? ? ? ?對(duì)于驅(qū)動(dòng)
    的頭像 發(fā)表于 08-08 09:43 ?2269次閱讀
    基于<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>-數(shù)據(jù)不能發(fā)送問(wèn)題分析案例

    如何對(duì)基于hal庫(kù)的DWC2 USB IP進(jìn)行調(diào)試呢

    背景之前適配 DWC2 USB IP 的時(shí)候,主要是基于 st 的 hal 庫(kù)來(lái)走的,當(dāng)時(shí)我就對(duì)他們的 hal 庫(kù)代碼不滿,只是無(wú)奈,迫于時(shí)間就沒(méi)重構(gòu),果不其然,usb bug 一堆,隨意舉例,這還
    發(fā)表于 06-14 15:23
    主站蜘蛛池模板: 性夜影院午夜看片| 国产亚洲精品在线视频| 男宿舍里的呻吟h| 中文字幕乱码一区AV久久| 国产综合欧美区在线| 无码国产成人777爽死在线观看| jizz中国女人| 欧美人禽Zozo动人物杂交| 2021国产精品| 美目盼兮amy198281| 中文人妻熟妇精品乱又伦| 精品含羞草免费视频观看| 亚洲精品视频久久| 国产在线精品视频免费观看| 香蕉水蜜桃牛奶涩涩| 国产精品爽爽久久久久久蜜桃| 涩涩视频下载| 高跟丝袜岳第一次| 色偷偷7777www| 跪趴式啪啪GIF动态图27报| 少妇性饥渴BBBBBBBBB| 国产盗摄一区二区三区| 水蜜桃亚洲一二三四在线 | 久久国产露脸老熟女熟69| 亚洲精品自在在线观看| 精品国产精品人妻久久无码五月天| 亚洲激情一区| 久久91精品国产91久久户| 永久精品视频无码一区| 浪小辉军警服务员VIDEOS| 最近日本MV字幕免费观看视频 | 午夜福利电影| 国产毛片女人18水多| 香蕉久久av一区二区三区| 国产亚洲精品久久久久久国模美| 亚洲AV美女成人网站P站| 果冻传媒在线观看完整版免费| 亚洲人女同志video| 久久免费国产视频| 99久久精品免费看国产一区二区| 热久久免费频精品99热|