基于單片機的U盤讀寫_第1頁
基于單片機的U盤讀寫_第2頁
基于單片機的U盤讀寫_第3頁
基于單片機的U盤讀寫_第4頁
基于單片機的U盤讀寫_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于單片機的U盤數據傳輸裝置 機電工程學院測控技術與儀器專業(yè) 李朋飛 摘要:隨著單片機技術的發(fā)展,各種嵌入式系統的逐漸應用于工作現場的數據采集和控制之中。USB總線技術的發(fā)展,使得數據傳輸和采集技術,變得簡單,易攜和方便使用?;赨SB總線技術的USB儲存設備簡稱U盤,它具有支持熱拔熱插,儲存量大,耐用,和輕巧方便的特點?;趩纹瑱C技術的U盤數據采集是把單片機系統作為主機系統,再利用支持USB總線協議的U盤讀寫芯片或者模塊來完成工業(yè)現場的數據采集或者傳輸。這樣,便可以把U盤的大容量存儲,方便易用的功能從PC機系統擴展到單片機系統中,可以方便在室外進行大量數據的采集。例如,可以將單片機系統中AD

2、轉換后采集到的數據,儲存到U盤之中,以便于利用計算機對數據經行整理或分析。本文主要介紹一種技術成熟U盤讀寫芯片CH375和以此芯片為核心的U盤讀寫模塊,簡單介紹了CH375芯片的構造和特點,以及U盤模塊的應用特點。再次,介紹了串口版U盤模塊的應用,并設計了串口模塊和單片機之間的通信的應用方式,并附有模塊和單片機之間采用RS232電平進行通信的連接電路圖。同時,還簡單的介紹了,U盤讀寫之中需要注意的幾個協議等。最后附錄中的程序提供了一個能夠實現單片機以字節(jié)的方式對U盤的讀和寫的程序。關鍵詞:單片機 U盤 USB2.0 U盤模塊 串口 通信 RS232接口 CH375 電平一, 引言半導體技術的發(fā)

3、展帶來計算機向微型化發(fā)展的革命,同時隨著計算機技術的快速發(fā)展,USB(Universal Serial Bus)存儲設備的使用已經非常普遍,USB 用于將適用USB 的外圍設備(device)連接到主機(host),實現二者之間數據傳輸的外部總線結構;是一種快速、靈活的總線接口。它最大的特點是易于使用,攜帶方便,主要是用在中速,低速的外設。隨著USB 規(guī)范的完善和成熟,USB 外設的種類不斷豐富,應用領域也不斷擴大。在傳統的應用中,主要是PC 扮演著主機的角色。根據USB 的規(guī)范,可以看到在USB 的拓樸結構中居于核心地位的是主機,每一次的數據傳輸都必須由主機發(fā)起和控制。但是隨著單片機產品應用

4、領域的日益增長,USB 外設的應用范圍也隨之擴大,為此在單片機系統中實現對USB外設控制也變得日益迫切。因此在一些需要轉存數據的設備,儀器上使用USB移動存儲設備接口的芯片便相繼產生了,CH375 就是其中之一,它是一個USB 總線的通用接口芯片,支持HOST 主機方式和SLAVE 設備方式。如今的USB 就象當日的RS232,最終發(fā)展必是業(yè)界的主流外設接口技術。USB 有著其它接口不可替代的優(yōu)勢。隨著USB 技術的發(fā)展,計算機的移動存儲介質普遍采用U 盤或移動硬盤。如今,USB 技術已經越來越普及和成熟,低成本、高穩(wěn)定性、較高的數據傳輸速率和即插即用的方便性,使其備受硬件廠商的青睞。隨著數據

5、采集和單片機用戶對移動存儲的需求越來越大,具有USB 接口的存儲設備以其優(yōu)異的性價比和靈活性常用來進行數據的存儲和交換,所以在單片機系統中實現對優(yōu)盤或移動硬盤的直接讀寫是非常有價值的。二, 研究的意義 USB是近年發(fā)展起來的一種快速、靈活的總線接口。它最大的特點是易于使用、可熱插拔、接口連接靈活,并且能夠提供外設電源,在嵌人式系統及智能儀表中得到廣泛的應用。而51系列單片機以其優(yōu)越的性能、成熟的技術、高性價比被廣應用于測控儀器等自動化領域。因此用51系列單片機實現USB主機接口,進而實現對USB外設的控制,對提高整個系統的數據存儲、數據傳輸、設備控制等性能都有很大的作用。根據我們的調查和了解,

