衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ISP1161A1芯片的USB主控器驅(qū)動(dòng)設(shè)計(jì)

電子工程師 ? 來源:網(wǎng)絡(luò)整理 ? 2018-04-06 03:06 ? 次閱讀

在現(xiàn)代社會(huì),嵌入式系統(tǒng)逐漸深入到人們生活的方方面面,各類嵌入式系統(tǒng)產(chǎn)品之間往往通過某種接口進(jìn)行交互或數(shù)據(jù)傳遞。而現(xiàn)在,USB已經(jīng)成為嵌入式數(shù)據(jù)交換的最主要的方式,可是各種USB接口的設(shè)備都是基于PC機(jī)系統(tǒng)的,所以,基于嵌入式系統(tǒng)的USB接口的研究具有實(shí)用的價(jià)值和意義,特別是起Master作用的HOST端接口的研究。解決這一問題的根本辦法就是在需要使用USB設(shè)備的嵌入式系統(tǒng)中擴(kuò)展USB Host功能模塊,使之具有與USB設(shè)備進(jìn)行數(shù)據(jù)傳輸?shù)哪芰Α?/span>

USB協(xié)議按功能分為2部分,USB HOST(USB主協(xié)議)和USB SLAVE(USB從協(xié)議)分別應(yīng)用于USB HOST CONTROLLER(USB主控制器)和USB DEVICE(USB設(shè)備)。一般,USB HOST要比USB SLAVE復(fù)雜,對(duì)于廣大的非PC用戶來說,尤其是嵌入式系統(tǒng)用戶來說,由于USB協(xié)議的不對(duì)稱性,使得實(shí)現(xiàn)USB HOST比USB SLAVE要困難地多,Philips公司的ISP1161A1芯片很好地解決了這種問題,他封裝了復(fù)雜的USB協(xié)議,使得在嵌入式系統(tǒng)中實(shí)現(xiàn)USB HOST和USB SLAVE變得簡(jiǎn)單方便。

2 USB HOST技術(shù)簡(jiǎn)介

USB的通信可以用圖1表示,圖1中,左半部分為USB主機(jī)端,可以看出,USB主機(jī)端由2部分構(gòu)成,即軟件體和硬件體,實(shí)際上是3個(gè)軟件組件組成了USB HOST解決方案,即USB客戶驅(qū)動(dòng)程序,USB驅(qū)動(dòng)程序和USB主機(jī)控制器驅(qū)動(dòng)程序,應(yīng)用程序的事務(wù)處理是由USB客戶驅(qū)動(dòng)程序(設(shè)備驅(qū)動(dòng)程序)啟動(dòng)的,客戶驅(qū)動(dòng)程序把USB設(shè)備當(dāng)做一個(gè)可以被訪問的端點(diǎn)集合,他可以被控制并與他的功能單元進(jìn)行通信,USB系統(tǒng)軟件包括USB驅(qū)動(dòng)程序和USB主控制器驅(qū)動(dòng)程序,USB驅(qū)動(dòng)程序負(fù)責(zé)配置管理、用戶管理、總線管理和數(shù)據(jù)傳輸,USB主控制器驅(qū)動(dòng)程序負(fù)責(zé)調(diào)度管理,隊(duì)列管理和控制器管理,以及數(shù)據(jù)的位編碼、封包、循環(huán)校驗(yàn)、發(fā)送、錯(cuò)誤處理等。

如圖2所示,USB HOST的軟件結(jié)構(gòu)分為3大部分,即USB總線驅(qū)動(dòng)(USBD),USB HOST控制器驅(qū)動(dòng)(HCD)、客戶軟件、其中客戶軟件處理和設(shè)備有關(guān)的信息,USBD處理和硬件無(wú)關(guān)的協(xié)議,而HCD則處理與硬件相關(guān)的協(xié)議,USBD和HCD都包含了一系列管理各種狀態(tài)的寄存器

3 SP1161體系結(jié)構(gòu)

