<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于s3c44b0和COS-II的嵌入式USB主機(SL811)設計與應用

基于s3c44b0和COS-II的嵌入式USB主機(SL811)設計與應用

作者: 時(shí)間:2016-10-22 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引 言

本文引用地址:http://dyxdggzs.com/article/201610/309306.htm

通常情況下,打印機、海量存儲等設備是由普通PC機來(lái)驅動(dòng)的,由于大量的測控、醫療等系統需要存儲、打印數據,因此開(kāi)發(fā)這類(lèi)設備的嵌入式驅動(dòng)是非常有實(shí)用價(jià)值的。目前,各種嵌入式設備基本上是通過(guò)軟盤(pán)存儲,并口打印的,而它們的存儲容量、數據傳輸速度已大大落后當前各類(lèi)嵌入式系統的需求。因此,開(kāi)發(fā)基于接口的嵌入式海量存儲設備和打印機驅動(dòng)已成當務(wù)之急。

(Universal Serial Bus)是最近幾年逐步在PC領(lǐng)域廣為應用的新型串行接口技術(shù),它通用性好、實(shí)時(shí)性強、傳輸方式多樣、成本低、易于擴展和使用,這些優(yōu)點(diǎn)使它受到許多硬件廠(chǎng)商的青睞,各種類(lèi)型的設備產(chǎn)品大量涌入市場(chǎng)。USB通訊必須是主機和外設通訊,每次通訊都是由主機發(fā)起,外設只是被動(dòng)地執行主機發(fā)過(guò)來(lái)的命令。而市場(chǎng)上所買(mǎi)到和使用的USB 移動(dòng)設備, 都是USB 的外設(device) , 如USB 的移動(dòng)硬盤(pán)、USB 接口的數碼相機、打印機等。這些設備通常只能通過(guò)PC 來(lái)進(jìn)行相互的文件和數據交換,沒(méi)有了PC 機, 這些設備就無(wú)法進(jìn)行數據交換。而實(shí)際上并非每個(gè)地方都擁有PC機或者適合使用PC機,因此業(yè)界和用戶(hù)需求USB 主機的嵌入式化。也就是開(kāi)發(fā)和設計嵌入式的USB 主機。

根據具體醫療儀器(酶標儀)的實(shí)際需要,我們在三星的ARM7處理器 S3C44B0X上移植了實(shí)時(shí)操作系統(RTOS)――micro;C/OS-II,并編寫(xiě)了基于USB主控制器芯片SL的底層驅動(dòng)。為了能將酶標儀所檢測的數據保存到外設(如U盤(pán)、移動(dòng)硬盤(pán))中,研究了對應的文件系統和UFI傳輸協(xié)議,實(shí)現了對FAT文件系統的海量存儲設備的讀寫(xiě)。同時(shí),為了打印霉標儀的檢測結果,研究了EPSON打印機的ESC/P打印語(yǔ)言,實(shí)現了EPSON C63系列、C65系列、ME1打印機基于USB通訊的嵌入式打印機驅動(dòng)。

2 嵌入式USB主機的硬件設計

酶標儀的硬件平臺核心為三星公司的S3C44B0X(主頻最高可達66MHz),它集成了ARM7TDMI核,LCD控制器,是一款適用于中端應用的微控制器。系統擴展包括:存儲器(8MB SRAM、2MB NOR Flash)、USB主從機(SLHS)和按鍵等硬件資源。其中USB部分硬件連接如圖1所示。


圖1:硬件連接圖

SLHS 是Cypress公司推出的一款嵌入式USB Host/S1ave芯片。支持USB1.1的全速和低速設備。提供USB主機的硬件接口及總線(xiàn)管理的物理機制。帶有在片的SIE和USB發(fā)送器以及在片的根集線(xiàn)器Hub。因此, 滿(mǎn)足了嵌入式USB 主機系統所需要的功能, 即由主機接口芯片來(lái)完成總線(xiàn)底層物理數據包的發(fā)送、接收, 并能檢測總線(xiàn)狀態(tài), 發(fā)出中斷請求。所以, 選擇SL811HS 作為本系統的USB接口芯片是合適的。

如圖2所示,ARM通過(guò)Cs3片選SL811HS來(lái)確定SL811HS的基地址。D0-D7為數據和地址的復用線(xiàn),并通過(guò)A0來(lái)區分,當A0為“0”的時(shí)候,D0-D7上傳輸的是偏移地址;反之,當A0為“1”的時(shí)候,D0-D7作為數據線(xiàn)用。

