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)開發(fā)-UVC的處理單元詳解

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-07-13 09:42 ? 次閱讀

本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注
基于DWC2的USB驅(qū)動(dòng)開發(fā)-UVC的處理單元詳解 (qq.com)

一.前言

本篇來詳細(xì)分析下UVC的處理單元相關(guān)的內(nèi)容,同樣的我們理論結(jié)合實(shí)踐來進(jìn)行。

二.處理單元簡介

處理單元(PU)控制通過它傳輸?shù)?a target="_blank">視頻的圖像屬性。有一個(gè)單一的輸入和輸出引腳,注意是單一的,也就是一個(gè)處理單元只能處理一個(gè)輸入只有一個(gè)輸出。

支持以下功能:

用戶控制:

  • Brightness亮度·
  • Hue色調(diào)·
  • Saturation飽和度·
  • Sharpness清晰度·
  • Gamma伽馬·
  • Digital Multiplier (Zoom) 數(shù)字乘法器(縮放)

自動(dòng)控制

  • White Balance Temperature 白平衡溫度控制
  • White Balance Component 白平衡成分控制
  • Backlight Compensation 背光補(bǔ)償
  • Contrast 對(duì)比度

其他

  • Gain 增益
  • Power Line Frequency 電力線頻率
  • Analog Video Standard 模擬視頻標(biāo)準(zhǔn)
  • Analog Video Lock Status 模擬視頻鎖定狀態(tài)

對(duì)上述功能的支持都是可選的,但是,如果設(shè)備支持白平衡功能,則應(yīng)實(shí)現(xiàn)白平衡溫度控制或白平衡成分控制,但不能同時(shí)實(shí)現(xiàn)。

用戶控制表示由用戶偏好設(shè)置的屬性,不受設(shè)備的自動(dòng)控制的影響。

自動(dòng)控制支持是否使能的設(shè)置(具有打開/關(guān)閉狀態(tài))。如果使能則設(shè)備自動(dòng)調(diào)整,對(duì)相關(guān)屬性的讀請(qǐng)求則反映自動(dòng)設(shè)置的值。

如果打開自動(dòng)模式,嘗試以手動(dòng)方式設(shè)置將導(dǎo)致STALL,錯(cuò)誤代碼為bRequestErrorCode=“錯(cuò)誤狀態(tài)”。當(dāng)退出自動(dòng)模式時(shí),相關(guān)控制屬性應(yīng)保持在轉(zhuǎn)換前有效的值。

后面可以看到基本所有的屬性都對(duì)應(yīng)有一個(gè)自動(dòng)控制,使能自動(dòng)控制就不能再手動(dòng)配置了。

處理單元的符號(hào)如下圖所示。

注意這里的但輸入單輸出
圖片

三.拓?fù)浣Y(jié)構(gòu)

以下從描述符來看處理單元的拓?fù)浣Y(jié)構(gòu),如下圖是一個(gè)實(shí)際的UVC產(chǎn)品的描述符,只截取了和UVC相關(guān)的IAD下的描述符。
圖片

可以看到處理單元的ID是bUnitID=2,其源頭是bSourceID=1即前面的bTerminaIID=1的視頻控制輸入終端;而其后面是bUnitID=3的視頻控制擴(kuò)展單元,該單元的baSourceID[1]=2表示其源頭是本處理單元。

其拓?fù)淙缦?/p>

圖片

四.處理單元描述符

處理單元的描述符應(yīng)該位于UVC的控制接口描述符VideoControl Interface Descriptors的Class-specific VC Interface Header Descriptor的后面

如下所示紅色線所指示

圖片

本實(shí)例處理單元描述符對(duì)應(yīng)的具體內(nèi)容如下

圖片

處理單元的描述詳細(xì)內(nèi)容見規(guī)格書P69

3.7.2.5 Processing Unit Descriptor

偏移區(qū)域大小說明
0bLength1數(shù)字值,13本描述符的字節(jié)數(shù)
1bDescriptorType1常數(shù)CS_INTERFACE=0x24描述符類型
2bDescriptorSubtype1常數(shù)VC_PROCESSING_UNIT =0x05描述符子類
3bUnitID1數(shù)字單元ID
4bSourceID1常數(shù)該單元前面所連接的單元或終端的ID。
5wMaxMultiplier2數(shù)字數(shù)字放大
7bControlSize1數(shù)字,3后面 bmControls域 的字節(jié)數(shù)
8bmControls3Bitmap支持的處理類型
11iProcessing1Index描述本處理單元的字符串描述索引,填0則沒有字符串描述符。
12bmVideoStandards1Bitmap支持的標(biāo)準(zhǔn)