要實(shí)現(xiàn)USB協(xié)議,必須要通過一系列寄存器來完成,這些寄存器要能實(shí)現(xiàn)USB軟件結(jié)構(gòu)中的USBD和HCD,即要完成USB協(xié)議狀態(tài)的控制,還要有一定的緩沖區(qū)來存放進(jìn)出的數(shù)據(jù),ISP1161專門針對(duì)USB協(xié)議設(shè)計(jì)的特殊硬件結(jié)構(gòu)可方便地實(shí)現(xiàn)USB HOST和USB SLAVE。ISP1161的硬件結(jié)構(gòu)主要是3類不同的寄存器,用戶通過操作這3種寄存器來達(dá)到實(shí)現(xiàn)USB傳輸?shù)哪康模@3類寄存器是:

(1)HC control and status registers:USB主控制器控制和狀態(tài)寄存器,主要用于傳輸過程中控制命令的存放和狀態(tài)的讀取,可讀可寫的寄存器有2個(gè)地址,只讀或只寫的寄存器只有1個(gè)地址。

(2)Isochronous Transfer List (ITL):同步傳輸列表緩沖區(qū)。

(3)Acknowledged Transfer List(ATL):接收傳輸列表緩沖區(qū)。

根據(jù)USB協(xié)議,數(shù)據(jù)傳輸分為4種模式,Control(控制),Bulk(整批),Interrupt(中斷)和Isochronous(同步)。其中ITL是為了實(shí)現(xiàn)同步傳輸,ATL則實(shí)現(xiàn)其他3種模式的傳輸。

4 ISP1161x主控制器編程實(shí)現(xiàn)

設(shè)計(jì)ISP1161x主控制驅(qū)動(dòng)程序主要涉及以下2個(gè)重要內(nèi)容,下面詳細(xì)介紹:

4.1 讀/寫ATL和ITL緩沖區(qū)

ATL和ITL緩沖區(qū)的位于ISP1161x內(nèi)部的FIFO緩沖RAM之中,每個(gè)緩沖區(qū)包含許多PTD(Philips Transfer Descriptor),而PTD用于主控制器硬件發(fā)送或接收USB包從USB設(shè)備,作為調(diào)度USB傳輸?shù)囊徊糠郑琀CD在系統(tǒng)內(nèi)存中購(gòu)建PTD。然后HCD將購(gòu)建好的PTD移入ATL或者ITL緩沖區(qū),主控制器硬件允許軟件去訪問每一個(gè)緩沖區(qū),就像他們是分離的硬件緩沖區(qū),HCD訪問ATL緩沖區(qū)通過硬件寄存器HcTransferCounter(22H/A2H)和HcATLBufferPort(41H/C1H),而ITL緩沖區(qū)則由HcTransferCounter和HcITLBufferPort(40H/C0H)訪問。下面一段示例代碼取自于本項(xiàng)目,其功能是向ATL緩沖區(qū)寫數(shù)據(jù),hci→hp→atl_len表示,ATL則在內(nèi)存中還沒有發(fā)送的數(shù)據(jù)的度,hci→hp→tl表示緩沖區(qū)的地址。

4.2硬件初始化過程

當(dāng)ISP1161x上電時(shí),主控驅(qū)動(dòng)程序(HCD)必須經(jīng)過下列的順序?qū)τ布M(jìn)行初始化,以便主控制器進(jìn)入可操作狀態(tài)。

檢測(cè)主控制器,軟件復(fù)位主控制器,配置HcHardwareConfiguration寄存器,配置中斷;配置HcControl寄存器,配置HcFmInterval寄存器,配置根集線寄存器,設(shè)置ITL和ATL緩沖區(qū)長(zhǎng)度,安裝INT1中斷服務(wù)程序。

4.2.1 檢測(cè)主控制器

檢測(cè)的工作由HCD完成的,HCD通過向寄存器HcScratch寫一個(gè)值,接著從該寄存器讀出,與剛才寫入的值進(jìn)行比較。如果寫入的和讀出的值相等,HCD得出結(jié)論:主控制器存在,對(duì)HcCHipID寄存器的讀也被用來作為額外的條件來檢測(cè)該寄存器。

4.2.2 主控制器的軟件復(fù)位

軟件復(fù)位主控制器通常包括2個(gè)步驟:復(fù)位主控制器;設(shè)置主控制器為RESET狀態(tài)。

HCD通過設(shè)置在HcCommandStatus寄存器的HCR位來復(fù)位主控制器:

一旦主控制器復(fù)位了,HCD必須通過設(shè)置HcControl寄存器的HCFS字段為00B,以便使主控制器為RESET狀態(tài)。

