當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于CH374的USB攝像頭驅(qū)動設(shè)計(jì)

摘要 介紹基于CH374的USB攝像頭驅(qū)動的設(shè)計(jì)與實(shí)現(xiàn)方法。采用支持USB-HOST主機(jī)方式的USB總線接口芯片CH374,給出S3C44B0下CH374驅(qū)動USB攝像頭SPCA561A的硬件電路和軟件實(shí)現(xiàn),包括視頻數(shù)據(jù)的采集和后續(xù)處理方案。利用CH374支持同步傳輸?shù)奶攸c(diǎn),在基于ARM7的平臺上給出一種低成本的視頻數(shù)據(jù)采集方案。
關(guān)鍵詞 CH374 S3C44B0 同步傳輸SPCA56lA 攝像頭驅(qū)動


    現(xiàn)有視頻監(jiān)控系統(tǒng)的設(shè)計(jì)大都采用USB視頻采集和以太網(wǎng)傳輸,并且需要視頻壓縮方案,通常需要操作系統(tǒng)支持;因此選取的開發(fā)平臺價(jià)格昂貴,造成視頻監(jiān)控系統(tǒng)的成本居高不下,以致使小型工廠和家庭用戶難以接受。
    本課題采用S3C4480微處理器的ARM7開發(fā)平臺,驅(qū)動USB接口芯片CH374進(jìn)行視頻數(shù)據(jù)采集,提供了低成本的視頻采集方案。USB視頻采集涉及USB同步傳輸,但是在眾多USB主機(jī)芯片的沒計(jì)中,多以控制傳輸和批量傳輸為主,對同步傳輸?shù)闹v解極為少見。本文提供了USB同步傳輸?shù)脑O(shè)計(jì)范例。


1 系統(tǒng)工作原理
   
典型的USB視頻采集系統(tǒng)如圖1所示。USB系統(tǒng)包含主機(jī)和物理設(shè)備兩個最基本的元素,一個USB系統(tǒng)只能有一個USB主機(jī),可以連接多個物理沒備。本設(shè)計(jì)中的設(shè)備是USB攝像頭,USB主機(jī)由USB主機(jī)控制器、微處理器及驅(qū)動軟件構(gòu)成。USB系統(tǒng)工作層次分明:USB接口層提供主機(jī)控制器和設(shè)備的物理連接;設(shè)備層中。USB主機(jī)調(diào)用驅(qū)動程序通過端點(diǎn)O發(fā)送并獲取USB設(shè)備的控制信息;功能層進(jìn)行實(shí)際數(shù)據(jù)的傳輸,主機(jī)必須選擇合適的接口和端點(diǎn),調(diào)用底層驅(qū)動提供的接口函數(shù)獲取USB攝像頭的視頻數(shù)據(jù)流。

1.1 USB攝像頭SPCA561A
    視頻信號的采集一般選擇USB攝像頭來實(shí)現(xiàn)。如圖2所示,USB攝像頭SPCA56lA集成了鏡頭、CMOS傳感器、USB圖像處理器以及USB控制器。

    比起直接與微處理器接口的CMOS傳感器,使用USB攝像頭雖然成本偏高,但是易于實(shí)現(xiàn),節(jié)省CPU資源,而且驅(qū)動支持非常豐富。SPCA561A提供了一種單芯片攝像頭解決方案,它將一個CIF的CMOS傳感器、一個圖像處理器和USB控制器集成于單芯片,從而太大降低了成本和開發(fā)難度;缺點(diǎn)足只有10萬像素,每秒幀數(shù)較少,然而非常適合應(yīng)用于圖像要求不高的小型監(jiān)控系統(tǒng)。
1.2 USB主機(jī)控制器CH374

    CH374是一個嵌入式USB總線的通用接口芯片,支持USB主機(jī)方式和USB設(shè)備方式,支持低速和全速的控制傳輸、批量傳輸、中斷傳輸以及同步傳輸。在本地端,CH374具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到DSP/MCU/MPU等控制器的系統(tǒng)總線上。大多數(shù)嵌入式的USB主機(jī)接口芯片并不提供同步傳輸模式,而CH374的一大特點(diǎn)就是提供了同步傳輸,使得視頻和音頻流的傳輸成為可能。
    本系統(tǒng)使用CH374作為USB主機(jī)控制器,如圖3所示。CH374用總線方式與S3C4480相連,微控制器通過讀寫CH374寄存器實(shí)現(xiàn)USB主機(jī)驅(qū)動。

