當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]摘 要:本文以Cypress公司的USB主控芯片SL811HS為例,介紹了其固件程序的設(shè)計(jì)方法。關(guān)鍵詞:USB;固件程序;事務(wù);端點(diǎn);DSP前言隨著需求的發(fā)展,許多電子產(chǎn)品尤其是各種嵌入式設(shè)備,需要提供USB主控接口來連接如移動

摘 要:本文以Cypress公司的USB主控芯片SL811HS為例,介紹了其固件程序的設(shè)計(jì)方法。

關(guān)鍵詞:USB;固件程序;事務(wù);端點(diǎn);DSP

前言

隨著需求的發(fā)展,許多電子產(chǎn)品尤其是各種嵌入式設(shè)備,需要提供USB主控接口來連接如移動硬盤、U盤等USB設(shè)備以滿足應(yīng)用要求。本文對Cypress公司的USB主控芯片SL811HS作了詳細(xì)介紹,并給出其固件程序的設(shè)計(jì)方法。

SL811HS芯片介紹

SL811HS是一款遵從USB1.1協(xié)議的嵌入式USB Host/Slave芯片。該芯片既能和USB低速設(shè)備進(jìn)行通信,也能和USB高速設(shè)備進(jìn)行通信。由于提供了8bit寬數(shù)據(jù)總線及中斷支持,使得該芯片能方便地與微處理器、微控制器以及DSP進(jìn)行連接。

SL811HS能工作在Host/Slave兩種模式。在Host模式下,SL811HS為USB主控制器,在Slave模式下,SL811HS為一個(gè)USB設(shè)備。該芯片的特點(diǎn)主要有:能通過硬件設(shè)置或軟件設(shè)置的方法使該芯片工作在Host或Slave模式;自動探測所接設(shè)備是低速設(shè)備還是高速設(shè)備;8bit雙向數(shù)據(jù)總線;片上SIE、USB收發(fā)器;自動產(chǎn)生SOF令牌包,以及自動生成令牌包、數(shù)據(jù)包中所需要的CRC5/CRC16數(shù)據(jù);內(nèi)部256byte RAM,支持乒乓操作;支持SUSPEND/RESUME、WAKE UP、LOW-POWER模式。

SL811HS固件程序設(shè)計(jì)

SL811HS對一個(gè)接入的USB設(shè)備的啟動過程為:

(1) SL811HS檢測到有外部USB設(shè)備接入;

(2) 對這個(gè)USB設(shè)備進(jìn)行Reset操作,檢測該USB設(shè)備是高速設(shè)備還是低速設(shè)備,并設(shè)置好SL811HS中對應(yīng)的寄存器位;

(3) 通過0號端點(diǎn)讀取該USB設(shè)備的描述符信息如廠商ID、產(chǎn)品ID、設(shè)備類、設(shè)備子類、設(shè)備協(xié)議,選取對應(yīng)的子程序;

(4) SL811HS固件驅(qū)動程序?qū)υ揢SB設(shè)備進(jìn)行初始化:讀取該USB設(shè)備的設(shè)備描述符,為該設(shè)備指定地址,讀取該設(shè)備的配置描述符信息、接口描述符信息、端點(diǎn)描述符信息,為該USB設(shè)備設(shè)置選擇配置描述符;

(5) 對該USB設(shè)備的初始化完成后,按照應(yīng)用要求與該設(shè)備進(jìn)行通信。

以圖1所示的電路圖為例,說明TMS320C6211DSP與SL811HS的電路連接關(guān)系以及一個(gè)簡化的固件程序(DSP程序)的設(shè)計(jì)。

該系統(tǒng)USB固件程序主要由幾個(gè)部分組成:對SL811HS進(jìn)行設(shè)置的初始化程序,這部分程序在系統(tǒng)復(fù)位后就立即執(zhí)行;發(fā)現(xiàn)USB設(shè)備接入的子程序,并判斷該設(shè)備是高速設(shè)備還是低速設(shè)備;對該USB設(shè)備進(jìn)行Enumerate即初始化操作,并指定其USB地址的子程序;用于其他數(shù)據(jù)通信的子程序,利用該部分程序完成指定的應(yīng)用要求。(本文有刪節(jié),詳見本刊網(wǎng)站:www.eaw.com.cn)

初始化部分需要根據(jù)SL811HS數(shù)據(jù)手冊的要求對各個(gè)控制寄存器進(jìn)行設(shè)置。把SL811HS控制寄存器2(地址0x0F)設(shè)置為0xAE,以使能SL811HS的全部功能;把控制寄存器1(地址0x05)設(shè)置為0;把SOF Count Low寄存器(地址0x0E)設(shè)置為0xE0,讓SL811HS每1ms自動產(chǎn)生SOF。此外還要對SL811HS中斷使能寄存器進(jìn)行設(shè)置,以使能設(shè)備插入/移去中斷。

