基于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端點
包大小為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文章
5590瀏覽量
129248 -
usb
+關注
關注
60文章
8380瀏覽量
282062 -
開發板
+關注
關注
26文章
6161瀏覽量
114153 -
單板計算機
+關注
關注
0文章
88瀏覽量
16180 -
編譯
+關注
關注
0文章
689瀏覽量
34971 -
驅動開發
+關注
關注
0文章
140瀏覽量
12536 -
DWC2
+關注
關注
0文章
35瀏覽量
349
發布評論請先 登錄
NVMe高速傳輸之擺脫XDMA設計32:寄存器功能驗證與分析2
?SN74HCT595 8位移位寄存器技術解析與應用指南
TPIC6595 8位功率移位寄存器技術文檔摘要
?TPIC6B595 8位功率移位寄存器技術文檔總結
SN74LV594A:2-5.5V帶輸出寄存器的8位移位寄存器技術解析
?TLC6C5912 12通道移位寄存器LED驅動器技術文檔總結
?TLC6C5816-Q1 16位移位寄存器LED驅動器技術文檔總結
使用寄存器點亮LED燈
如何用C語言操作寄存器——瑞薩RA系列FSP庫開發實戰指南(10)
如何通過USB或者I2C對DLPC910的寄存器進行配置?
74HC594-Q100;74HCT594-Q100帶輸出寄存器的8位移位寄存器規格書

基于DWC2的USB驅動開發-DOEP接收相關的其他寄存器詳解
評論