1.3 USB同步傳輸原理
    同步傳輸主要用來傳輸音頻或視頻信號。這種信息是周期的,又是實(shí)時的,對信息實(shí)時性有很高的要求,但是對誤碼率卻可以容忍。所以USB為這種信息保留90%的帶寬,其他類型的傳輸在同步傳輸期間不可以占用。
    為保證數(shù)據(jù)傳輸?shù)膶?shí)時性,同步傳輸不進(jìn)行數(shù)據(jù)錯誤的重傳,也不在硬件層次上響應(yīng)一個握手資料包。同步傳輸?shù)闹鳈C(jī)每隔lms發(fā)送一個SOF同步信號,隨后接收設(shè)備發(fā)送的信號,其數(shù)據(jù)流程如圖4所示。

    在同步傳輸中,每一個信包的容量是一定的。拿SPCA561來說,在啟動同步傳輸之前必須設(shè)置相應(yīng)的接口號。不同的接口號決定將要發(fā)送多大的信包容量,如接口號1每次發(fā)送的信包容量是128字節(jié),接口號6的信包容量是896字節(jié)。接口號通過USB標(biāo)準(zhǔn)設(shè)備請求SET_INTERFACE來設(shè)置。由于CH374的緩沖區(qū)最大為128字節(jié)。所以本設(shè)計(jì)中使用接口號1,同步傳輸每接收一個信包的大小是128字節(jié)容量的信包。
1.4 視頻數(shù)據(jù)采集過程
   
如圖5所示,視頻信號由攝像頭SPCA56lA采集得到,經(jīng)過內(nèi)部的圖像處理芯片后編碼為規(guī)定的格式,一般為RGB或者YUV格式,但是SPCA561采用比較特殊的S56l圖像格式(類似于RGB格式)。因?yàn)橐粠瑘D像的數(shù)據(jù)量很大,無法在一個同步信包內(nèi)傳送,所以將其分割成多個單元,每個單元前添加包頭(包頭的內(nèi)容包括當(dāng)前包序號和此圖像幀信息),組成多個同步信包,通過FIFO緩沖發(fā)送到USB總線上。主機(jī)控制器用同步方式接收每個信包,并去除包頭合并成S561格式的數(shù)據(jù),組成一個完整的圖像幀。最后由軟件將此圖像幀預(yù)編碼成為YUV420格式的圖像數(shù)據(jù),以便后續(xù)的壓縮處理。

2 USB攝像頭驅(qū)動的實(shí)現(xiàn)
    USB攝像頭并非標(biāo)準(zhǔn)的USB外設(shè)。與其他USB外設(shè)不同的是,每個廠商的攝像頭芯片都有自己定義的設(shè)備請求,而這些攝像頭芯片數(shù)據(jù)手冊并不對外公開,所以編寫攝像頭驅(qū)動的難度很大,想要驅(qū)動支持更多的攝像頭,程序會非常復(fù)雜。本文只介紹SPCA561A攝像頭驅(qū)動的方法。
2.1 USB攝像頭初始化
    初始化一個USB攝像頭有兩個步驟,第一步是攝像頭的枚舉,第二步是攝像頭的自定義設(shè)置。
(1)設(shè)備枚舉
   
設(shè)備的枚舉就是標(biāo)準(zhǔn)設(shè)備請求的過程,這部分內(nèi)容包含于USB協(xié)議第9章。對USB攝像頭來說,枚舉的過程依次如下:
    ①獲取設(shè)備描述符。通過設(shè)備描述符得到端點(diǎn)0的負(fù)載,也就是最大傳送包容量。
    ②設(shè)置地址。給設(shè)備分配一個默認(rèn)地址0之外的地址。
    ③獲取配置描述符。這個過程包括兩個階段,第1次獲取的配置描述符的前4個字節(jié)得到配置描述符的真實(shí)長度;再以真實(shí)長度第2次獲取配置描述符,此描述符包含了設(shè)備的配置信息和多個接口信息??梢詮倪@里得到可以使用的接口號和對應(yīng)的信包負(fù)載。
    ④設(shè)置配置信息。設(shè)置的主要信息是配置描述符中的第5個字段bComfigurationValue。
    ⑤設(shè)置接口。USB攝像頭不同的接口號對應(yīng)不同的信包負(fù)載。本設(shè)計(jì)選定的接口號為2,對應(yīng)信包負(fù)載是128字節(jié)。
(2)自定義設(shè)置
    USB攝像頭并不是標(biāo)準(zhǔn)USB外設(shè),需要很多自定義設(shè)置,可以稱之為“自定義設(shè)備請求”,它是用標(biāo)準(zhǔn)設(shè)備請求包方式傳送的,目的是修改內(nèi)部寄存器,對采集圖像和壓縮方式進(jìn)行配置。標(biāo)準(zhǔn)設(shè)備請求和自定義設(shè)備請求包的不同內(nèi)容如表1所列。自定義設(shè)備請求的內(nèi)容非常豐富,它包含以下幾個方面:
    ①時序產(chǎn)生設(shè)置。包括圖像采集頻率和振蕩器的設(shè)置等。
    ②圖像處理設(shè)置。包括圖像窗口大小、壓縮類型、色彩分配等配置屬性。
    ③存儲器設(shè)置。對圖像緩沖進(jìn)行設(shè)置。
    ④控制及狀態(tài)設(shè)置。包括啟動及停止圖像采集、數(shù)據(jù)傳輸方式、當(dāng)前狀態(tài)等配置屬性。

    程序中的初始化設(shè)置有近百條,具體設(shè)置請見參考文獻(xiàn)[1]的開源代碼。初始化結(jié)束后,可以根據(jù)需要進(jìn)行圖像格式的設(shè)定,SPCA561A支持sQVGA(160×120)、QCIF(176×144)、QVGA(320×240)、CIF(352×288)四種格式。設(shè)定結(jié)束后啟動攝像頭采集,進(jìn)行數(shù)據(jù)傳輸。