6、我們發(fā)現,隨著Flash Memory非易失存儲技術的發(fā)展,基于USB接口的閃存即U盤現已得到廣泛應用。從理論上講,以U盤作為便攜式采集存儲系統的存儲載體完全能夠滿足長時間采集海量數據的要求。但目前所面臨的問題是,U盤主要應用于PC機系統中。以單片機等微處理器為核心的嵌入式系統的應用中,尚缺少與U盤的直接接口技術。因此將單片機技術與U盤存儲技術兩者結合起來,利用單片機直接讀寫U盤,并通過總線方式與嵌入式系統的其它部分實現命令和數據的通信。采用單片機直接控制讀寫U盤,關鍵在于USB-HOST技術的實現,即單片機作為USB主機系統。USB系統包括兩部分:USB主機和USB外設,它們組合在一起就構成

7、了完整的USB系統。USB的拓撲結構中居于核心地位的是Host(也稱為主機),任何一次USB的數據傳輸都必須由主機來發(fā)起和控制,所有的USB外設都只能和主機建立連接,任何兩個外設之間或是兩個主機之間無法直接通信。鑒于復雜的USB協議,我們覺得可以采用USB讀寫模塊,這樣只要將USB讀寫模塊嵌入到用戶單片機系統中,就可以通過單片機的串口與USB讀寫模塊之間的通信,進而讀寫U盤里面的數據,還可以方便的利用U盤儲存海量的AD轉換后的數據等。三 , USB總線接口芯片CH3753.1 概述: CH375 是一個USB總線的通用接口芯片,支持USB-HOST主機方式和USB-DEVICE/SLAVE設備

8、方式。在本地端,CH375具有8位數據總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/DSP/MCU/MPU等控制器的系統總線上。在USB主機方式下,CH375還提供了串行通訊方式,通過串行輸入、串行輸出和中斷輸出與單片機/DSP/MCU/MPU 等相連接。CH375的USB 主機方式支持常用的USB 全速設備,外部單片機可以通過CH375 按照相應的USB 協議與USB 設備通訊。CH375 還內置了處理Mass-Storage 海量存儲設備的專用通訊協議的固件,外部單片機可以直接以扇區(qū)為基本單位讀寫常用的USB 存儲設備(包括USB 硬盤/USB閃存盤/U 盤)3.2 特點

9、1)全速USB-HOST 主機接口,兼容USB V2.0,外圍元器件只需要晶體和電容。 2)全速設備接口,完全兼容CH372 芯片,支持動態(tài)切換主機與設備方式。 3)主機端點輸入和輸出緩沖區(qū)各64 字節(jié),支持常用的12Mbps 全速USB 設備。 4)支持USB 設備的控制傳輸、批量傳輸、中斷傳輸。 5)自動檢測USB 設備的連接和斷開,提供設備連接和斷開的事件通知。 6)內置控制傳輸的協議處理器,簡化常用的控制傳輸。 7) 內置固件處理海量存儲設備的專用通訊協議,支持Bulk-Only傳輸協議和SCSI、UFI、RBC 或等效命令集的USB 存儲設備(包括USB 硬盤/USB 閃存盤/U 盤

10、)。 8)通過U 盤文件級子程序庫實現單片機讀寫USB 存儲設備中的文件。 9)并行接口包含8 位數據總線,4 線控制:讀選通、寫選通、片選輸入、中斷輸出。 10)串行接口包含串行輸入、串行輸出、中斷輸出,支持通訊波特率動態(tài)調整。 11)支持5V 電源電壓和3.3V 電源電壓,CH375A 芯片還支持低功耗模式。 12)采用SOP-28 封裝,可以提供SOP28 到DIP28 的轉換板。 圖1 CH375各引腳說明3.3 功能說明CH375 芯片可以工作于USB-HOST 主機方式或者USB 設備方式。CH375的USB 主機方式支持并行接口和串行接口。在USB主機方式下,CH375支持各種常

11、用的USB全速設備,外部單片機需要編寫固件程序按照相應的USB協議與USB 設備通訊。但是對于USB存儲設備,CH375 內置了相關協議,通常情況下,外部單片機不需要編寫固件程序,就可以直接通訊。CH375 芯片在本地端提供了通用的被動并行接口和點對點的串行接口。圖2 CH375芯片的電器參數3.4 CH375工作于串口模式下 串行接口只能用于USB 主機方式,CH375 芯片的USB 設備方式不支持串口。串口信號線包括:串行數據輸入引腳RXD、串行數據輸出引腳TXD、中斷輸出引腳INT#。通過串行接口,CH375 可以用最少的連線與單片機、DSP、MCU 進行較遠距離的點對點連接。CH375