l其中bDescriptorType的定義參考規(guī)格書的P171 A.5. Video Class-Specific VC Interface Descriptor Subtypes
圖片

l其中bDescriptorSubtype的定義參考規(guī)格書的P172 A.4. Video Class-Specific Descriptor Types
圖片

l其中bUnitID

處理單元由處理單元描述符(PUD)的bUnitID字段的值唯一標(biāo)識(shí)。 非零常數(shù) ,用于唯一標(biāo)識(shí)本功能接口中的單元。類相關(guān)請(qǐng)求時(shí)Index的高位即該值。

這里為什么要是非零常數(shù)呢?為什么從0開始編號(hào)呢,因?yàn)樵谡?qǐng)求中wIndex的高8位為0用于區(qū)分是接口請(qǐng)求,其他非0值為對(duì)應(yīng)了終端和單元ID,所以不能從0開始編號(hào)了。

本功能對(duì)應(yīng)的接口內(nèi)單該值和其他單元和終端的ID不能重復(fù)。

lbSourceID

該單元前面所連接的單元或終端的ID。

處理單元肯定是要處理一個(gè)東西的,即需要輸入的,處理什么呢,肯定是處理攝像頭的輸入,所以前面一般就是Input Terminal,該值就是前面的Input Terminal的ID。

如下所示,這里bSourceID=1即前面連接的是bTerminalID=1的輸入終端

圖片

l其中wMaxMultiplier

如果支持?jǐn)?shù)字放大Digital Multiplier控制,則該值除以100表示放大倍數(shù),比如設(shè)置值450則表示1-4.5X,即4.5倍數(shù)字放大,如果不支持則設(shè)置為0.

l其中bmControls,表示支持的處理類型

某一位置位則對(duì)應(yīng)的處理支持,小端模式

D0: Brightness

D1: Contrast

D2: Hue

D3: Saturation

D4: Sharpness

D5: Gamma

D6: White Balance Temperature

D7: White Balance Component

D8: Backlight Compensation

D9: Gain

D10: Power Line Frequency

D11: Hue, Auto

D12: White Balance Temperature, Auto

D13: White Balance Component, Auto

D14: Digital Multiplier

D15: Digital Multiplier Limit

D16: Analog Video Standard

D17: Analog Video Lock Status

D18: Contrast, Auto

D19 – D23: Reserved. Set to zero

l其中bmVideoStandards表示支持的標(biāo)準(zhǔn)

0表示忽略該字段.

某位置1則表示支持該標(biāo)準(zhǔn)

D0: None

D1: NTSC – 525/60

D2: PAL – 625/50

D3: SECAM – 625/50

D4: NTSC – 625/50

D5: PAL – 525/60

D6-D7: Reserved. Set to zero.

以下是對(duì)應(yīng)一個(gè)實(shí)例,注意其bmControls域只有兩個(gè)字節(jié),且沒有bmVideoStandards,所以只有11個(gè)字節(jié)。

-------- Video Control Processing Unit Descriptor -----

bLength : 0x0B (11 bytes)

bDescriptorType : 0x24 (Video Control Interface)

bDescriptorSubtype : 0x05 (Processing Unit)

bUnitID : 0x02 (2)

bSourceID : 0x01 (1)

wMaxMultiplier : 0x0000

bControlSize : 0x02 (2 bytes)

bmControls : 0x7B, 0x07

D0 : 1 yes - Brightness

D1 : 1 yes - Contrast

D2 : 0 no - Hue

D3 : 1 yes - Saturation

D4 : 1 yes - Sharpness

D5 : 1 yes - Gamma

D6 : 1 yes - White Balance Temperature

D7 : 0 no - White Balance Component

D8 : 1 yes - Backlight Compensation

D9 : 1 yes - Gain

D10 : 1 yes - Power Line Frequency

D11 : 0 no - Hue, Auto

D12 : 0 no - White Balance Temperature, Auto

D13 : 0 no - White Balance Component, Auto

D14 : 0 no - Digital Multiplier

D15 : 0 no - Digital Multiplier Limit

iProcessing : 0x00 (No String Descriptor)

