色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于ISP1161A1芯片的USB主控器驅動設計

電子工程師 ? 來源:網絡整理 ? 2018-04-06 03:06 ? 次閱讀

在現代社會,嵌入式系統逐漸深入到人們生活的方方面面,各類嵌入式系統產品之間往往通過某種接口進行交互或數據傳遞。而現在,USB已經成為嵌入式數據交換的最主要的方式,可是各種USB接口的設備都是基于PC機系統的,所以,基于嵌入式系統的USB接口的研究具有實用的價值和意義,特別是起Master作用的HOST端接口的研究。解決這一問題的根本辦法就是在需要使用USB設備的嵌入式系統中擴展USB Host功能模塊,使之具有與USB設備進行數據傳輸的能力。

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

2 USB HOST技術簡介

USB的通信可以用圖1表示,圖1中,左半部分為USB主機端,可以看出,USB主機端由2部分構成,即軟件體和硬件體,實際上是3個軟件組件組成了USB HOST解決方案,即USB客戶驅動程序,USB驅動程序和USB主機控制器驅動程序,應用程序的事務處理是由USB客戶驅動程序(設備驅動程序)啟動的,客戶驅動程序把USB設備當做一個可以被訪問的端點集合,他可以被控制并與他的功能單元進行通信,USB系統軟件包括USB驅動程序和USB主控制器驅動程序,USB驅動程序負責配置管理、用戶管理、總線管理和數據傳輸,USB主控制器驅動程序負責調度管理,隊列管理和控制器管理,以及數據的位編碼、封包、循環校驗、發送、錯誤處理等。

如圖2所示,USB HOST的軟件結構分為3大部分,即USB總線驅動(USBD),USB HOST控制器驅動(HCD)、客戶軟件、其中客戶軟件處理和設備有關的信息,USBD處理和硬件無關的協議,而HCD則處理與硬件相關的協議,USBD和HCD都包含了一系列管理各種狀態的寄存器

3 SP1161體系結構

要實現USB協議,必須要通過一系列寄存器來完成,這些寄存器要能實現USB軟件結構中的USBD和HCD,即要完成USB協議狀態的控制,還要有一定的緩沖區來存放進出的數據,ISP1161專門針對USB協議設計的特殊硬件結構可方便地實現USB HOST和USB SLAVE。ISP1161的硬件結構主要是3類不同的寄存器,用戶通過操作這3種寄存器來達到實現USB傳輸的目的,這3類寄存器是:

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

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

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

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

4 ISP1161x主控制器編程實現

設計ISP1161x主控制驅動程序主要涉及以下2個重要內容,下面詳細介紹:

4.1 讀/寫ATL和ITL緩沖區

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

4.2硬件初始化過程

當ISP1161x上電時,主控驅動程序(HCD)必須經過下列的順序對硬件進行初始化,以便主控制器進入可操作狀態。

檢測主控制器,軟件復位主控制器,配置HcHardwareConfiguration寄存器,配置中斷;配置HcControl寄存器,配置HcFmInterval寄存器,配置根集線寄存器,設置ITL和ATL緩沖區長度,安裝INT1中斷服務程序。

4.2.1 檢測主控制器

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

4.2.2 主控制器的軟件復位

軟件復位主控制器通常包括2個步驟:復位主控制器;設置主控制器為RESET狀態。

HCD通過設置在HcCommandStatus寄存器的HCR位來復位主控制器:

一旦主控制器復位了,HCD必須通過設置HcControl寄存器的HCFS字段為00B,以便使主控制器為RESET狀態。

4.2.3 配置HcHardwareConfiguration寄存器

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

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

4.2.4 配置中斷

主控制器ISP1161x有2組中斷源,第一組包含USB事件產生的中斷,比如Start of Frame,調度溢出和根集線器狀態改變,這些中斷的發生由HcInterruptEnable和HcInterruptDisable寄存器聯合控制,而每個中斷的狀態由HcInterruptStatus寄存器標識。

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

4.2.5 配置HcFmInterval寄存器