12、芯片的RXD 和TXD可以分別連接到單片機的串行數據輸出引腳和串行數據輸入引腳。INT#輸出的中斷請求是低電平有效,用于通知單片機。CH375 的串行數據格式是1個起始位、9個數據位、1個停止位,其中前8個數據位是一個字節(jié)數據,最后1個數據位是命令標志位。第9位為0時,前8位的數據被寫入CH375芯片中,第9位為1時,前8位被作為命令碼寫入CH375芯片中。CH375的串行通訊波特率默認是9600bps,單片機可以隨時通過SET_BAUDRATE 命令選擇合適的通訊波特率。3.5 其它功能簡介 在CH375 芯片的復位期間,TXD引腳用于選擇通訊接口。如果CH375 在復位期間檢測到TXD引腳

13、為低電平則啟用并行接口,否則啟用串行接口。如果啟用串行接口,那么復位完成后TXD引腳將用于串行數據輸出,并且CH375 芯片只能工作于USB 主機方式。 CH375芯片的ACT#引腳用于狀態(tài)指示。在內置固件的USB設備方式下,當USB 設備尚未配置或者取消配置后,該引腳輸出高電平;當USB 設備配置完成后,該引腳輸出低電平。對于CH375A 芯片,在USB主機方式下,當USB 設備斷開后,該引腳輸出高電平;當USB設備連接后,該引腳輸出低電平。CH375 的ACT#引腳可以外接串了限流電阻的發(fā)光二級管LED,用于指示相關的狀態(tài)。CH375 芯片的UD+和UD-引腳是USB 信號線,工作于USB

14、 設備方式時,應該直接連接到USB總線上;工作于USB 主機方式時,可以直接連接到USB設備。如果為了芯片安全而串接保險電阻或者電感,那么交直流等效串聯電阻應該在5之內。CH375芯片內置了電源上電復位電路,一般情況下,不需要外部提供復位。RSTI 引腳用于從外部輸入異步復位信號;當RSTI 引腳為高電平時,CH375芯片被復位;當RSTI 引腳恢復為低電平后,CH375會繼續(xù)延時復位20mS 左右,然后進入正常工作狀態(tài)。為了在電源上電期間可靠復位并且減少外部干擾,可以在RSTI引腳與VCC 之間跨接一個容量為0.47uF 左右的電容。RST引腳和RST#引腳是復位狀態(tài)輸出引腳,分別是高電平有

15、效和低電平有效;當CH375電源上電復位或者被外部強制復位以及復位延時期間,RST 引腳和RST#引腳分別輸出高電平和低電平;CH375復位完成后,RST 引腳和RST#引腳分別恢復到低電平和高電平。RST 和RST#引腳可以用于向外部單片機提供上電復位信號。 CH375芯片正常工作時需要外部為其提供12MHz 的時鐘信號。一般情況下,時鐘信號由CH375內置的反相器通過晶體穩(wěn)頻振蕩產生。外圍電路只需要在XI 和XO 引腳之間連接一個標稱頻率為12MHz的晶體,并且分別為XI 和XO 引腳對地連接一個高頻振蕩電容。如果從外部直接輸入12MHz時鐘信號,那么應該從XI 引腳輸入,而XO 引腳懸空

16、。CH375芯片支持5V電源電壓或者3.3V 電源電壓。當使用5V 工作電壓時,CH375 芯片的VCC引腳輸入外部5V 電源,并且V3 引腳應該外接容量為0.01uF 左右的電源退耦電容。當使用3.3V 工作電壓時,CH375 芯片的V3引腳應該與VCC引腳相連接,同時輸入外部的3.3V 電源,并且與CH375 芯片相連接的其它電路的工作電壓不能超過3.3V。3.6 內部結構 CH375 芯片內部集成了PLL 倍頻器、主從USB 接口SIE、數據緩沖區(qū)、被動并行接口、異步串行接口、命令解釋器、控制傳輸的協議處理器、通用的固件程序等。PLL 倍頻器用于將外部輸入的12MHz 時鐘倍頻到48MH