Data (HexDump) : 0B 24 05 02 01 00 00 02 7B 07 00 .$......{..

五. 處理單元相關(guān)的請(qǐng)求

參考規(guī)格書P109 4.2.2.3 Processing Unit Control Requests

處理單元控制請(qǐng)求用于讀或者設(shè)置處理單元的屬性,所以包括SET_xx 和GET_xx。

一共支持如下19種屬性的請(qǐng)求

圖片

對(duì)應(yīng)的CS編碼見P175 A.9.5. Processing Unit Control Selectors

圖片

以下做了一個(gè)總結(jié),所以值都是無符號(hào)值。

類型CS大小B支持的操作[]表示可選最少支持操作說明
背光補(bǔ)償控制PU_BACKLIGHT_COMPENSATION_CONTROL2SET_CURGET_CURGET_MINGET_MAXGET_RESGET_INFOGET_DEFGET_DEF設(shè)置0說明不支持背光補(bǔ)償,可以支持范圍值或者僅僅是開關(guān)。小端模式,無符號(hào)16位值。
亮度控制PU_BRIGHTNESS_CONTROL2SET_CUR,GET_CUR GET_MIN GET_MAXGET_RESGET_INFOGET_DEFGET_DEF該值是相對(duì)值配置的是增量,RES值必須是1小端模式,有符號(hào)16位值。
對(duì)比度控制PU_CONTRAST_CONTROL2SET_CUR GET_CUR GET_MIN GET_MAXGET_RESGET_INFOGET_DEFGET_DEF該值是相對(duì)值配置的是增量,RES值必須是1小端模式,有符號(hào)16位值。
對(duì)比度自動(dòng)控制PU_CONTRAST_AUTO_CONTROL1SET_CURGET_CUR GET_INFOGET_DEFGET_DEF值為1表示使能自動(dòng)控制,此時(shí)嘗試設(shè)置相關(guān)對(duì)比度控制將導(dǎo)致STALL和bRequestErrorCode=“錯(cuò)誤狀態(tài)”的錯(cuò)誤代碼。
增益控制PU_GAIN_CONTROL2SET_CURGET_CURGET_MIN GET_MAXGET_RESGET_INFOGET_DEFGET_DEF該值是相對(duì)值配置的是增量,RES值必須是1小端模式,有符號(hào)16位值。
電力線頻率控制PU_POWER_LINE_FREQUENCY_CONTROL1SET_CURGET_CURGET_INFOGET_DEFGET_DEF值對(duì)應(yīng)如下0: Disabled1: 50 Hz2: 60 Hz3: Auto
色度控制PU_HUE_CONTROL2GET_CUR GET_MIN GET_MAXGET_RESGET_INFOGET_DEF[SET_CUR]GET_DEF默認(rèn)值必須是0,設(shè)置值是實(shí)際值乘以100,實(shí)際值范圍是(-180 到+180degrees). 則設(shè)置值發(fā)呢欸是-18000 ~18000 有符號(hào)16位,小端
色度自動(dòng)控制PU_HUE_AUTO_CONTROL1SET_CUR,GET_CUR,GET_INFO GET_DEFGET_DEF值為1表示使能自動(dòng)控制,此時(shí)嘗試設(shè)置相關(guān)色度控制將導(dǎo)致STALL和bRequestErrorCode=“錯(cuò)誤狀態(tài)”的錯(cuò)誤代碼
飽和度控制PU_SATURATION_CONTROL2SET_CURGET_CURGET_MINGET_MAXGET_RESGET_INFOGET_DEFGET_DEF0表示灰度值為相對(duì)值,RES必須為1
清晰度設(shè)置PU_SHARPNESS_CONTROL2SET_CURGET_CURGET_MINGET_MAXGET_RESGET_INFOGET_DEFGET_DEF相對(duì)值,MIN意味著“無清晰度處理”RES必須為1
伽馬設(shè)置PU_GAMMA_CONTROL2SET_CURGET_CURGET_MINGET_MAXGET_RES,GET_INFOGET_DEFGET_DEF設(shè)置值是實(shí)際值乘以100,設(shè)置值范圍1500 ,實(shí)際值范圍1.05.0默認(rèn)一般是100 (gamma = 1)或220 (gamma = 2.2).
白平衡溫度控制PU_WHITE_BALANCE_TEMPERATURE_CONTROL2GET_CURGET_MINGET_MAXGET_RESGET_INFOGET_DEFGET_DEF這用于將白平衡設(shè)置指定為以開爾文度為單位的色溫。這是作為白平衡組件控制的替代方案提供的。網(wǎng)絡(luò)攝像頭和雙模攝像頭的最小范圍應(yīng)為2800(白熾)至6500(日光)。
白平衡溫度自動(dòng)控制PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL1SET_CURGET_CURGET_INFOGET_DEFGET_DEF值為1表示使能自動(dòng)控制,此時(shí)嘗試設(shè)置相關(guān)白平衡溫度控制將導(dǎo)致STALL和bRequestErrorCode=“錯(cuò)誤狀態(tài)”的錯(cuò)誤代碼
白平衡成分控制PU_WHITE_BALANCE_COMPONENT_CONTROL4GET_CURGET_MIN GET_MAXGET_RESGET_INFOGET_DEF[SET_CUR]GET_DEF前面2字節(jié)是藍(lán)色成分設(shè)置后面2字節(jié)是紅色成分設(shè)置
白平衡成分自動(dòng)控制PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL1SET_CURGET_CURGET_INFOGET_DEFGET_DEF值為1表示使能自動(dòng)控制,此時(shí)嘗試設(shè)置相關(guān)白平衡成分控制將導(dǎo)致STALL和bRequestErrorCode=“錯(cuò)誤狀態(tài)”的錯(cuò)誤代碼
數(shù)字乘法器控制PU_DIGITAL_MULTIPLIER_CONTROL2SET_CURGET_CURGET_MINGET_MAX GET_RESGET_INFOGET_DEF已棄用,下一版將刪除值為 Z’cur這用于指定應(yīng)用于光學(xué)圖像的數(shù)字縮放量。這是乘法器m的可能值范圍內(nèi)的位置,允許通過設(shè)備實(shí)現(xiàn)來描述乘法器分辨率。RES 必須為1如果支持?jǐn)?shù)字乘法器限制控制,則最小值和最大值應(yīng)與數(shù)字乘法器控制的最小值和最高值相匹配。數(shù)字乘法器限制控制允許設(shè)備或主機(jī)為Z¢cur 值建立臨時(shí)上限,從而動(dòng)態(tài)減小數(shù)字乘法器控制的范圍。如果使用數(shù)字乘法器限制將限制降低到當(dāng)前Z¢cur ,Z¢cur 值將進(jìn)行調(diào)整以匹配新的限制,數(shù)字乘法器控制應(yīng)發(fā)送控制更改事件以通知主機(jī)調(diào)整。
數(shù)字乘法器限制控制PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL2SET_CURGET_CURGET_MINGET_MAX GET_RESGET_INFOGET_DEFRES 為1上述Z’cur的上限
模擬視頻標(biāo)準(zhǔn)控制PU_ANALOG_VIDEO_STANDARD_CONTROL1GET_CURGET_INFO0: None1: NTSC – 525/602: PAL – 625/503: SECAM – 625/504: NTSC – 625/505: PAL – 525/606-255: Reserved. Do not use.
模擬視頻鎖定狀態(tài)控制PU_ANALOG_LOCK_STATUS_CONTROL1GET_CURGET_INFO這用于報(bào)告視頻解碼器是否已經(jīng)實(shí)現(xiàn)模擬輸入信號(hào)的水平鎖定。如果解碼器被鎖定,則假定正在生成有效的視頻流。此控制僅支持模擬視頻解碼器功能。

