摘要:本文介紹了一種基于TTL串口的嵌入式USB 主機系統。介紹了該系統的硬件實現,以及USB 主機的底層驅動軟件的實現,并簡要介紹其在數據采集系統領域中的應用。
關鍵字:嵌入式 USB主機 TTL串口 Mass storage類
1 引言
隨著移動存儲業的發展及數碼產品的普及,數據采集系統、工控行業和嵌入式用戶對移動存儲的需求越來越大,也對數據移動存儲盤提出了更高的應用要求,包括到地礦數據采集行業用戶、水文系統數據采集行業用戶、儀器儀表制造行業用戶、鐵路、長途汽運等交通系統數據采集用戶、油田數據采集系統用戶、單板系統的軟件升級用戶、紡織系統數據采集用戶、銀行等。但由于之前多數數據采集設備、工控機及嵌入式系統不具備USB數據輸入輸出標準接口,所以在USB數據存儲方面一直得不到很好的普及。業界和用戶的需求使得嵌入式USB主機的研究成為USB研究領域的一個新的方向。
本文介紹了一種基于TTL串口的USB主機系統,通過TTL串口(或并口)轉接出USB接口,系統原理圖如圖1所示。嵌入式設備需要通過TTL串口,按照USB主機系統的串口通信協議與USB主機系統進行數據傳輸和通信,主機系統負責優盤的檢測和數據的存儲。本文詳細介紹了該系統的設計思路,并給出了硬件設計和USB 主機的底層驅動軟件的設計方法。
2 USB主機工作原理
對于我們設計嵌入式USB主機,可以參照PC上的USB主機。對于PC上的USB主機,其硬件方面由一個USB主機接口芯片控制,這個接口芯片在通過PCI總線與PC機通訊,其余還有電源管理部分;軟件方面主要有三部分:USB接口驅動程序,負責CPU與USB主機接口芯片的通訊,負責底層USB包的接收和發送;USB協議棧驅動程序,負責解析設備驅動程序對USB的各種操作命令,并在解碼后發給底層驅動程序;設備驅動程序,也就是上層的應用程序,包括操作系統提供給用戶的API,以及用戶自定義的對USB設備的操作,比如發送設備特有的USB命令請求。PC上的USB主機端軟件結構圖如圖2所示。
3.系統結構
整個系統的核心芯片選用Motorola公司的DSP56f803和TDI公司的USB HOST控制器UHC124。整個系統由DSP56f803模塊、UHC124模塊、UART串口模塊。
3.1 DSP56f803模塊
系統的核心控制器,包括基本硬件和編寫的固件。實現的功能包括:實現與UHC124的物理連接和通訊,并且配置UHC124的控制寄存器;配置USB外設,實現USB通信,實現USB Host要求的各項配置和數據傳輸的要求,接受USB Host的命令來管理USB外設;實現FAT16文件系統。
3.2 UHC124模塊
USB HOST控制器的硬件部分。實現USB Host的接口,配置下行USB設備,管理USB總線電源。實現的功能包括:實現各種USB Host動作,協調內容各項功能,與外圍主控制器通訊;存放傳輸的USB數據,設置USB傳輸特性;與作為主控制器的DSP56f803接口連接;管理USB電源,連接下行USB設備,總共帶有4個下行USB設備端口。
3.3 UART串口模塊
與用戶通過串口進行協議通訊的固件部分。實現自定義的串口通訊協議,即根據自定義的串口通訊協議,解析串口通訊數據包,調用相應的文件操作接口函數,實現客戶的文件操作命令。
4.硬件設計
4.1硬件架構
硬件主要模塊包括USB HOST、主控芯片、外部SRAM、譯碼指示和電源部分。主控芯片和USB HOST芯片連接,控制USB HOST芯片與移動存儲盤通訊??紤]到需要給用戶預留數據Buffer,所以外擴SRAM。因為芯片工作電源不同,所以要提供兩組直流電源,譯碼指示電路采用3個LED指示燈,一個電源指示,一個指示移動存儲盤的接入,另一個指示了工控機與移動存儲盤通訊工作中。
4.2 USB主控芯片的選型
對于主控芯片的選型應該會有多種選擇,只要帶有UART接口,程序存儲空間足夠,程序的執行效率可以滿足系統的功能需求即可。對于USB主控芯片,目前市面上出現的主要有3種:Sypress公司的SL811、Philips公司的ISP1161和TDI公司的UHC124。其中,SL811較為常見,筆者也曾用過此芯片進行過第一代產品的開發,綜合各方面的選型因素考慮,第二代產品選用了UHC124。
UHC124與其他兩款芯片的主優勢在于:支持包傳送,最多可一次性傳送16個USB 協議交互數據,而不會向CPU產生中斷,而SL811是每次都會產生中斷,大大占用了CPU的資源;支持所有的USB傳輸類型,包括控制傳輸、塊傳輸、中斷傳輸和同步傳輸,且數據包最大可達到1023字節;具有2K的數據存儲區。
4.3主控芯片與USB HOST相連的接口電路
UHC124支持兩種存儲器訪問模式,取決于MODE引腳的電平高低。如果主控芯片沒有外部總線,需采用模式0;如果主控芯片有獨立或復用的數據地址總線,采用模式1。本方案所選的主控芯片DSP56f803具有獨立的地址數據總線,因此采用UHC124的工作模式1。接口電路如下圖4所示:
5. 軟件設計
USB主機軟件的設計我們可以參照PC的USB 主機來設計。本方案的簡要軟件流程圖如圖5所示。
5.1 USB接口驅動程序
主要實現主控芯片DSP56f803與USB主機接口芯片UHC124的通訊,以及底層USB包的接收和發送,是實現整個USB體系的基礎。包括如下幾個函數:
void ReadLengthFromHost(UCHAR ucaddr,UCHAR uclength,UCHAR *pucdata);
void WriteLengthToHost(UCHAR *pucdata,UCHAR uclength,UCHAR ucaddr);
UCHAR OutBulkData(ULONG ullength,UCHAR *pucptr);
UCHAR InBulkData(ULONG ullength,UCHAR *pucptr);
5.2 USB協議棧驅動程序
主要實現USB協議定義的標準命令請求,主要包括:
ClearFeature(),GetConfiguration(),GetDescriptor(),GetInmterface(),GetStatus(),SetAddress(),SetConfiguration(),SetDescriptor(),SetFeature(),SetInterface()。
具體的標準設備請求的含義請參考USB標準協議。USB主機要在檢測到有USB設備插入時,完成對USB設備的枚舉,之后USB主機和USB設備才可以進入正常的數據包通訊狀態。
5.3 USB設備類驅動程序
移動存儲盤屬于USB協議所定義的設備類中的Mass Storage類,USB組織定義了海量存儲設備類(Mass Storage Class)的規范,這個類規范包括四個獨立的子類規范,即:1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport 2. USBMass Storage Class Bulk-Only Transport 3. USB MassStorage Class ATA Command Block 4.USB Mass Storage Class UFI Command Specification。前兩個子規范定義了數據/命令/狀態在USB 上的傳輸方法。Bulk- Only 傳輸規范僅僅使用Bulk 端點傳送數據/命令/狀態,CBI 傳輸規范則使用Control/Bulk/Interrupt三種類型的端點進行數據/命令/狀態傳送。后兩個子規范則定義了存儲介質的操作命令。ATA命令規范用于硬盤,UFI 命令規范是針對USB移動存儲。因此USB主機需要遵循Mass Storage協議來組織數據和發送命令,即可實現與移動存儲盤交換數據。
6.結束語
嵌入式USB主機的開發,目前在國外也處于剛剛起步的階段,可以提供的USB HOST接口芯片的并不多。作為USB總線研究的另一熱點,嵌入式USBHOST的研究具有一定的先進性和前瞻性。以嵌入式USB主機為核心的數據采集系統,可以在工業和民用兩個領域得到廣泛的應用,可以帶來可觀的經濟效益和市場前景。