17、z,作為USB 接口SIE 時鐘。 主從USB 接口SIE是USB主機方式和USB設備方式的一體式SIE,用于完成物理的USB數據接收和發(fā)送,自動處理位跟蹤和同步、NRZI編碼和解碼、位填充、并行數據與串行數據之間的轉換、CRC數據校驗、事務握手、出錯重試、USB 總線狀態(tài)檢測等。 數據緩沖區(qū)用于緩沖USB 接口SIE 收發(fā)的數據。 被動并行接口用于與外部單片機/DSP/MCU 交換數據。 異步串行接口用于代替被動并行接口與外部單片機/DSP/MCU 交換數據。 命令解釋器用于分析并執(zhí)行外部單片機/DSP/MCU 提交的各種命令。 控制傳輸的協議處理器用于自動處理常用的控制傳輸的多個階段,簡化

18、外部固件編程。 通用的固件程序包含兩組:一組用于USB 設備方式,自動處理USB默認端點0 的各種標準事務等;另一組用于USB 主機方式,自動處理Mass-Storage 海量存儲設備的專用通訊協議。 CH375 芯片內部具有7 個物理端點: 端點0 是默認端點,支持上傳和下傳,上傳和下傳緩沖區(qū)各是8 個字節(jié); 端點1包括上傳端點和下傳端點,上傳和下傳緩沖區(qū)各是8個字節(jié),上傳端點的端點號是81H,下傳端點的端點號是01H; 端點2 包括上傳端點和下傳端點,上傳和下傳緩沖區(qū)各是64 個字節(jié),上傳端點的端點號是82H,下傳端點的端點號是02H; 主機端點包括輸出端點和輸入端點,輸出和輸入緩沖區(qū)各是

19、64 個字節(jié),主機端點與端點2合用同一組緩沖區(qū),主機端點的輸出緩沖區(qū)就是端點2 的上傳緩沖區(qū),主機端點的輸入緩沖區(qū)就是端點2 的下傳緩沖區(qū)。 CH375 的端點0、1、2 只用于USB 設備方式,在USB 主機方式下只需要用到主機端點。在USB 主機方式下,CH375 支持各種常用的USB 全速設備。USB 設備的端點號可以是015,兩個方向最多支持31 個端點,USB 設備的包長度可以是064 字節(jié)。 內置固件可以處理Mass-Storage 海量存儲設備的通訊協議,要求USB 存儲設備支持Bulk-Only傳輸協議,支持SCSI、UFI、RBC或者等效的命令集,并且數據端點的最大包長度是6

20、4 字節(jié),但是默認端點0 的最大包長度可以是8、16、32 或者64 字節(jié)。如果USB 存儲設備不符合上述要求,則需要外部單片機通過控制傳輸以及ISSUE_TOKEN 命令或者ISSUE_TKN_X命令自行處理相關通訊協議。圖3 CH375芯片內部中斷邏輯圖3.7 本地端的單片機軟件 CH375芯片占用兩個地址位,當A0 引腳為高電平時選擇命令端口,可以寫入命令;當A0引腳為低電平時選擇數據端口,可以讀寫數據。單片機通過8 位并口對CH375 芯片進行讀寫,所有操作都是由一個命令碼、若干個輸入數據和若干個輸出數據組成,部分命令不需要輸入數據,部分命令沒有輸出數據。命令操作步驟如下:、在A0=1

21、 時向命令端口寫入命令代碼;、如果該命令具有輸入數據,則在A0=0 時依次寫入輸入數據,每次一個字節(jié);、如果該命令具有輸出數據,則在A0=0 時依次讀取輸出數據,每次一個字節(jié);、命令完成,可以暫停或者轉到繼續(xù)執(zhí)行下一個命令。 CH375芯片專門用于處理USB 通訊,在檢測到USB 總線的狀態(tài)變化時或者命令執(zhí)行完成后,CH375以中斷方式通知單片機進行處理。3.8 單片機讀寫U盤文件 圖4 單片機讀寫U 盤文件 一般情況下,單片機或嵌入式系統處理USB 存儲設備的文件系統需要實現上圖左邊的4個層次,右邊是USB 存儲設備的內部結構層次。由于CH375 不僅是一個通用的USB-HOST 硬件接口芯

22、片,還內置了相關的固件程序,包含了上圖左邊的3 個層次(標為灰色部分),所以實際的單片機程序只需要處理FAT 文件系統層,并且即使這一層也可以由CH375 的U 盤文件級子程序庫實現。 如果不需要處理文件系統,也就是不處理上圖左邊的最頂層,那么CH375 直接提供了數據塊的讀寫接口,以512字節(jié)的物理扇區(qū)為基本讀寫單位,從而將USB存儲設備簡化為一種外部數據存儲器,單片機可以自由讀寫USB 存儲設備中的數據,也可以自由定義其數據結構。由于計算機將USB 存儲設備組織為文件系統,為了方便單片機通過USB移動存儲設備與計算機之間交換數據,單片機也可以將USB 存儲設備組織為文件系統,也就是處理上圖