六. 處理單元請(qǐng)求驅(qū)動(dòng)代碼

處理單元類相關(guān)請(qǐng)求的解析,需要注意兩個(gè)關(guān)鍵參數(shù),一個(gè)是處理單元所在的接口號(hào),上面實(shí)例接口是0,處理單元本身的ID,上面實(shí)例是2。

1.通過接口號(hào)和單元ID即可定位到是哪一個(gè)ID,接口號(hào)和單元號(hào)都是從wIndex字段解析,低位是接口號(hào)高位是單元ID號(hào)

2.然后再通過wValue確定對(duì)應(yīng)的是什么操作,比如是亮度控制還是增益控制等。

即A.9.5. Processing Unit Control Selectors的CS

3.然后再通過bRequest確定是做什么類型的操作比如是獲取當(dāng)前值GET_CUR還是設(shè)置當(dāng)前值SET_CUR

見規(guī)格書P173A.8. Video Class-Specific Request Codes

圖片

參考規(guī)格書4.2.2 Unit and Terminal Control Requests,終端和單元的請(qǐng)求的layout

請(qǐng)求分為SET和GET兩大類

bmRequestTypebRequestwValuewIndexwLengthData
00100001SET_CURCS(高字節(jié))單元或終端ID(高位)+接口(低位)數(shù)據(jù)長度
10100001GET_CURGET_MINGET_MAXGET_RESGET_INFOGET_DEF
00100001SET_CUR_ALL0單元或終端ID
10100001GET_CUR_ALLGET_MIN_ALLGET_MAX_ALLGET_RES_ALLGET_DEF_ALL