在對SL811HS的初始化完成以后,TMS320C6211 DSP上的固件程序進(jìn)入等待設(shè)備插入的階段。當(dāng)SL811HS以中斷方式通知DSP現(xiàn)在有設(shè)備接入時(shí),固件程序進(jìn)入發(fā)現(xiàn)USB設(shè)備接入子程序。

需要注意的是,USB設(shè)備接入后應(yīng)首先對其進(jìn)行復(fù)位操作,且復(fù)位時(shí)間不少于10ms,否則USB設(shè)備將不能啟動。

USB設(shè)備在正常使用前,還需要由固件程序?qū)λM(jìn)行配置,即對USB設(shè)備進(jìn)行初始化。該部分涉及資源的分配、選擇合適的驅(qū)動程序、設(shè)置USB地址等。這些功能的完成都需要控制傳輸??刂苽鬏?shù)膶?shí)現(xiàn)是固件程序中一個(gè)比較復(fù)雜的部分。其實(shí)現(xiàn)函數(shù)為:

int ControlXfer(unsigned char DeviceAddr;//需要進(jìn)行控制傳輸U(kuò)SB設(shè)備的地址;

unsigned char Payload; file://USB數(shù)據(jù)包的最大尺寸;

Setup * setup; file://待傳輸?shù)腟ETUP令牌結(jié)構(gòu)體;

unsigned char *Buf; file://接收或發(fā)送數(shù)據(jù)緩沖區(qū);)

{ short int wLen=setup->wLength; file://取出該控制傳輸需要在數(shù)據(jù)階段傳輸?shù)臄?shù)據(jù)量的大??;

if (SetupXfer(DeviceAddr, Payload, 8, (unsigned char *)setup)= =false)

// 傳輸SETUP事務(wù),向USB設(shè)備指明控制傳輸?shù)诙A段數(shù)據(jù)傳輸?shù)姆较蚺c數(shù)量以及命令的類型;

return false;

if (wLen) file://需要數(shù)據(jù)階段傳送需要的數(shù)據(jù) {if (setup->bmRequest Type&0x80) file://區(qū)分?jǐn)?shù)據(jù)階段的傳輸方向; { if (InXfer(DeviceAddr,0,Payload,wLen,Buf)==false) file://調(diào)用InXfer()函數(shù)完成對IN事務(wù)的傳輸;

return false;} else { if (OutXfer (DeviceAddr, 0, Payload,wLen, Buf)==f alse) // 調(diào)用OutXfer()函數(shù)完成對OUT事務(wù)的傳輸;

return false; } } if (setup->bmRequestType &0x80) file://控制傳輸?shù)臓顟B(tài)階段;

{ if (OutXfer(DeviceAddr,0, Payload,0,Null)==false) return false;} else { if (InXfer(DeviceAddr,0, Payload,0, Null)==false) return false;} return true;}

有了完成控制傳輸?shù)暮瘮?shù),就可以完成對USB設(shè)備的Enumerate即初始化,其流程如圖2所示。

為了簡化說明,圖2的流程說明了USB設(shè)備只有一個(gè)配置描述符的流程。

在編碼SL811HS固件程序時(shí),還需要注意:根據(jù)應(yīng)用需要,如果要支持USB HUB類型的設(shè)備接入時(shí),需要對前面的程序作適當(dāng)?shù)恼{(diào)整和考慮,尤其注意在跨過HUB與一個(gè)低速USB設(shè)備通信時(shí)要先發(fā)一個(gè)前導(dǎo)包。如果支持多個(gè)USB設(shè)備的接入,通過對SL811HS內(nèi)部SOF Count Low寄存器和SOF Count High寄存器的分析,來確定能否滿足當(dāng)前接入設(shè)備的帶寬要求。每次事務(wù)傳輸完成,都應(yīng)該讀取SL811HS內(nèi)部USB Status寄存器的值,以確定該次事務(wù)傳輸是否成功、是否超時(shí)等異常情況的發(fā)生,以保證程序的穩(wěn)健性。

結(jié)語

在測試中,普通U盤接入系統(tǒng)的USB接口,該系統(tǒng)能自動識別出該USB設(shè)備并能按USB Mass Storage Class協(xié)議格式讀出、寫入該U盤上各個(gè)扇區(qū)的數(shù)據(jù)?;谏鲜龅膶?shí)現(xiàn)方案可以廣泛應(yīng)用于各種便攜式、嵌入式數(shù)據(jù)采集系統(tǒng)中。采集到的數(shù)據(jù)可以直接放到U盤等存儲器中,用戶只需定期更換存儲器即可,而且插入取出存儲器也比較方便,充分發(fā)揮了USB接口靈活方便的特點(diǎn)。

參考文獻(xiàn)

1. Don Anderson. USB系統(tǒng)體系. 中國電力出版社,2001

2. Universal Serial Bus Specification Revision 1.1, 1998.9

更多計(jì)算機(jī)與外設(shè)信息請關(guān)注21ic計(jì)算機(jī)與外設(shè)頻道

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

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

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(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)閉