23、左邊的最頂層。 CH375以C語言子程序庫提供了USB存儲設備的文件級接口,這些應用層接口API包含了常用的文件級操作,可以移植并嵌入到各種常用的單片機程序中。 CH375 的U 盤文件級子程序庫具有以下特性:支持常用的FAT12、FAT16 和FAT32 文件系統,磁盤容量可達100GB 以上,支持多級子目錄,支持8.3 格式的大寫字母和中文文件名,可以支持小寫字母或者長文件名,支持文件打開、新建、刪除、讀寫以及搜索等。 CH375 的文件級子程序庫需要大約600 字節(jié)的隨機存儲器RAM 作為緩沖區(qū)。以普通的MCS-51 單片機為例,文件系統的全部子程序有4KB 到8KB 代碼,并且需要大約

24、80 字節(jié)的內部RAM 和512 字節(jié)的外部RAM 作為緩沖區(qū)。 四,串口版U盤讀寫模塊的說明 模塊具有兩個外部接口:P1 是USB 插座,可以直接插入U 盤或者通過USB 延長線連接U盤,當進行程序升級或者重新配置時應該通過USB 對連線連接計算機的USB 端口;P2 是16 腳的雙排針或者插座,用于連接單片機系統。圖5 串口版U盤模塊正反外觀圖 在串口方式下,單片機與模塊的P2 端口相連接,只需要使用高8 腳(第9 腳到第16腳),其余引腳可以不連接。模塊可以通過串行輸入SIN、串行輸出SOUT 連接到單片機的異步串口,除此之外,啟動輸入STA#還應該連接到單片機的一個I/O 引腳,而中斷

25、輸出INT#可以根據需要決定是否連接到單片機的中斷引腳。 模塊的串口是1 位起始位、8 位數據位、1位停止位的異步串口,串口的通訊波特率可以在功能配置時設定,如果未設定那么默認是4800bps(與晶體X2 的頻率有關),單片機系統可以根據需要通過CMD_BaudRate 命令設定更高的波特率。如果在功能配置時選擇檢查串口超時,那么在通過串口輸入命令包時,模塊會檢查串口數據輸入超時,如果連續(xù)兩個數據字節(jié)之間的間隔大于串口輸入超時時間,則模塊將放棄該命令包。 4+1 線串口是指GND、SIN、SOUT、STA#和可選的INT#,P2 引腳定義如下:圖6 模塊引腳定義圖 為了節(jié)約單片機的I/O 引腳

26、,模塊還支持三線制串口,在這種方式下,單片機與模塊之間只需要連接SIN 和SOUT 兩根信號線及公共地線,單片機通過串口發(fā)送兩個同步碼字節(jié)(57H、ABH)代替原來向模塊的STA#引腳提供的啟動信號,實現與模塊的命令同步。在通過串口輸入兩個同步碼字節(jié)時,模塊會檢查串口數據輸入超時,如果連續(xù)兩個數據字節(jié)之間的間隔大于串口輸入超時時間,則模塊將放棄該同步碼及命令包。圖7 TTL電平轉RS232電平經行通信的串口模塊電路圖 圖8 串口版模塊與單片機之間的電路連接圖圖9 單片機系統串口與RS232借口連接電路圖圖10 單片機系統和模塊之間連接的實物圖六,軟件設計 為了使上位PC 機能夠直接讀取該讀寫器

27、寫入U 盤的數據,數據存儲按照FAT32 文件管理方式存儲,其中涉及USB 和UFI 協議以及FAT32 文件存儲格式。6.1 USB協議 USB(通用串行總線)用于將USB 接口的外圍設備(device)連接到主機(host),實現二者之間數據傳輸的外部總線結構,是一種快速、靈活的總線接口,USB 的傳輸類型有控制(control)、批量(bulk)、中斷(interrupt)和同步(synchronous)傳輸4 種,它最大的特點是易于使用,即插即用,主要是用在中速和低速的外設。 控制數據用于在USB 接入總線時對其進行配置,其他的驅動軟件可以根據具體的應用來選擇使用控制傳輸,這種數據傳輸