2.2 同步傳輸和圖像幀處理
   
同步傳輸?shù)倪^程非常簡單,甚至不包含握手信息;但是因?yàn)橥絺鬏攲r序的要求很高,所以對同步傳輸數(shù)據(jù)的處理頗困難。此驅(qū)動的設(shè)計(jì)將同步數(shù)據(jù)的接收用中斷服務(wù)程序進(jìn)行處理,同步數(shù)據(jù)的處理放在中斷服務(wù)之外執(zhí)行。
    ①中斷服務(wù)程序流程如圖6所示。每次同步中斷發(fā)生時,首先從USB主機(jī)控制器的緩沖區(qū)內(nèi)讀取接收到的128字節(jié)同步信包,將數(shù)據(jù)存儲到數(shù)據(jù)處理程序提供的存儲單元中。再發(fā)送PID_IN標(biāo)志和端點(diǎn)號,設(shè)置同步傳輸類型并啟動下一次傳輸。CH374主機(jī)會在每lms發(fā)送1個SOF同步標(biāo)志,USB設(shè)備接收到SOF標(biāo)志后,會傳送下一個同步信包。

    ②同步數(shù)據(jù)處理程序如圖7所示。中斷結(jié)束后,執(zhí)行數(shù)據(jù)處理程序,程序讀取同步信包的第一個字節(jié),確認(rèn)包的序號,此序號的范圍是0~0xFF。如果此序號為0xFF,則說明是無效包,需要丟棄。如果此序號為0,則可能是首次采集得到的第一個同步數(shù)據(jù)包,直接存儲此數(shù)據(jù)到圖像幀;也可能是當(dāng)前圖像幀結(jié)束后開始的下一幀圖像的第一個同步信包,則需要處理已經(jīng)結(jié)束的當(dāng)前幀圖像,同時將當(dāng)前幀設(shè)置為下一幀。至此得到了一幀圖像數(shù)據(jù)。

2.3 圖像數(shù)據(jù)的預(yù)編碼
   
經(jīng)過處理后的圖像幀為S561格式數(shù)據(jù),它是一種RGB格式的圖像,無法被后續(xù)的圖像編碼器利用。常用的視頻壓縮標(biāo)準(zhǔn)(如H.263、MPEG4等)輸入的視頻數(shù)據(jù)為YUV420格式,所以必須對當(dāng)前的S561格式數(shù)據(jù)進(jìn)行預(yù)編碼,使之成為YUV420格式。因?yàn)樗惴ū容^復(fù)雜,在此不詳細(xì)敘述,請參考文獻(xiàn)[1]中bayer_decode()函數(shù)的的源代碼。至此,基于CH374的攝像頭驅(qū)動完成。

3 設(shè)計(jì)心得
   
由于此USB主機(jī)基于低端嵌入式硬件系統(tǒng),沒有操作系統(tǒng)支持,也沒有BUSHOUND類似的USB數(shù)據(jù)流分析軟件支持,難以找到基于嵌入式平臺USB同步傳輸參考程序,所以設(shè)計(jì)的難度很大。筆者的設(shè)計(jì)經(jīng)驗(yàn)是重在參考程序的選擇。
    此課題的設(shè)計(jì)可以分成兩個部分:一個是底層的CH374主機(jī)控制器驅(qū)動,主要包括設(shè)備探測和枚舉(這部分程序的設(shè)計(jì)可以參考類似主機(jī)控制器的驅(qū)動程序,如Cypress公司的SL811HS芯片主機(jī)驅(qū)動程序;另一部分是攝像頭初始化、視頻數(shù)據(jù)讀取及處理程序,僅有的參考資料是Linux下的開源USB攝像頭驅(qū)動。在設(shè)計(jì)過程中首先需要了解Linux設(shè)備驅(qū)動原理,很好地分析USB攝像頭驅(qū)動之后才能有設(shè)計(jì)思路。


結(jié)語
   
將本驅(qū)動加到已有的視頻壓縮程序中,通過網(wǎng)絡(luò)傳送視頻到PC后播放,在大小為QVGA(160×120)的圖像屬性下,可以達(dá)到每秒7幀,基本滿足了實(shí)際需要。基于CH374的USB攝像頭驅(qū)動,提供了低成本嵌入式平臺實(shí)現(xiàn)視頻采集的方案,使得視頻采集系統(tǒng)不再高不可攀,對視頻監(jiān)控的普及起到了積極作用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