在嵌入式系統(tǒng)中實現(xiàn)對U盤的操作
發(fā)布時間:2007/4/23 0:00:00 訪問次數(shù):1908
摘要:主要介紹在嵌入式系統(tǒng)中利用SL811HS對U盤操作的實現(xiàn)方法;簡要介紹USB設備中的海量存儲類、SL811HS的芯片特點及FAT文件系統(tǒng)。
關鍵詞:USB U盤 FAT SL811HS
引 言
USB(通用串行總線)用于將適用USB的外圍設備(device)連接到主機(host),實現(xiàn)二者之間數(shù)據(jù)傳輸?shù)耐獠靠偩結(jié)構;是一種快速、靈活的總線接口。它最大的特點是易于使用,主要是用在中速和低速的外設。
隨著USB規(guī)范的完善和成熟,USB外設的種類不斷豐富,應用領域也不斷擴大。在傳統(tǒng)的應用中,主要是PC扮演著主機的角色。根據(jù)USB的規(guī)范,可以看到在USB的拓樸結(jié)構中居于核心地位的是主機,每一次的數(shù)據(jù)傳輸都必須由主機發(fā)起和控制。但是隨著嵌入式產(chǎn)品應用領域的日益增長,USB外設的應用范圍也隨之擴大,為此在嵌入式系統(tǒng)中實現(xiàn)對USB外設控制也變得日益迫切。
本文針對USB外設中的U盤,說明如何在嵌入式系統(tǒng)中利用SL811HS實現(xiàn)對其的操作。
1 海量存儲類
USB設備分為五個大類,即顯示器(monitors)、通信設備(communications devices)、音頻設備(audio)、人機輸入(human input)和海量存儲(mass storage)。
通常所用的U盤、移動硬盤均屬于海量存儲類。
海量存儲類的規(guī)范中包括四個獨立的子規(guī)范,即CBI Transprot、Bulk-Only Transport、ATA Command Block、UFI Command Specification。前兩個協(xié)議定義了數(shù)據(jù)/命令/狀態(tài)在USB總線上的傳輸方法,Bulk-Only傳輸協(xié)議僅僅使用Bulk端點傳送數(shù)據(jù)/命令/狀態(tài),CBI傳輸協(xié)議則使用Control/Bulk/Interrupt三種類型的端點進行數(shù)據(jù)/命令/狀態(tài)的傳送。后兩個協(xié)議定義了存儲介質(zhì)的操作命令,ATA協(xié)議用于硬盤,UFI協(xié)議則針對USB移動存儲。
本設計中所使用的U盤遵循Bulk-Only傳輸協(xié)議和UFI命令規(guī)范。
2 實現(xiàn)方法
2.1 硬件設計
本設計采用SL811HS芯片完成對U盤的操作。SL811HS是Cypress公司推出的具有主/從兩種工作模式的USB控制器,遵循USB1.1規(guī)范;可自動檢測總線速率,支持全速12Mbps和低速1.5Mbps設備;具有8位雙向的數(shù)據(jù)總線,易與單片機連接;片內(nèi)256字節(jié)的SRAM(其中16字節(jié)用于工作寄存器),用于數(shù)據(jù)傳輸;可自動產(chǎn)生SOF和CRC5/16,簡化軟件工作量;片內(nèi)具有根Hub;支持掛起/喚醒工作模式,減少功耗;支持自動加1功能,減少數(shù)據(jù)讀寫周期;3.3V工作電源,接口可承受5V的工作電壓,可與多種規(guī)格的單片機連接。
單片機與SL811HS接口的原理如圖1所示。
2.2 軟件設計
通過USB主控芯片對U盤操作的主要工作是在軟件方面,它需要對眾多規(guī)范、協(xié)議透徹的理解。下面主要通過軟件的工作流程來說明設計過程。
2.2.1 SL811HS初始化
SL811HS共有15個配置寄存器,其中0~4、8~C是USB-A、USB-B的工作配置寄存器,5、F是控制寄存器,6是中斷使能寄存器,D為狀態(tài)寄存器,E、F為SOF計數(shù)寄存器。各個寄存器的具體功能如表1所列。
在SL811HS上電開始工作后,首先對USB總線復位(置寄存器5的位3為1,延時30ms后清零),然后使能設備檢測中斷(置寄存器6為0x61)。
2.2.2 設備檢測
(1)軟件協(xié)議
在設備檢測階段,主要通過setup結(jié)構的數(shù)據(jù)包(8字節(jié)長)向USB設備的控制端點0(默認端點)發(fā)送命令。數(shù)據(jù)包結(jié)構如表2所列。
(2)實現(xiàn)過程
當U盤插入USB插座時,SL811HS產(chǎn)生中斷,通過讀取中斷狀態(tài)寄存器可判斷中斷類型。當中斷類型表示為檢測到設備插入時,就可對USB設備即U盤進行配置了。此時還需使能SL811HS的1ms SOF(配置SL811HS的寄存器E=0xE0、F=0xAE,然后置位寄存器5的位0和寄存器0的位5),以便進行數(shù)據(jù)幀的同步。
在U盤未配置之前,其默認地址和默認控制端點均為0。利用setup數(shù)據(jù)包對U盤進行配置時,須將U盤的地址寫入SL811HS的寄存器4,將數(shù)據(jù)包的類型和U盤的控制端點寫入SL811HS的寄存器3。
以下為對U盤配置過程的主要步驟。
① 設備描述符(GetDeviceDescriptor)。請求設備描述符的setup數(shù)據(jù)包為
通過讀取設備描述符,可獲得設備的子類(通用海量存儲類)、端點0的最大包長(一般為8字節(jié))。
② 讀取配置描述符(GetConfigDescriptor)。
對于請求配置描述符,可以先進行首次請求,要求數(shù)據(jù)包長為9(一個配置描述符的長度)。數(shù)據(jù)包內(nèi)容為
接收到
摘要:主要介紹在嵌入式系統(tǒng)中利用SL811HS對U盤操作的實現(xiàn)方法;簡要介紹USB設備中的海量存儲類、SL811HS的芯片特點及FAT文件系統(tǒng)。
關鍵詞:USB U盤 FAT SL811HS
引 言
USB(通用串行總線)用于將適用USB的外圍設備(device)連接到主機(host),實現(xiàn)二者之間數(shù)據(jù)傳輸?shù)耐獠靠偩結(jié)構;是一種快速、靈活的總線接口。它最大的特點是易于使用,主要是用在中速和低速的外設。
隨著USB規(guī)范的完善和成熟,USB外設的種類不斷豐富,應用領域也不斷擴大。在傳統(tǒng)的應用中,主要是PC扮演著主機的角色。根據(jù)USB的規(guī)范,可以看到在USB的拓樸結(jié)構中居于核心地位的是主機,每一次的數(shù)據(jù)傳輸都必須由主機發(fā)起和控制。但是隨著嵌入式產(chǎn)品應用領域的日益增長,USB外設的應用范圍也隨之擴大,為此在嵌入式系統(tǒng)中實現(xiàn)對USB外設控制也變得日益迫切。
本文針對USB外設中的U盤,說明如何在嵌入式系統(tǒng)中利用SL811HS實現(xiàn)對其的操作。
1 海量存儲類
USB設備分為五個大類,即顯示器(monitors)、通信設備(communications devices)、音頻設備(audio)、人機輸入(human input)和海量存儲(mass storage)。
通常所用的U盤、移動硬盤均屬于海量存儲類。
海量存儲類的規(guī)范中包括四個獨立的子規(guī)范,即CBI Transprot、Bulk-Only Transport、ATA Command Block、UFI Command Specification。前兩個協(xié)議定義了數(shù)據(jù)/命令/狀態(tài)在USB總線上的傳輸方法,Bulk-Only傳輸協(xié)議僅僅使用Bulk端點傳送數(shù)據(jù)/命令/狀態(tài),CBI傳輸協(xié)議則使用Control/Bulk/Interrupt三種類型的端點進行數(shù)據(jù)/命令/狀態(tài)的傳送。后兩個協(xié)議定義了存儲介質(zhì)的操作命令,ATA協(xié)議用于硬盤,UFI協(xié)議則針對USB移動存儲。
本設計中所使用的U盤遵循Bulk-Only傳輸協(xié)議和UFI命令規(guī)范。
2 實現(xiàn)方法
2.1 硬件設計
本設計采用SL811HS芯片完成對U盤的操作。SL811HS是Cypress公司推出的具有主/從兩種工作模式的USB控制器,遵循USB1.1規(guī)范;可自動檢測總線速率,支持全速12Mbps和低速1.5Mbps設備;具有8位雙向的數(shù)據(jù)總線,易與單片機連接;片內(nèi)256字節(jié)的SRAM(其中16字節(jié)用于工作寄存器),用于數(shù)據(jù)傳輸;可自動產(chǎn)生SOF和CRC5/16,簡化軟件工作量;片內(nèi)具有根Hub;支持掛起/喚醒工作模式,減少功耗;支持自動加1功能,減少數(shù)據(jù)讀寫周期;3.3V工作電源,接口可承受5V的工作電壓,可與多種規(guī)格的單片機連接。
單片機與SL811HS接口的原理如圖1所示。
2.2 軟件設計
通過USB主控芯片對U盤操作的主要工作是在軟件方面,它需要對眾多規(guī)范、協(xié)議透徹的理解。下面主要通過軟件的工作流程來說明設計過程。
2.2.1 SL811HS初始化
SL811HS共有15個配置寄存器,其中0~4、8~C是USB-A、USB-B的工作配置寄存器,5、F是控制寄存器,6是中斷使能寄存器,D為狀態(tài)寄存器,E、F為SOF計數(shù)寄存器。各個寄存器的具體功能如表1所列。
在SL811HS上電開始工作后,首先對USB總線復位(置寄存器5的位3為1,延時30ms后清零),然后使能設備檢測中斷(置寄存器6為0x61)。
2.2.2 設備檢測
(1)軟件協(xié)議
在設備檢測階段,主要通過setup結(jié)構的數(shù)據(jù)包(8字節(jié)長)向USB設備的控制端點0(默認端點)發(fā)送命令。數(shù)據(jù)包結(jié)構如表2所列。
(2)實現(xiàn)過程
當U盤插入USB插座時,SL811HS產(chǎn)生中斷,通過讀取中斷狀態(tài)寄存器可判斷中斷類型。當中斷類型表示為檢測到設備插入時,就可對USB設備即U盤進行配置了。此時還需使能SL811HS的1ms SOF(配置SL811HS的寄存器E=0xE0、F=0xAE,然后置位寄存器5的位0和寄存器0的位5),以便進行數(shù)據(jù)幀的同步。
在U盤未配置之前,其默認地址和默認控制端點均為0。利用setup數(shù)據(jù)包對U盤進行配置時,須將U盤的地址寫入SL811HS的寄存器4,將數(shù)據(jù)包的類型和U盤的控制端點寫入SL811HS的寄存器3。
以下為對U盤配置過程的主要步驟。
① 設備描述符(GetDeviceDescriptor)。請求設備描述符的setup數(shù)據(jù)包為
通過讀取設備描述符,可獲得設備的子類(通用海量存儲類)、端點0的最大包長(一般為8字節(jié))。
② 讀取配置描述符(GetConfigDescriptor)。
對于請求配置描述符,可以先進行首次請求,要求數(shù)據(jù)包長為9(一個配置描述符的長度)。數(shù)據(jù)包內(nèi)容為
接收到
熱門點擊
- QUICCEngine新引擎推動IP網(wǎng)絡革新
- CISC和RISC微控制器
- 單片機和PC機串口通訊試驗
- 如何用單片機實現(xiàn)來電顯示解碼
- DSP數(shù)字信號處理器在科里奧質(zhì)量流量計上的應
- 基于PIC單片機的六擋調(diào)控電渦流緩速器的設計
- 在Windows下實現(xiàn)PC機與單片機AT89
- PIC系列單片機應用設計與實例
- 基于嵌入式控制器的水質(zhì)實時遠程檢測系統(tǒng)
- 建設單片機應用平臺、實施平臺開發(fā)戰(zhàn)略V0.5
推薦技術資料
- DFRobot—玩的就是
- 如果說新車間的特點是“靈動”,F(xiàn)QPF12N60C那么... [詳細]