28、不會丟失數據。 典型的批量數據包括象使用打印機或掃描儀時所出現的大數據量的數據,這種批量數據是連續(xù)的,通過在硬件中實現差錯檢測功能,并且有選擇地進行一定的應進重試操作,可以在硬件層次上保證數據的可靠交換。 由設備自發(fā)產生的數據傳輸是中斷數據傳輸,這類數據傳輸可以由USB 設備在任意時刻發(fā)起,而且USB 總線以不低于設備說明的速率進行傳輸。 同步數據在產生、傳送和處理過程中是連續(xù)的和實時的,在穩(wěn)定的同步數據發(fā)送和接收速率中包含了相應的時鐘信息,為了保持定時關系,同步數據必須按照接收的速率進行傳輸。6.2 BULK_ONLY 和UFI 協議 USB 設備分為5 大類,即顯示器、通信設備、音頻設備、

29、人機輸入和海量存儲。通常所用的U 盤、移動硬盤均屬于海量存儲類。海量存儲類的規(guī)范中包括4 個獨立的子規(guī)范,即CBI 傳輸、Bulk-Only 傳輸、ATA 命令塊、UFI 命令規(guī)范。前兩個協議定義了數據/命令/狀態(tài)在USB 總線上的傳輸方法,Bulk-Only 傳輸協議僅僅使用Bulk 端點傳送數據/命令/狀態(tài),CBI 傳輸協議則使用Control/bulk/interrupt 三種類型的端點進行數據/命令/狀態(tài)的傳送。后兩個協議定義了存儲介質的操作命令,ATA 協議用于硬盤,UFI 協議則針對USB 移動存儲,U盤讀寫器的設計遵循Bulk-Only 傳輸協議和UFI 命令規(guī)范。UFI 命令塊

30、規(guī)范是針對USB 移動存儲而制定的,它總共定義了19 個12 字節(jié)長度的操作命令。 Bulk-Only 事務以主機向設備發(fā)送CBW(Command Block Warp)包,并以建立相應的數據傳輸開始的,設備接收到CBW 包,檢查并解釋它,試圖滿足主機的要求,并通過CSW(Command State Wrap)包向主機返回狀態(tài)信息。 CBW 是主機通過Bulk-Out 端點向設備發(fā)送的命令塊包,在CBW 中使用方向位和數據傳輸長度域指明期待的傳輸,CBW 必須起始于包邊界,并且必須以31 字節(jié)的短包傳輸結束,相繼的數據包和CSW 包必須開始于一個新的包邊界,所有的CBW 包必須按低字節(jié)在前的次

31、序傳輸。CBW包結構如圖所示,各域含義如下: 圖10 CBW包結構1)命令塊包標識。CBW 包標記,表明這是一個CBW 包,這個域的值為43425355H。2)命令塊標記。當設備返回相應的CSW 包時,必須使命令狀態(tài)標記域的值與此值相同。3)數據傳輸長度。指明命令執(zhí)行期間在Bulk 端點上傳數據的字節(jié)長度,如果這個域的值是0,則在CBW 和CSW 之間設備和主機不傳輸任何數據,并且設備將忽略在命令塊標旗域中的方向位的值。4)命令塊標旗。方向位規(guī)定了Bulk 端點數據傳輸的方向,其他位預留。5)邏輯單元號。指定命令塊被發(fā)送到的邏輯單元號,如果設備不支持多個邏輯單元號,則主機將這個域設置為0。6)

32、CBWCB 長度,定義了CBWCB 的有效長度,合法值為1-16。7)CBWCB。由設備執(zhí)行的命令,由設備解釋。CSW 向主機表明來自于CBW 包的命令塊的執(zhí)行狀態(tài)。設備收到CBW 包解析處理后將通過Bulk-In 端點發(fā)送一個CSW 包。CSW 開始于包邊界,并以13 字節(jié)的短包結束,結構如圖所示,各域含義如下: 圖11 命令狀態(tài)包結構1)命令狀態(tài)包標識。CSW 包的標記,表明這是一個CSW 包,這個域的值為53425355H。2)命令狀態(tài)標記。次域的值域CBW 包的命令塊標記相同。3)數據殘余。實際數據傳輸量與CBW 包中規(guī)定的數據傳輸長度的差值。4)命令執(zhí)行狀態(tài),表明命令成功或失敗信息,