4.2.3 配置HcHardwareConfiguration寄存器

WRITE_REG16(hci,InterruptPinEnable|InterruptPin Trigger InterruptOutputPolarity |DataBusWidth16|AnalogOCEnable,HcHardwareConfiguration);

上述這段代碼表示將主控制器初始化為INT1允許,中斷是邊沿觸發(fā),中斷的輸出極性為高電平,數(shù)據(jù)線的寬度為16b,使用片上過流檢測(cè),模擬輸入。

4.2.4 配置中斷

主控制器ISP1161x有2組中斷源,第一組包含USB事件產(chǎn)生的中斷,比如Start of Frame,調(diào)度溢出和根集線器狀態(tài)改變,這些中斷的發(fā)生由HcInterruptEnable和HcInterruptDisable寄存器聯(lián)合控制,而每個(gè)中斷的狀態(tài)由HcInterruptStatus寄存器標(biāo)識(shí)。

第二組是主控制器中狀態(tài)變化所引起的中斷,比如,主控制器延遲所產(chǎn)生的中斷,同樣,在第一組中斷中的任何組合是第二組中斷的中斷源。

4.2.5 配置HcFmInterval寄存器

HcFmInterval寄存器的14位值[FrameInteral,F(xiàn)I]用于表示一幀之內(nèi)所占用的比特時(shí)間(在2個(gè)連續(xù)的SOFs,15位的值[FSLargestDataPacket,PSMPS)用于表示在沒有引發(fā)調(diào)度溢出下可發(fā)送或接收全速最大包大小,F(xiàn)I,PSMPS的推薦值為0x2EDF和0x2778,所以將調(diào)用下列語(yǔ)句對(duì)該寄存器進(jìn)行初始化:

WRITE_REG32(hci,0x2EDF|(0x2778<<16),HcFmInterval);

4.2.6 配置Root Hub(根集線器)寄存器

隨著初始化的深入,下面的專門針對(duì)根集線器3個(gè)寄存器也必須初始化:HcRhDescriptorA,HcRhDescriptorB和HcRhStatus,前2個(gè)寄存器是根據(jù)電路板的制作自動(dòng)由ISP1161x配置的,這2個(gè)寄存器均用來描述根集線器的特性。

HcRhStatus被劃分為2個(gè)部分,低字部分表示集線器狀態(tài),而高字部分表示集線器狀態(tài)的改變,還有保留部分必須被初始化為邏輯0。

4.2.7 設(shè)置ITL和ATL緩沖區(qū)的長(zhǎng)度

主控制器ISP1161x內(nèi)部的FIFO緩沖區(qū)有4kb/s,而這4k將被ATL和ITL劃分為2部分,分由HcATLBufferLength和HcITLBufferLength寄存器表示,ITL緩沖區(qū)又進(jìn)一步被分為2個(gè)相同的ITO0和ITD01緩沖區(qū),ATL緩沖區(qū)必須存在,因?yàn)锳TL緩沖區(qū)用于控制,中斷和大批量傳輸,而ITL的存在與否是可選的。

4.2.8 設(shè)置INT1中斷的服務(wù)程序

如果在主控制器中發(fā)生一個(gè)或多個(gè)中斷,ISP1161x的INT1引腳將會(huì)通知微處理器,在本項(xiàng)目中,INT1的引腳直接接在arm的INT0引腳上,驅(qū)動(dòng)程序通過Linux提供的函數(shù)request_irq向操作系統(tǒng)申請(qǐng)中斷號(hào),并在此函數(shù)中向操作系統(tǒng)提供中斷處理函數(shù)。

request_irq(irq,hc_interrupt,0,"ISP116x",hci)

irq為中斷號(hào);hc_interrupt為中斷處理函數(shù),0為中斷標(biāo)記,"ISP116x"表示中斷設(shè)備名稱;hci在此表示中斷設(shè)備號(hào)。

5 在μClinux中編譯USB主控驅(qū)動(dòng)

接下來就如何將驅(qū)動(dòng)文件編譯到嵌入式操作系統(tǒng)做一個(gè)簡(jiǎn)要說明。

(1)將上述文件拷貝到drivers/USB/