HcFmInterval寄存器的14位值[FrameInteral,FI]用于表示一幀之內所占用的比特時間(在2個連續的SOFs,15位的值[FSLargestDataPacket,PSMPS)用于表示在沒有引發調度溢出下可發送或接收全速最大包大小,FI,PSMPS的推薦值為0x2EDF和0x2778,所以將調用下列語句對該寄存器進行初始化:

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

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

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

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

4.2.7 設置ITL和ATL緩沖區的長度

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

4.2.8 設置INT1中斷的服務程序

如果在主控制器中發生一個或多個中斷,ISP1161x的INT1引腳將會通知微處理器,在本項目中,INT1的引腳直接接在arm的INT0引腳上,驅動程序通過Linux提供的函數request_irq向操作系統申請中斷號,并在此函數中向操作系統提供中斷處理函數。

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

irq為中斷號;hc_interrupt為中斷處理函數,0為中斷標記,"ISP116x"表示中斷設備名稱;hci在此表示中斷設備號。

5 在μClinux中編譯USB主控驅動

接下來就如何將驅動文件編譯到嵌入式操作系統做一個簡要說明。

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

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

obj-$(CONFIG_USB_ISP1161)+=hc_isp1161.o

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

Dep_tristat'isp1161(Philips)support'CONFIG_USB_ISP1161 $ CONFIG_USB

(4)編譯μClinux內核

編譯成功后把生成的映象文件用JTAG燒寫器燒寫到開發板的ROM中,啟動后進行驗證實現了對ISP1161A1的控制。

6 結語

ISP1161A1使得在嵌入式系統中實現USB HOST變得十分簡單方便,便于嵌入式系統中USB的普及。

一個USB HOST要完成的功能因為需求不同,所使用的協議也不盡相同,有的采用中斷傳輸,有的采用同步傳輸,USB主機技術在嵌入式系統的應用主要是針對某一種USB設備或集中設備,因而嵌入式系統上可以只固化某幾種協議,該技術的應用可以使得在嵌入式系統上輕松接入USB外設、擴展系統的功能、提高儀器的使用靈活性。USB主機技術在嵌入式系統上的應用會有更廣泛更美好的前景。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7979

    瀏覽量

    265605
  • Host
    +關注

    關注

    0

    文章

    32

    瀏覽量

    34653
收藏 人收藏

    評論

    相關推薦

    ISP1504A1,ISP1504C1 pdf datash

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

    USB設計原理圖 -(共4張電路圖)

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

    ISP1161 pdf,ISP1161 datasheet

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

    基于ISP1161USB HOST 技術應用

    主要介紹如何利用芯片ISP1161 在嵌入式系統中實現USB HOST 功能; 基于批量傳輸協議, 講述如何實現數據在USB 存儲設備上的存儲和讀寫。
    發表于 05-18 13:18 ?21次下載

    基于uCOS的ISP1161芯片的應用開發

    本文介紹了Philip 公司的USB 芯片ISP1161x(簡稱D13)及在uC/OS-II 環境下的使用方法,詳細說明了系統的固件的實現。
    發表于 09-14 16:48 ?22次下載

    基于Linux系統的USB HOST驅動程序設計與實現

    本文介紹了基于Linux 系統的USB 控制驅動設計的一般方法。首先介紹USB 控制驅動的總
    發表于 12-14 10:21 ?58次下載

    USB OTG收發ISP1301

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

    ISP1362 USB OTG 控制芯片及應用

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

    基于StrongARM嵌入式Linux系統下的USB通信實現

    該文首先介紹以Intel StrongARM處理ISP1161USB主控芯片為核心的,能實現USB通信的嵌入式硬件平臺并在簡要介紹Li
    發表于 04-18 10:46 ?5次下載

    AVR芯片ISP燒寫資料和USB編程下載progisp軟件免費下載

    本文檔的主要內容詳細介紹的是AVR芯片ISP燒寫資料和USB編程下載progisp軟件免費下載
    發表于 04-14 08:00 ?33次下載
    AVR<b class='flag-5'>芯片</b><b class='flag-5'>ISP</b>燒寫資料和<b class='flag-5'>USB</b>編程下載<b class='flag-5'>器</b>progisp軟件免費下載

    STC ISP 6.87版軟件和STC USB驅動安裝說明

    本文檔的主要內容詳細介紹的是STC ISP 6.87版軟件和STC USB驅動安裝說明。
    發表于 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'>驅動</b>安裝說明

    USB到UART驅動程序和STC-USB驅動程序及STC-ISP軟件免費下載

    本文檔的主要內容詳細介紹的是USB到UART驅動程序和STC-USB驅動程序及STC-ISP軟件和STC-
    發表于 11-16 08:00 ?38次下載
    <b class='flag-5'>USB</b>到UART<b class='flag-5'>驅動</b>程序和STC-<b class='flag-5'>USB</b><b class='flag-5'>驅動</b>程序及STC-<b class='flag-5'>ISP</b>軟件免費下載

    DC1161A-模式

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

    STC-USB驅動及燒錄軟件STC-ISP下載

    STC-USB驅動及燒錄軟件STC-ISP下載
    發表于 06-02 10:06 ?55次下載

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

    USB ISP1161/ISP1362/ISP1581/PIDUSBD12電路原理圖
    發表于 07-20 16:51 ?1次下載
    主站蜘蛛池模板: 国产麻豆AV伦 | 老司机午夜影院试看区 | 花蝴蝶在线直播观看 | 嫩草影院在线观看精品视频 | 99精彩免费观看 | 精品国产高清自在线看 | 男男校园园bl文全肉高h寝室 | 伦理 电影在线观看 | 射漂亮黑b丝女 | 鬼灭之刃花街篇免费樱花动漫 | 八妻子秋霞理在线播放 | 8X拨牐拨牐X8免费视频8 | 优菈的乳液狂飙天堂W98 | 亚欧乱亚欧乱色视频 | 色即是空之甜性涩爱 | JAPANRCEP老熟妇乱子伦视频 | 2021国产精品国产精华 | 看黄色片子 | 欧美多人群p刺激交换电影 欧美多毛的大隂道 | 久久国产乱子伦免费精品 | 91看片淫黄大片.在线天堂 | 手机在线免费看毛片 | 色多多污污在线观看网站 | 国产这里有精品 | 中文字幕精品在线视频 | 日韩做A爰片久久毛片A片毛茸茸 | 在线国产视频观看 | 被老总按在办公桌吸奶头 | 手机在线免费观看毛片 | 国产成人精品免费视频大全办公室 | 精品亚洲国产熟女福利自在线 | 久久精品国产只有精品 | 中文字幕高清在线观看 | 国产成人免费手机在线观看视频 | 欧美国产在线一区 | 116美女写真午夜电影z | 久久婷婷久久一区二区三区 | 嫩草影院久久国产精品 | 亚洲AV久久无码精品九号 | 在线免费视频a | 日本福利片午夜免费观着 |