33、如果命令執(zhí)行成功,則設備將設置此域的值為0,非0 值;則表明失敗或錯誤。 UFI 是針對USB 移動存儲而制定的命令塊協議,它規(guī)定了主機和設備進行信息交換所使用的命令塊、數據和狀態(tài)信息,Bulk-Only 傳輸協議定義了傳輸這些信息的方法,其中UFI 命令塊是封裝在CBW 包中的CBWCB,設備通過讀取CBWCB 確定具體要執(zhí)行何種操作命令(如讀命令),如何完成這個命令(如從閃存的哪個地址讀,需要讀取的長度),設備將命令的執(zhí)行狀態(tài)封裝成CSW 返回給主機。 UFI 用于大多數命令的12 字節(jié)命令塊的描述,結構如圖4 所示,其中各參數意義如下:1)操作命令代碼。指明所需要執(zhí)行的操作命令;2)邏輯

34、單元號。指明命令將發(fā)送到哪個邏輯單元,如果設備只有一個邏輯單元,則此域的值為0。3)邏輯塊地址。命令操作的起始地址。4)傳輸長度,指明請求傳輸的數據量,通常以"扇區(qū)"作單位,但是有幾個命令是以"字節(jié)"作單位的,對于這些命令,傳輸長度域可以以不同的名字標識,若此域的值為0,則表面沒有數據需要傳輸。5)參數列表長度,用于指定發(fā)送到設備的字節(jié)數,這個域典型的應用于發(fā)送到設備的參數命令塊(如模式參數、診斷參數等),若此域的值為0,則表面沒有數據需要傳輸。6)分配長度,指明主機已經分配的用于返回數據的最大字節(jié)長度,若此值為0,則表明沒有數據需要傳輸。6.3 FAT

35、32 FAT 是Microsoft 較早推出的文件系統,具有高度的兼容性,目前仍然廣泛應用于個人電腦尤其是移動存儲設備中,FAT 由引導扇區(qū)、FAT1 表、FAT2 表、目錄和文件區(qū)組成(其中FAT2 表是FAT1 表的備份)。磁盤的管理是以扇區(qū)為單位的,而移動存儲設備則是以塊為單位的,FAT 將塊映射成扇區(qū),原理相同,FAT 將磁盤空間以一定數目的扇區(qū)為單位進行劃分,這樣的單位成為"簇"。通常情況下,每扇區(qū)512 字節(jié)的原則是不變的,簇的大小一般是2n(n 為整數)個扇區(qū)的大小。所以以簇為單位而不以扇區(qū)為單位進行磁盤的分配,是因為當區(qū)分容量較大時,采用512 字節(jié)的扇區(qū)管

36、理,會增加FAT 表的項數和大文件存取的消耗,使文件系統效率不高。 引導扇區(qū)DBR(DOS Boot Record)通常占用分區(qū)的第0 扇區(qū),共512 字節(jié),FAT 表緊隨其后。DBR 的第一部分是一個x86 跳轉指令、廠商標志和操作系統版本號,接下來的從偏移0x0B 開始的是一段描述能夠使可執(zhí)行引導代碼找到相關參數的消息,通常稱之為BPB。最后是引導程序代碼以及扇區(qū)結束標志。BPB 中記錄了扇區(qū)大小、簇的扇區(qū)數、保留扇區(qū)數、FAT 表大小和文件系統類型等重要參數,用于文件的索引和定位計算。7.4 軟件系統模塊 USB 讀寫器軟件由主模塊、USB 模塊、BULK 模塊、FAT 模塊和中斷處理模

37、塊組成。各模塊之間相互協調調用,共同完成對U 盤文件的讀寫創(chuàng)建。 USB 模塊負責檢測USB 設備的移入/移出,對插入的設備進行枚舉,分配設備地址端點號,配置設備接口端點描述符,建立BULK_ONLY 輸入/輸出通道,BULK 模塊則在已建立的BULK_ONLY 輸入/輸出通道發(fā)送CBW 數據包,并接收CSW 數據包,通過CBW 中嵌入的CBWCB 信息確定對U 盤讀/寫操作的扇區(qū)位置和大小,FAT 模塊主要完成簇和扇區(qū)間的索引定位,即在U 盤內尋址,利用BPB 中的參數計算給定扇區(qū)的所在簇以及進入休眠狀態(tài),等待外部中斷喚醒。 中斷處理模塊是在中斷喚醒后根據中斷類型進入不同功能子模塊的,也是整