3 嵌入式USB主機的軟件設計

3.1 嵌入式USB主機的軟件總體框架

系統的軟件平臺核心為micro;C/OS-II,它是一個(gè)源碼公開(kāi)的、占先式多任務(wù)管理的實(shí)時(shí)操作系統內核,其性能完全可與許多商業(yè)產(chǎn)品競爭,已在相當多的系統中得到成功應用,是一個(gè)經(jīng)實(shí)踐證明穩定可靠的內核,且其核心代碼短小精悍,簡(jiǎn)單易學(xué)。

USB 主機為USB系統提供的功能有:(1) 檢測USB 外設的接入和移出;(2) 管理主機和外設之間進(jìn)行的USB 標準流量控制;(3) 枚舉外設; (4) 管理主機和外設之間的數據流; (5) 搜集系統狀態(tài)和性能的統計信息;(6) 主機與外設之間的電氣接口,包括供電。

USB協(xié)議規定了人機接口設備HID 類(lèi)、MassStorage 類(lèi)、音頻類(lèi)和打印類(lèi)等一系列的設備類(lèi)型, 用于支持不同的設備。根據實(shí)際需要,我們開(kāi)發(fā)了USB接口的海量存儲類(lèi)設備和基于ESC/P打印語(yǔ)言的EPSON打印機嵌入式驅動(dòng)程序。具體驅動(dòng)程序棧如圖2所示。該系統支持熱插拔,可以知道識別插上是哪種設備,并調用對應的驅動(dòng)。

圖2:USB驅動(dòng)程序棧

 
3.2 USB Mass Storage 類(lèi)協(xié)議框架的實(shí)現

USB Mass Storage 類(lèi)是USB 協(xié)議所定義的用來(lái)磁盤(pán)管理及大容量數據傳輸的。USB定義了兩種海量存儲傳輸協(xié)議,它們分別是Buck-only Transport 和Control/Bulk/Interrupt(CBI) Transport。由于目前市場(chǎng)上所出現的海量存儲設備基本上都采用前者傳輸協(xié)議,即讀寫(xiě)數據都是通過(guò)塊傳輸來(lái)實(shí)現通訊。在命令包CBW (Command Block Wrapper)中包含了標志信息,數據長(cháng)度以及UFI命令等信息。其中UFI命令含有格式化磁盤(pán)、讀磁盤(pán)、寫(xiě)磁盤(pán)和讀磁盤(pán)容量等一系列磁盤(pán)管理命令。

大部分移動(dòng)存儲設備都采用FAT文件系統來(lái)管理文件。整個(gè)文件系統通過(guò)Mass Storage 的UFI 命令與外設的磁盤(pán)建立聯(lián)系。FAT文件系統將海量存儲設備上的數據大致分成5個(gè)部分:MBR區(主引導區)、DBR區(系統引導區)、FAT區(文件分配表)、FDT區(文件目錄表)和DATA區(數據區)。當有USB接口的海量存儲設備插上后,系統讀取MBR區和DBR區來(lái)獲得每扇區字節數,每簇扇區數,FAT表個(gè)數等文件系統基本信息。獲取這些基本信息后從海量存儲設備讀取一個(gè)文件的流程如圖3示。因寫(xiě)文件和讀文件的流程沒(méi)有很大的差別,在此就不累述了。

圖3讀文件流程圖

3.3 基于ESC/ P打印控制語(yǔ)言的打印機驅動(dòng)設計

EPSON公司的打印機基本上都是基于ESC/ P打印控制語(yǔ)言的,不同系列的打印機的控制語(yǔ)言沒(méi)有太大的差別。因此,我們開(kāi)發(fā)的驅動(dòng)程序具有比較強的通用性,針對EPSON的C63系列打印機開(kāi)發(fā)的驅動(dòng)完全適用C65系列和ME1打印機。

