<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的USB主控器驅(qū)動(dòng)設(shè)計(jì)

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

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




          4.2 硬件初始化過(guò)程

          當(dāng)ISP1161x上電時(shí),主控驅(qū)動(dòng)程序(HCD)必須經(jīng)過(guò)下列的順序?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通過(guò)向寄存器HcScratch寫(xiě)一個(gè)值,接著從該寄存器讀出,與剛才寫(xiě)入的值進(jìn)行比較。如果寫(xiě)入的和讀出的值相等,HCD得出結(jié)論:主控制器存在,對(duì)HcCHipID寄存器的讀也被用來(lái)作為額外的條件來(lái)檢測(cè)該寄存器。

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

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

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



          一旦主控制器復(fù)位了,HCD必須通過(guò)設(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,使用片上過(guò)流檢測(cè),模擬輸入。

          4.2.4 配置中斷

          主控制器ISP1161x有2組中斷源,第一組包含USB事件產(chǎn)生的中斷,比如Startof 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)用于表示在沒(méi)有引發(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(根集線器)寄存器

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

          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)程序通過(guò)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è)備名稱(chēng);hci在此表示中斷設(shè)備號(hào)。

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

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

          (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 iisp1161(Philips)support iCONFIG_USB_ISP1161 $ CONFIG_USB

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

          編譯成功后把生成的映象文件用JTAG燒寫(xiě)器燒寫(xiě)到開(kāi)發(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)樾枨蟛煌?,所使用的協(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ì)有更廣泛更美好的前景。

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();