《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 51單片機控制SL811HS的USB主機底層驅動
51單片機控制SL811HS的USB主機底層驅動
摘要: 本設計實現(xiàn)了在51單片機系統(tǒng)中增加USB主機功能,采用普通51單片機外接專用USB接口芯片的方案。這種方案雖然會使系統(tǒng)傳輸速度受到限制,而且在穩(wěn)定性方面有所欠缺,但此方案設計靈活性高,且易于移植,為低成本產(chǎn)品的開發(fā)提供了廣闊前景。
Abstract:
Key words :

       引言

       基于USB接口的設備使用方便,性價比高,因此在人們的工作和生活中得到了廣泛的應用,如U盤、移動硬盤、移動光驅、USB攝像頭、USB鼠標鍵盤等。同時,51 系列單片機以其成熟的技術和高性價比吸引了大量國內(nèi)用戶,被廣泛應用于測控和自動化領域。因此,如果在51 單片機系統(tǒng)中增加USB 主機接口,實現(xiàn)對USB 從機設備的控制,則該單片機系統(tǒng)可充分利用現(xiàn)有的各種USB從機設備,大大擴展單片機系統(tǒng)的功能。

       本設計實現(xiàn)了在51單片機系統(tǒng)中增加USB主機功能,采用普通51單片機外接專用USB接口芯片的方案。這種方案雖然會使系統(tǒng)傳輸速度受到限制,而且在穩(wěn)定性方面有所欠缺,但此方案設計靈活性高,且易于移植,為低成本產(chǎn)品的開發(fā)提供了廣闊前景。設計中采用的51單片機是Atmel公司的AT89S52芯片,USB主機功能的擴展通過外接專用USB接口芯片SL811HS實現(xiàn)。CYPRESS公司的USB接口芯片SL811HS可以工作在主機或從機模式,支持USB1.1的全速和低速數(shù)據(jù)傳輸。工作在主機模式時,SL811HS可以自動檢測外設的插拔動作,可以按照外處理器(如單片機)的要求自動把數(shù)據(jù)整合為USB協(xié)議數(shù)據(jù)包進行數(shù)據(jù)傳輸。
 

系統(tǒng)硬件示意圖
圖 1 系統(tǒng)硬件示意圖

       本文將介紹單片機AT89S52控制SL811HS的硬件設計和底層驅動的編寫,其中重點講述底層驅動的設計。

       硬件設計

       系統(tǒng)的硬件原理圖如圖1所示。AT89S52的供電電壓為5V,SL811HS的為3.3V。盡管供電電壓不同,但根據(jù)芯片引腳的信號噪聲容限參數(shù)分析可知,AT89S52與SL811HS之間的引腳可以直接相連,不需要電平轉換或緩沖。
 

USB主機枚舉操作驅動的層次關系
表1 USB主機枚舉操作驅動的層次關系

       軟件設計

       USB主機驅動是一個高低層子程序的組合,實現(xiàn)USB傳輸和控制的過程是較高層子程序調(diào)用較低層子程序的過程。編寫USB主機驅動時,可接從低層往高層的順序逐層進行。

 



       以USB主機枚舉從機設備的操作為例,實現(xiàn)該功能所需要的各層子程序層次關系如表1所示。本文將介紹較低層的幾個子程序的實現(xiàn),包括讀寫SL811HS內(nèi)部寄存器、傳輸事務的實現(xiàn)、設備插拔檢測、復位等,其中,“傳輸事務的實現(xiàn)”是關鍵和難點,同時也是本文的重點。

       單片機讀寫SL811HS

       內(nèi)部寄存器

       讀寫SL811HS內(nèi)部寄存器子程序是最低層的子程序,系統(tǒng)所進行的各種操作主要都是通過調(diào)用這些子程序讀寫SL811HS內(nèi)部寄存器實現(xiàn)的。例如,通過讀取SL811HS的狀態(tài)寄存器獲取SL811HS的狀態(tài)信息可以實現(xiàn)設備插拔檢測、設備速度檢測等,通過向SL811HS的相關控制寄存器寫入控制字節(jié)可以實現(xiàn)USB總線復位以及USB數(shù)據(jù)傳輸?shù)炔僮鳌?br />
       SL811HS內(nèi)部寄存器

       從編程結構的角度來看,SL811HS內(nèi)部寄存器一共有256個單元,每個單元是一個字節(jié),其中地址為[00H]~[0FH]的前16個單元是SL811HS的狀態(tài)寄存器或控制寄存器(統(tǒng)稱為特殊寄存器),其余的是數(shù)據(jù)緩沖寄存器。表2列出了16個特殊寄存器的名稱和主要功能含義。
 

 