各種型號打印機的編程手冊可以到EPSON的開(kāi)發(fā)網(wǎng)站上下載。編程手冊對各種控制命令作了詳細介紹,如初始化打印機(ESC @)、選擇圖形方式( ESC (C nL nH m )、設置單元大?。‥SC (U nL nH m )、打印光柵圖像命令(ESC . c v h m N1 Nh d1 #8943;dk)等。

EPSON打印機提供兩種打印方式,一種是用來(lái)打印文本文件,用該方式打印英文字母、阿拉伯數字、符合的時(shí)候向打印機發(fā)對應的控制命令后,只要直接發(fā)打印內容的ASCII碼即可。另一種方式是用來(lái)打印光柵圖形,當需要打印表格、圖片和漢字的時(shí)候時(shí)往往會(huì )用到這種方式。在此,列出幾個(gè)關(guān)鍵API函數并予已說(shuō)明:

print_image_init ( void ):因為打印機初始化后默認為打印文本模式,所以要打印光柵圖形必須進(jìn)行相關(guān)的初始化。

print_image_command(unsigned int horiz_position,unsigned int verti_position, unsigned char rows, unsigned int columns, char color):調用該函數之前必須事先至少調用過(guò)一次print_image_init(),它的功能是向打印機發(fā)打印圖片命令。其中,第一和第二個(gè)輸入參數是打印圖形的橫縱坐標,第三和第四個(gè)輸入參數分別是打印圖形的行數和列數(特別值得注意的是,C63系列和C65系列打印機一次最多可打16行,而 EPSON M1一次只能打15行),第五個(gè)輸入參數color是選擇打印顏色。在調用該函數后,直接向打印機發(fā)打印的數據就可以實(shí)現打印圖片功能了。迎訪(fǎng)問(wèn)無(wú)由電子開(kāi)發(fā)網(wǎng)(技術(shù)文章 在線(xiàn)閱讀 在線(xiàn)商城

由于打印文本模式和打印圖形的操作基本相同,而且更簡(jiǎn)單,在此就不作說(shuō)明。

3.4 USB協(xié)議的實(shí)現

這是整個(gè)USB 體系軟件的根基, 它負責主機和設備之間數據傳輸。其代碼都包含在文件sl811host.c中,可供上層驅動(dòng)調用的API函數主要有:

EnumUsbDev ():該函數主要實(shí)現枚舉設備的功能。當有USB設備插上時(shí),系統通過(guò)調用到該函數得到設備的標準描述符(接口、配置、端點(diǎn))并識別是海量存儲設備還是打印機。設置地址(SetAdress),設置配置描述符(SetDecriptor),設置配置值(SetConfiguration),設置接口(SetInterface)也在該函數里實(shí)現。

BuckSend():該函數主要實(shí)現主機上的數據通過(guò)塊傳輸方式發(fā)送到設備上;

BuckReceive():塊傳輸接受函數;

BuckSend()和BuckReceive()兩個(gè)函數是最調度最平凡的兩個(gè)函數,因為對海量存儲設備的讀寫(xiě),對打印機發(fā)送控制命令、打印數據都是通過(guò)塊傳輸通訊的,也就是通過(guò)調用這兩個(gè)函數來(lái)實(shí)現的。

處理器讀寫(xiě)SL811HS單個(gè)寄存器或數據存儲器的函數如下:

void SL811Write(char a, char d){ SL811_ADDR = a;   SL811_DATA = d;}

char SL811Read(char a) { SL811_ADDR = a;    return (SL811_DATA); }

這兩個(gè)函數是ARM處理器和SL811芯片進(jìn)行數據交互的基石,所有控制寄存器和數據存儲器的讀寫(xiě)都可以通過(guò)以上兩個(gè)函數來(lái)實(shí)現。當需要連續讀寫(xiě)SL811中的儲存器時(shí)可以采用以下方式來(lái)實(shí)現,可以加快讀寫(xiě)速度。

void SL811BufWrite(BYTE addr, BYTE *s, BYTE c)

{SL811H_ADDR = addr;   

   while (c--)

       SL811H_DATA = *s ;}

4 結 論

在基于實(shí)時(shí)內核micro;C/OS-II和32位RISC架構ARM7 Core的系統板上,我們實(shí)現了嵌入式USB主機設計和開(kāi)發(fā),為酶標儀這一特定醫療設備提供了讀寫(xiě)海量存儲設備和打印的功能。經(jīng)測試,本系統讀海量存儲設備數據的速度可達750kB/s,寫(xiě)數據的速度最高可達450kB/s;打印功能也完全滿(mǎn)足系統要求,性能穩定可靠,使用方便,是一種可行、實(shí)用的方案。



關(guān)鍵詞: s3c44b0 COS-II 811 USB

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>