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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于WinCE6.0的 LPC3250串口驅(qū)動程序開發(fā)

          基于WinCE6.0的 LPC3250串口驅(qū)動程序開發(fā)

          作者: 時間:2009-09-18 來源:網(wǎng)絡 收藏

          串口與‘550工業(yè)規(guī)范的串口有差異,為了保證程序的通用性和盡量減少代碼量,在實現(xiàn)程序時,需要繼承 CPdd16550和CReg16550類,根據(jù)實際的硬件特性實現(xiàn)它們的純虛函數(shù)并擴展其虛函數(shù)的功能,配置硬件相關的寄存器和修改相關代碼。首先實現(xiàn) CReg16550的繼承類CReg32xx,主要實現(xiàn)與物理底層操作的函數(shù)Write_xxx和Read_xxx,對串口寄存器進行讀寫操作。這里要注意的是LPC串口寄存器地址間隔是32位,而不是標準的8位;CPdd16550的繼承類Clpc32xxPdd16550UART本質(zhì)還是個抽象類,同時為標準串口和高速串口服務,要重新實現(xiàn)Init、GetDivisorO-{Rate、GetWaterMark、 MapHardware、CreateHardwareAc-cess、CreateSerialObject、DeleteSerialObject等函數(shù),其他的函數(shù)可以直接調(diào)用CPdd16550的成員函數(shù),只需要修改相關串口寄存器的宏定義。
          在Clpc32xxPdd16550UART的Init函數(shù)中,GetIsrInfo以串口的Active注冊表鍵為依據(jù)查出物理中斷號,并保存在 DDKISRINFO結(jié)構(gòu)體的dwlrq成員中。KernelloCon-trol函數(shù)將物理中斷號轉(zhuǎn)換為邏輯中斷號,符合條件就將邏輯中斷號回寫到注冊表中。相關代碼如下:

          本文引用地址:http://www.ex-cimer.com/article/202649.htm


          接著調(diào)用父類CPdd16550的Init函數(shù),創(chuàng)建中斷服務線程(IST)事件,并通過InterruptInitialize函數(shù)將事件與邏輯中斷號關聯(lián)起來,最后調(diào)用CreateHardwareAccess和MapHardware函數(shù)將串口基地址及相關寄存器片內(nèi)地址映射到內(nèi)核進程的虛擬地址。
          在MapHardware中,用GetWindowInfo根據(jù)串口的Active注冊表鍵獲得串口的全部I/O端口和內(nèi)存地址信息,然后用 MmMapIoSpace函數(shù)將串口物理地址和相關控制寄存器地址轉(zhuǎn)換成內(nèi)核進程的虛擬地址,以便后面對寄存器進行操作,部分代碼如下:


          CreateHardwareAccess函數(shù)根據(jù)MapHardware得到的m_pBaseAddress,構(gòu)造一個CRegLPC32xx類實例,然后調(diào)用CRegLPC32xx類的Init函數(shù)確保串口控制器硬件進入穩(wěn)定的工作狀態(tài)。
          根據(jù)LPC3250的數(shù)據(jù)手冊,設置標準UART的波特率需要設置小數(shù)波特率預分頻器和UART波特率發(fā)生器。當不用小數(shù)波特率預分頻器(即X=Y=1) 時,將標準UART的{Baudrate,DLM:DLL}的值定義一個數(shù)組BaudPairs[]。GetDivisorOfRate根據(jù)這個數(shù)組得到分頻系數(shù),然后調(diào)用父類的成員函數(shù)SetBaudRate便可設置波特率。高速UART的波特率類似,只是波特率計算公式和分頻系數(shù)與標準UART不同。
          用GetWaterMark得到接收器FIFO的觸發(fā)深度,分別為16、32、48和60位,然后在CPdd16550的InitReceive中設置FIFO控制寄存器,默認的FIFO觸發(fā)深度是32位。



          評論


          相關推薦

          技術(shù)專區(qū)

          關閉
          看屁屁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); })();