下面對(duì)解析過程進(jìn)行詳細(xì)分析

bmRequest指定是什么操作,其中MIN,MAX和RES不能SET因?yàn)槠涫窃O(shè)備實(shí)現(xiàn)決定的,不能修改。

wValue字段在高位字節(jié)中對(duì)應(yīng)CS,即表示對(duì)什么屬性進(jìn)行操作,低字節(jié)為0.設(shè)備收到不支持的CS則需要STALL

wIndex高8位為0則表示是接口請(qǐng)求,不是0則表示單元和終端的ID,第8位表示對(duì)應(yīng)的接口。所以這里終端和單元的ID不能為0,因?yàn)橐徒涌趨^(qū)分。

注意*(MAX-MIN)/RES* 和*(CURMIN)/RES *都需要是整數(shù)。如果SET_CUR操作中提供了無效的CUR值,設(shè)備應(yīng)STALL,并用0x04“超出范圍”更新請(qǐng)求錯(cuò)誤代碼。

收到setup后檢查如果是類相關(guān)請(qǐng)求,即bmRequestType的bit6:6為1則進(jìn)入類相關(guān)處理接口

usb_function_request

圖片

圖片

然后再看如果bmRequestType的bit4:0為1,則對(duì)應(yīng)接口相關(guān)處理

圖片

圖片

然后調(diào)用注冊(cè)的類回調(diào),usb_uvc_class_set

再根據(jù)wIndex的高8位如果是0則對(duì)應(yīng)的接口請(qǐng)求uvc_class_itf_req,

否則是終端單元相關(guān)請(qǐng)求uvc_class_ut_req

圖片

進(jìn)入uvc_class_ut_req后

再根據(jù)wIndex的低8位確認(rèn)接口,高8位定位終端和單元,然后根據(jù)wValue低8位確認(rèn)CS即對(duì)應(yīng)操作什么屬性,然后根據(jù)bRequest確定是什么操作,比如GET_CUR

圖片

比如如下的一個(gè)實(shí)例的解析

a1表示類相關(guān)接口請(qǐng)求

86表示GET_INFO

0002 高8位02表示PU_BRIGHTNESS_CONTROL 處理單元的CS

0002 高8位表示單元ID2,低8位表示接口0,如下圖接口0的ID2的單元就是處理單元

0100表示數(shù)據(jù)長度,GET_INFO即數(shù)據(jù)只有1個(gè)字節(jié)

圖片

圖片

后面的0x82 0x83 0x84 0x87也是類似

分別是GET_IN GET_MAX GET_RES GET_DEF

一般主機(jī)請(qǐng)求顯示GET_INFO看你支持啥,然后再進(jìn)行后續(xù)操作。

驅(qū)動(dòng)的優(yōu)化

上述層層switch解析的方式,比較好理解,但是代碼冗余太大,且這部分代碼應(yīng)該是屬于類實(shí)現(xiàn)層,不應(yīng)該暴漏給用戶,而且實(shí)際所有的端點(diǎn)和處理單元都是類似的,我們可以根據(jù)bRequest等參數(shù)進(jìn)行查表跳轉(zhuǎn)到對(duì)應(yīng)的處理函數(shù),用戶只需要注冊(cè)表格和回調(diào)即可,借用反射的設(shè)計(jì)范式。

GET_MIN GET_MAX GET_RES GET_CUR等只需要提供對(duì)應(yīng)的存儲(chǔ)區(qū)域的地址,可以建議一個(gè)二維表格,分別是哪個(gè)端點(diǎn)對(duì)應(yīng)的哪個(gè)CS有哪些值操作。這個(gè)后面再單獨(dú)一篇介紹。

七. 總結(jié)

以上詳細(xì)介紹了處理單元,包括描述符和其拓?fù)浣Y(jié)構(gòu),請(qǐng)求等??梢韵攘私馄渫?fù)浣Y(jié)構(gòu),在描述符中如何描述這有利于從整體把握,然后了解其請(qǐng)求的過程。