38、個軟件系統的核心部分。中斷模塊接收到串口或并口數據后,根據內部命令字要求進行解析。 串口或并口數據接收流程如圖所示。 圖12 UFI結構 圖13 命令與數據字結構七,總結 此次科研立項是我們從大學生活重要的一步。從最初的選題,開題到查資料、設計電路,編寫程序直到完成設計。其間,查找資料,老師指導,與同學交流,反復修改電路和程序,每一個過程都是對自己能力的一次檢驗和充實。 通過這次實踐,我了解了單片機讀寫U 盤的用途及工作原理,熟悉了單片機讀寫U 盤的設計步驟,鍛煉了工程設計實踐能力,培養(yǎng)了自己獨立設計能力。此次科研立項是對我專業(yè)知識和專業(yè)基礎知識一次實際檢驗和鞏固,同時也是我為未來的單片機和嵌

39、入式開發(fā)與應用的的一次熱身。 通過這次科研立項收獲很多,比如學會了查找相關資料相關標準,分析數據,提高了自己的電路設計和程序設計的能力,懂得了許多經驗公式的獲得是前人不懈努力的結果。同時,仍有很多課題需要后來人去努力去完善。 但是這次科研立項也暴露出自己專業(yè)基礎的很多不足之處。比如缺乏綜合應用專業(yè)知識的能力,對集成芯片的不了解等等。這次科研立項是對自己到現在為止大學所學的一次大檢閱,使我明白自己知識還很淺薄,雖然大學生活已經過了一大半,但是自己的求學之路還很長,以后更應該在有限的大學生活學習中,努力的學習好專業(yè)文化知識和動手能力,同時也要提高自己各方面的綜合素質,努力使自己成為一個對社會有所貢

40、獻的人。參考文獻:【1】基于單片機的智能系統設計與實現 沈紅衛(wèi)著,電子工業(yè)出版社【2】單片機技術應用朱運利著,機械工業(yè)出版社【3】MCS-51 單片機開發(fā)與應用指南孫永浩著 黑龍江科學技術出版社【4】EZ-USB FX2單片機原理,編程及應用錢峰著,北京航空航天大學出版社【5】CH375中文技術手冊【6】串口版U盤讀寫模塊中文技術手冊附錄:以下程序可以演示單片機以字節(jié)的方式讀寫U盤,該程序實現的功能是:打開U盤中的一個文件EXAMBYTE.TXT,再新建一個文件NEWFILE.TXT,在NEWFILE.TXT文件中寫入“Note:這個程序是以字節(jié)為單位進行U盤文件讀寫的示例程序,首先從原文件中

41、讀出前20個字符,然后寫到本說明的后面:”然后從文件EXAMBYTE.TXT中讀取前20字節(jié)的數據,寫入文件NEWFILE.TXT中。即可實現單片機以字節(jié)對U盤讀和寫的功能。#include <reg51.h>#include <absacc.h>#include <string.h>#include <stdio.h>#define MAX_PATH_LEN32#include <CH375HM.H>unsigned charTempLength;unsigned char idataTempBuffer20;CMD_PARAMid

42、atamCmdParam;sbitLED_OUT=P04;sbit p2_0=P20;voidmDelaymS( unsigned char delay )unsigned chari, j, c;for ( i = delay; i != 0; i - ) for ( j = 200; j != 0; j - ) c += 3; for ( j = 200; j != 0; j - ) c += 3; voidmSendByte( unsigned char c )/* 發(fā)送一個字節(jié)數據給CH375模塊 */TI = 0;SBUF = c;while ( TI = 0 );unsigned

43、charmRecvByte( )/* 從CH375模塊接收一個字節(jié)數據 */unsigned charc; while ( RI = 0 );c = SBUF; RI = 0;return( c );unsigned charExecCommand( unsigned char cmd, unsigned char len )/* 命令函數 */unsigned chari, j, status; mSendByte( SER_SYNC_CODE1 ); mSendByte( SER_SYNC_CODE2 ); mSendByte( cmd ); mSendByte( len ); RI =

44、0; if ( len ) while ( 1 ) status = mRecvByte(); if ( status = ERR_SUCCESS ) i = mRecvByte( ); LED_OUT = 0; if ( i ) j = 0; do j +; while ( - i ); break; else if ( status = USB_INT_DISK_READ | status = USB_INT_DISK_WRITE | status = USB_INT_DISK_RETRY ) break; else if ( status = ERR_DISK_DISCON | status = ERR_USB_CONNECT ) mDelaymS( 100 ); break; return( status );voidmStopIfError( unsigned char iError )/*錯誤檢測函數*/ unsign

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論