SL811HS內(nèi)部特殊寄存器簡介
表2 SL811HS內(nèi)部特殊寄存器簡介

       單片機讀寫SL811HS

       內(nèi)部寄存器的實現(xiàn)


       按照SL811HS的讀寫控制信號時序圖編寫單片機讀寫SL811HS內(nèi)部寄存器的子程序,使各控制引腳上按照規(guī)定的時序給出符合要求的信號脈沖。 在這個程序中,單片機指令周期的大小將直接影響輸出信號的保持時長和時序關系。
       初始化

       初始化操作主要包括SL811HS芯片復位、USB總線復位、設備插拔檢測和設備USB數(shù)據(jù)傳輸速度檢測等。通過這些初始化操作,SL811HS將作為USB主機與從機之間建立一個底層協(xié)議連接關系,為后續(xù)的數(shù)據(jù)通信做好準備。

       SL811HS芯片復位

       USB接口芯片SL811HS的復位是對芯片的狀態(tài)進行復位,包括了對芯片內(nèi)部寄存器值的復位。實現(xiàn)該操作不需要讀寫接口芯片內(nèi)部寄存器,只需向接口芯片的復位引腳輸入一個有效的復位脈沖即可。

       USB總線復位

       按照USB協(xié)議,USB總線復位是指在USB數(shù)據(jù)線上輸出SE

 

0態(tài),并保持10ms以上,接在USB總線上的從機設備收到這個復位信號后就會進行自身的復位操作,為接下來的USB數(shù)據(jù)傳輸做好準備。通過設置接口芯片的CtrlReg[05H]寄存器的第4、3位為邏輯”01”,并保持10ms,然后再把它們恢復為邏輯”00”,就可以讓接口芯片產(chǎn)生USB總線復位信號。

       設備拔插檢測和設備速度檢測

       在USB協(xié)議的物理層上,USB從機設備是否接在USB總線上是通過檢測總線的電壓得知的。根據(jù)該電壓的高低,還可獲知USB總線上的設備所支持的速度(例如,在USB1.1協(xié)議中,分有低速和全速)。 USB主機接口芯片SL811HS把這個物理層的電壓檢測結果反映到狀態(tài)寄存器的取值上,通過讀取這些狀態(tài)寄存器的值,可以獲知當前的設備插拔狀態(tài)和設備速度。

       USB主機所進行的初始化操作除了上述3項外,還包括幀起始包啟動/禁止的設置、幀同步設置、幀定時初值的設置等,它們都是通過對接口芯片特殊寄存器進行讀寫而實現(xiàn)的。

       傳輸事務的實現(xiàn)

       根據(jù)USB1.1協(xié)議,一個傳輸事務一般包含3個包(Packet)的傳輸,分別是標記包(Token Packet)、數(shù)據(jù)包(Data Packet)和握手包(Handshake Packet)。USB數(shù)據(jù)傳輸方式一共有四種,分別是控制傳輸(Control Transfer)、同步傳輸(Isochronous Transfer)、中斷傳輸(Interrupt Transfer)和批傳輸(Bulk Transfer)。其中,控制傳輸方式至少由2個傳輸事務構成,其它三種傳輸方式則都各由1個傳輸事務構成。可見,傳輸事務在USB傳輸中至關重要。

       一個典型的傳輸事務含有3個包的傳送,這連續(xù)的3個包數(shù)據(jù)流如表3所示。
 

 

一個傳輸事務的數(shù)據(jù)流示意
表3 一個傳輸事務的數(shù)據(jù)流示意

       使用SL811HS設計USB主機系統(tǒng)時,用戶只需讓單片機設置SL811HS內(nèi)部幾個相關的特殊寄存器,然后把傳輸事務啟動位使能(置為邏輯’1’),就可以讓接口芯片自動完成這個包的發(fā)送與接收。在表3所示的例子中,第n個包(標記包)和第n+2個包(握手包)都是由主機發(fā)送給從機的,第n+1個包(數(shù)據(jù)包)是由從機發(fā)送給主機的。這個傳送方向和第n+2個包的傳送方向都是由標記包中的標識域取值決定的,其規(guī)則可參考USB協(xié)議。

       如果傳輸事務的數(shù)據(jù)包是由從機發(fā)送給主機,則該傳輸事務屬于輸入類型,稱為輸入傳輸事務,反之則稱為輸出傳輸事務。可見,表3例子是一個輸入傳輸事務。對于一個輸入傳輸事務,單片機通過設置SL811HS內(nèi)部特殊寄存器就可以決定其取值的包域主要有:標記包中的標識域、地址域和端點域,數(shù)據(jù)包中的標識域。在輸入傳輸事務中,雖然數(shù)據(jù)包并不是由主機發(fā)送的,但之所以仍需要單片機設置與數(shù)據(jù)包標識域相關的寄存器,是因為主機在該傳輸事務中將只認可標識域符合所設置值的數(shù)據(jù)包。其余部分,如標記包中的其它域及握手包的內(nèi)容則都是SL811HS根據(jù)情況自動產(chǎn)生的。
       主機接口芯片SL811HS完成一次輸入傳輸事務后,如果傳輸成功,單片機就可以從SL811HS的數(shù)據(jù)緩沖寄存器讀到從機發(fā)送過來的數(shù)據(jù)。此處,數(shù)據(jù)緩沖區(qū)的首地址是由單片機預先通過設置控制寄存器指定的。

       對于輸出傳輸事務,單片機同樣需要設置相關的寄存器以確定標記包的標識域、地址域、端點域和數(shù)據(jù)包的標識域,以及存放發(fā)送數(shù)據(jù)的緩沖區(qū)首地址,并且,這個緩沖區(qū)中的數(shù)據(jù)也是由單片機寫入的。

       具體地,單片機控制USB主機接口芯片進行一次傳輸事務所需要執(zhí)行的操作步驟如下:
首先,如果是輸出傳輸事務,則需要把將在數(shù)據(jù)包中發(fā)送給從機的數(shù)據(jù)存放到SL811HS的數(shù)據(jù)緩沖區(qū)中。

       其次,做好相關的傳輸準備工作,即設置接口芯片中的4個特殊寄存器。這4個寄存器的名稱及其在傳輸事務中的作用如表4的前4項所列。
 

 

與傳輸事務直接相關的SL811HS特殊寄存器
表4 與傳輸事務

 

直接相關的SL811HS特殊寄存器

 

       第三,啟動傳輸事務:把寄存器EP0Control[00H]或EP1Control[08H]的第0位(即傳輸事務啟動位)置為邏輯’1’即可啟動傳輸事務。但在此之前必須把這個寄存器中其它位設置好(或與啟動位同時設置),與這個寄存器相關的包域如表4中最后一項所列。

       第四,單片機讀取寄存器EP0Status[03H]或EP1Status[0BH]的值,以獲知此次事務傳輸?shù)耐瓿汕闆r。

       最后,如果傳輸成功,而且該傳輸事務是輸入性質(zhì)的,則單片機可讀取數(shù)據(jù)緩沖區(qū),獲得由從機發(fā)送過來的數(shù)據(jù)。

       結語

       在51單片機控制USB接口芯片SL811HS的底層驅動中,讀寫SL811HS內(nèi)部寄存器的子程序是最低層的,各種USB傳輸?shù)妮^低層操作,如總線復位、插拔檢測、速度檢測以及傳輸事務等,都主要是通過讀寫SL811HS內(nèi)部特殊寄存器實現(xiàn)的。其中,傳輸事務的實現(xiàn)就直接涉及了5個特殊寄存器的讀寫。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区二区免费视频| 亚洲精美视频| 国产精品日韩精品| 欧美一区二区在线| 亚洲午夜视频| 这里只有精品丝袜| 99riav久久精品riav| 亚洲激情视频网站| 亚洲黄色三级| 亚洲国产第一页| 久久成人综合网| 久久99伊人| 亚洲高清不卡在线| 亚洲高清视频中文字幕| 久久国产福利国产秒拍| 欧美自拍丝袜亚洲| 久久精品人人做人人爽| 亚洲国产精品99久久久久久久久| 久久国产视频网| 亚洲国产精品久久人人爱蜜臀| 亚洲国产婷婷香蕉久久久久久| 亚洲国产精品成人| 亚洲精品社区| 亚洲深夜福利网站| 亚洲欧美在线网| 欧美专区一区二区三区| 久久久国产精品亚洲一区| 久久久久www| 欧美成人精品高清在线播放| 欧美高清在线播放| 欧美日韩国产成人精品| 欧美三级电影一区| 国产精品美女久久久久av超清| 国产欧美精品一区aⅴ影院| 国产九色精品成人porny| 国产一区91| 在线精品福利| 亚洲最新在线视频| 亚洲一区二区三| 久久精品欧美日韩| 日韩一二在线观看| 亚洲一区二区三区四区五区黄| 欧美影院一区| 蜜桃精品久久久久久久免费影院| 欧美国产一区视频在线观看| 国产精品chinese| 国语自产精品视频在线看抢先版结局| 一区视频在线看| 99热精品在线| 欧美在线观看一二区| 亚洲免费观看在线视频| 亚洲夜间福利| 久久综合99re88久久爱| 欧美日韩国内| 国产亚洲毛片在线| 亚洲日本欧美在线| 亚洲欧美国产精品桃花| 亚洲国内高清视频| 亚洲一区二区三区精品视频| 久久久精品午夜少妇| 欧美巨乳波霸| 国产一区二区日韩精品| 亚洲欧洲美洲综合色网| 亚洲一区自拍| 亚洲精品视频在线看| 午夜精品久久久久久99热| 久久这里只有| 欧美香蕉视频| 亚洲国产精品福利| 午夜国产精品视频| 日韩一级二级三级| 久久久久九九视频| 欧美激情无毛| 国产亚洲成av人片在线观看桃| 亚洲三级免费电影| 久久www成人_看片免费不卡| 亚洲一区二区精品在线| 久久综合久久综合久久综合| 国产精品观看| 亚洲国产婷婷综合在线精品| 欧美一区中文字幕| 亚洲综合色在线| 欧美黄色aaaa| 国产一区日韩二区欧美三区| 亚洲作爱视频| 亚洲精品乱码久久久久久日本蜜臀| 欧美一区三区三区高中清蜜桃| 欧美日韩国产精品专区| 在线观看欧美成人| 欧美一区二区三区视频| 亚洲欧美国产高清va在线播| 欧美日韩不卡合集视频| 在线 亚洲欧美在线综合一区| 亚洲欧美视频在线观看| 中国亚洲黄色| 欧美激情精品久久久久| 国模私拍一区二区三区| 亚洲亚洲精品在线观看 | 亚洲欧美国产不卡| 欧美经典一区二区三区| 黄网动漫久久久| 欧美在线播放视频| 久久国产高清| 国产精品亚洲美女av网站| 一区二区三区国产| 亚洲色图自拍| 欧美日韩免费观看一区二区三区| 亚洲黄色性网站| 亚洲狠狠丁香婷婷综合久久久| 久久久av毛片精品| 国产视频在线一区二区| 亚洲欧美日韩专区| 欧美一区二粉嫩精品国产一线天| 国产精品国产精品国产专区不蜜| 一区二区91| 亚洲女性裸体视频| 国产精品hd| 亚洲综合另类| 午夜精品成人在线| 国产九九精品| 欧美一级理论片| 久久久久久香蕉网| 国产一区二区三区最好精华液| 性欧美xxxx视频在线观看| 欧美在线网址| 国产真实乱偷精品视频免| 欧美在线网站| 欧美成人a∨高清免费观看| 亚洲国产黄色| 夜色激情一区二区| 欧美女主播在线| 99国产一区| 午夜精品婷婷| 国产在线播放一区二区三区 | 亚洲成人在线视频播放| 久久久久久**毛片大全| 在线精品国产欧美| 日韩视频在线一区| 欧美色图天堂网| 亚洲伊人第一页| 久久久伊人欧美| 亚洲电影av| 亚洲性视频网址| 国产三级精品在线不卡| 久久gogo国模裸体人体| 美女在线一区二区| 亚洲韩国一区二区三区| 中文av一区二区| 国产女主播视频一区二区| 久久国产一区二区三区| 欧美电影免费网站| 一区二区三区三区在线| 欧美在线免费一级片| 精品1区2区| 在线亚洲电影| 国产婷婷精品| 亚洲激情精品| 欧美午夜精品一区| 欧美一区2区视频在线观看 | 一区在线视频观看| 一区电影在线观看| 国产精品五月天| 91久久线看在观草草青青| 欧美日韩亚洲一区| 欧美一二三区精品| 欧美激情在线播放| 午夜精品久久| 欧美精品在线一区二区| 亚洲欧美激情视频| 男女精品网站| 亚洲无亚洲人成网站77777 | 欧美国产日韩二区| 亚洲影视中文字幕| 欧美成人a∨高清免费观看| 亚洲视频一区二区在线观看 | 久久婷婷国产麻豆91天堂| 91久久中文| 久久精品一区| 一本色道久久88精品综合| 久久久www| 在线一区视频| 欧美大片免费| 欧美一区二区三区喷汁尤物| 欧美日韩另类视频| 亚洲第一精品夜夜躁人人爽| 国产精品xnxxcom| 亚洲美女黄色片| 黑人极品videos精品欧美裸| 亚洲一级一区| 亚洲黄色一区| 久久嫩草精品久久久久| 一区电影在线观看| 欧美成年视频| 性欧美精品高清| 国产精品高清一区二区三区| 亚洲精品乱码久久久久久蜜桃91| 国产亚洲精品久| 亚洲宅男天堂在线观看无病毒| 亚洲大胆视频| 久久久久久久性|