審核編輯:湯梓紅

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

    關(guān)注

    60

    文章

    7877

    瀏覽量

    263713
  • 驅(qū)動(dòng)開發(fā)

    關(guān)注

    0

    文章

    130

    瀏覽量

    12059
  • 處理單元
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    6913
  • uvc
    uvc
    +關(guān)注

    關(guān)注

    1

    文章

    126

    瀏覽量

    14491
  • DWC2
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    118
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于DWC2USB驅(qū)動(dòng)開發(fā)-0x01開篇介紹與新思DWC2 USB2.0控制器簡介

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

    基于DWC2USB驅(qū)動(dòng)開發(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 ?8933次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-0x02 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB</b>2.0 IP功能特征介紹

    基于DWC2USB驅(qū)動(dòng)開發(fā)-IAD描述符詳解

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

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

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

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

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

    基于DWC2USB驅(qū)動(dòng)開發(fā)-高速設(shè)備枚舉為全速設(shè)備問題案例分析

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-高速設(shè)備枚舉為全速設(shè)備問題案例分析 (qq.com) 一.前言 ? 本文分享一個(gè)高速設(shè)備被枚舉為全速的問題。 ? ? 高速設(shè)備速
    的頭像 發(fā)表于 07-10 17:12 ?1282次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-高速設(shè)備枚舉為全速設(shè)備問題案例分析

    基于DWC2USB驅(qū)動(dòng)開發(fā)-UVC的相機(jī)終端詳解

    本篇來詳細(xì)分析下UVC的相機(jī)終端相關(guān)的內(nèi)容,同樣的我們理論結(jié)合實(shí)踐來進(jìn)行。
    的頭像 發(fā)表于 07-13 09:46 ?1959次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>UVC</b>的相機(jī)終端<b class='flag-5'>詳解</b>

    基于DWC2USB驅(qū)動(dòng)開發(fā)-UVC單元和終端類請(qǐng)求驅(qū)動(dòng)代碼優(yōu)化

    前面介紹了UVC處理單元和相機(jī)終端,可以看到各單元和終端的請(qǐng)求形式都是一樣的, 只是支持的CS和操作類型不一樣,數(shù)據(jù)的大小不一樣。目前的驅(qū)動(dòng)
    的頭像 發(fā)表于 07-14 09:44 ?1043次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>UVC</b>的<b class='flag-5'>單元</b>和終端類請(qǐng)求<b class='flag-5'>驅(qū)動(dòng)</b>代碼優(yōu)化

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

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

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

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-發(fā)送相關(guān)的寄存器DMA寄存器詳解 (qq.com) 前言 如下寄存器DIEPxxx,
    的頭像 發(fā)表于 07-16 16:42 ?1551次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-發(fā)送相關(guān)的寄存器DMA寄存器<b class='flag-5'>詳解</b>

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

    不管什么通訊協(xié)議,比如UART,SPI,USB等等,不管是并口還是串口,不管是同步還是異步,我們從抽象的角度去看,其本質(zhì)都是一樣的。都是先定義物理信號(hào),物理信號(hào)可能是差分,單端,電流驅(qū)動(dòng)電壓驅(qū)動(dòng)等等
    的頭像 發(fā)表于 07-23 17:11 ?2398次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>USB</b>包<b class='flag-5'>詳解</b>

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

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

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

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-數(shù)據(jù)不能發(fā)送問題分析案例 (qq.com) ? 一.前言 ? ? ? ?對(duì)于驅(qū)動(dòng)
    的頭像 發(fā)表于 08-08 09:43 ?2060次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-數(shù)據(jù)不能發(fā)送問題分析案例

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

    背景之前適配 DWC2 USB IP 的時(shí)候,主要是基于 st 的 hal 庫來走的,當(dāng)時(shí)我就對(duì)他們的 hal 庫代碼不滿,只是無奈,迫于時(shí)間就沒重構(gòu),果不其然,usb bug 一堆,隨意舉例,這還
    發(fā)表于 06-14 15:23

    基于DWC2USB驅(qū)動(dòng)開發(fā)-抽絲剝繭再論切換到狀態(tài)階段標(biāo)志DOEPINTn.StsPhseRcvd

    本文轉(zhuǎn)自公眾號(hào)系列文章,歡迎關(guān)注 基于DWC2USB驅(qū)動(dòng)開發(fā)-USB詳解 (qq.com)
    的頭像 發(fā)表于 07-24 18:04 ?1407次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>-抽絲剝繭再論切換到狀態(tài)階段標(biāo)志DOEPINTn.StsPhseRcvd