(2)編輯Drivers/USB/Makefile文件,添加以下內(nèi)容:

obj-$(CONFIG_USB_ISP1161)+=hc_isp1161.o

(3)編輯driver/USB/config.in文件,添加如下內(nèi)容:

Dep_tristat'isp1161(Philips)support'CONFIG_USB_ISP1161 $ CONFIG_USB

(4)編譯μClinux內(nèi)核

編譯成功后把生成的映象文件用JTAG燒寫器燒寫到開發(fā)板的ROM中,啟動(dòng)后進(jìn)行驗(yàn)證實(shí)現(xiàn)了對(duì)ISP1161A1的控制。

6 結(jié)語(yǔ)

ISP1161A1使得在嵌入式系統(tǒng)中實(shí)現(xiàn)USB HOST變得十分簡(jiǎn)單方便,便于嵌入式系統(tǒng)中USB的普及。

一個(gè)USB HOST要完成的功能因?yàn)樾枨蟛煌褂玫膮f(xié)議也不盡相同,有的采用中斷傳輸,有的采用同步傳輸,USB主機(jī)技術(shù)在嵌入式系統(tǒng)的應(yīng)用主要是針對(duì)某一種USB設(shè)備或集中設(shè)備,因而嵌入式系統(tǒng)上可以只固化某幾種協(xié)議,該技術(shù)的應(yīng)用可以使得在嵌入式系統(tǒng)上輕松接入U(xiǎn)SB外設(shè)、擴(kuò)展系統(tǒng)的功能、提高儀器的使用靈活性。USB主機(jī)技術(shù)在嵌入式系統(tǒng)上的應(yīng)用會(huì)有更廣泛更美好的前景。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7980

    瀏覽量

    266097
  • Host
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    34676
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ISP1504A1,ISP1504C1 pdf datash

    ULPI Hi-Speed Universal Serial Bus On-The-Go transceiverThe ISP1504A1; ISP1504C1 (ISP1504x1) is
    發(fā)表于 12-20 12:13 ?16次下載

    USB設(shè)計(jì)原理圖 -(共4張電路圖)

    USB設(shè)計(jì)原理圖有:USB_ISP1362原理圖.USB_ISP1161原理圖.USB_ISP1581原理圖.USB_PIDUSBD12原理
    發(fā)表于 04-15 21:14 ?80次下載
    <b class='flag-5'>USB</b>設(shè)計(jì)原理圖 -(共4張電路圖)

    ISP1161 pdf,ISP1161 datasheet

    The ISP1161 is a single-chip Universal Serial Bus (USB) Host Controller (HC) andDevice Controller
    發(fā)表于 04-15 21:54 ?29次下載

    基于ISP1161USB HOST 技術(shù)應(yīng)用

    主要介紹如何利用芯片ISP1161 在嵌入式系統(tǒng)中實(shí)現(xiàn)USB HOST 功能; 基于批量傳輸協(xié)議, 講述如何實(shí)現(xiàn)數(shù)據(jù)在USB 存儲(chǔ)設(shè)備上的存儲(chǔ)和讀寫。
    發(fā)表于 05-18 13:18 ?21次下載

    基于uCOS的ISP1161芯片的應(yīng)用開發(fā)

    本文介紹了Philip 公司的USB 芯片ISP1161x(簡(jiǎn)稱D13)及在uC/OS-II 環(huán)境下的使用方法,詳細(xì)說明了系統(tǒng)的固件的實(shí)現(xiàn)。
    發(fā)表于 09-14 16:48 ?22次下載

    基于Linux系統(tǒng)的USB HOST驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)

    本文介紹了基于Linux 系統(tǒng)的USB 控制驅(qū)動(dòng)設(shè)計(jì)的一般方法。首先介紹USB 控制驅(qū)動(dòng)的總
    發(fā)表于 12-14 10:21 ?58次下載

    基于USB2.0的接口芯片ISP1581的應(yīng)用與設(shè)計(jì)

    摘要:在對(duì)USB接口的特點(diǎn)、芯片的分類和發(fā)展情況進(jìn)行簡(jiǎn)要分析的基礎(chǔ)上,重點(diǎn)介紹Philips公司的基于USB2.0的接口芯片ISP1581的
    發(fā)表于 05-30 10:00 ?49次下載

    USB OTG收發(fā)ISP1301

    ISP1301是通用串行總線USB OTG(On-The-Go)收發(fā),完全兼容通用串行總線規(guī)范Rev.2.0和OTG補(bǔ)充規(guī)范Rev.1.0aIS
    發(fā)表于 07-19 14:57 ?1683次閱讀

    ISP1362 USB OTG 控制芯片及應(yīng)用

    ISP1362 是飛利浦公司推出的OTG 解決方案系列中產(chǎn)品,它在單芯片上集成了一個(gè)OTG 控制、一個(gè)高級(jí)主控制器(PSHC)和一個(gè)基于飛利浦IS
    發(fā)表于 06-23 16:13 ?120次下載
    <b class='flag-5'>ISP</b>1362 <b class='flag-5'>USB</b> OTG 控制<b class='flag-5'>芯片</b>及應(yīng)用

    基于StrongARM嵌入式Linux系統(tǒng)下的USB通信實(shí)現(xiàn)

    該文首先介紹以Intel StrongARM處理ISP1161USB主控芯片為核心的,能實(shí)現(xiàn)USB通信的嵌入式硬件平臺(tái)并在簡(jiǎn)要介紹Li
    發(fā)表于 04-18 10:46 ?5次下載

    STC ISP 6.87版軟件和STC USB驅(qū)動(dòng)安裝說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是STC ISP 6.87版軟件和STC USB驅(qū)動(dòng)安裝說明。
    發(fā)表于 07-03 08:00 ?0次下載
    STC <b class='flag-5'>ISP</b> 6.87版軟件和STC <b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b>安裝說明

    USB到UART驅(qū)動(dòng)程序和STC-USB驅(qū)動(dòng)程序及STC-ISP軟件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是USB到UART驅(qū)動(dòng)程序和STC-USB驅(qū)動(dòng)程序及STC-ISP軟件和STC-
    發(fā)表于 11-16 08:00 ?38次下載
    <b class='flag-5'>USB</b>到UART<b class='flag-5'>驅(qū)動(dòng)</b>程序和STC-<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b>程序及STC-<b class='flag-5'>ISP</b>軟件免費(fèi)下載

    DC1161A-模式

    DC1161A-模式
    發(fā)表于 05-07 19:29 ?0次下載
    DC<b class='flag-5'>1161A</b>-模式

    STC-USB驅(qū)動(dòng)及燒錄軟件STC-ISP下載

    STC-USB驅(qū)動(dòng)及燒錄軟件STC-ISP下載
    發(fā)表于 06-02 10:06 ?55次下載

    USB ISP1161/ISP1362/ISP1581/PIDUSBD12電路原理圖

    USB ISP1161/ISP1362/ISP1581/PIDUSBD12電路原理圖
    發(fā)表于 07-20 16:51 ?1次下載
    利都百家乐国际赌场娱乐网规则| 聚宝盆百家乐游戏| 新乐市| 威尼斯人娱乐代理| 做生意房门挂啥招财| 百家乐官网视频游戏视频| 大发888娱乐城电脑版下载| 百家乐2珠路投注法| 张家港百家乐官网赌博| 澳门博彩8345cc| 跨国际百家乐的玩法技巧和规则 | 澳门赌场女| 全讯网即时线路| 网络百家乐游戏机怎么破解| 百家乐官网网上玩法| 百家乐官网投注规则| 天健棋牌大厅下载| 金三角百家乐的玩法技巧和规则 | 平利县| 大发888秘籍| 澳门百家乐鸿福厅| 百家乐官网龙虎台布价格| 破解百家乐游戏机| 好运来百家乐官网的玩法技巧和规则| 百家乐官网打印机分析| 利来娱乐网| 大发888官网e世博官方网站| 百家乐大西洋| 百家乐有电脑游戏吗| 女优百家乐官网的玩法技巧和规则 | 百家乐博彩桌出租| 番禺百家乐官网电器店| 真人百家乐官网平台下载| 狮威百家乐官网赌场娱乐网规则| 百家乐官网现金网开户平台| 晓游棋牌官方下载| 威尼斯人娱乐城 老品牌值得您信赖| 百家乐分析网| 百家乐最常见的路子| 三元玄空24山坐向| 新彩百家乐官网的玩法技巧和规则|