<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇Win CE 專區WinCE系統定制與驅動開發 → 基于WinCE6.0的LPC3250串口驅動程序開發


      共有8815人關注過本帖樹形打印

    主題:基于WinCE6.0的LPC3250串口驅動程序開發

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    基于WinCE6.0的LPC3250串口驅動程序開發  發帖心情 Post By:2010-11-26 10:34:15

    在Clpc32xxPdd16550UART的Init函數中,GetIsrInfo以串口的Active注冊表鍵為依據查出物理中斷號,并保存在 DDKISRINFO結構體的dwlrq成員中。KernelloCon-trol函數將物理中斷號轉換為邏輯中斷號,符合條件就將邏輯中斷號回寫到注冊表中。相關代碼如下:

    圖片點擊可在新窗口打開查看

      接著調用父類CPdd16550的Init函數,創建中斷服務線程(IST)事件,并通過InterruptInitialize函數將事件與邏輯中斷號關聯起來,最后調用CreateHardwareAccess和MapHardware函數將串口基地址及相關寄存器片內地址映射到內核進程的虛擬地址。

      在MapHardware中,用GetWindowInfo根據串口的Active注冊表鍵獲得串口的全部I/O端口和內存地址信息,然后用 MmMapIoSpace函數將串口物理地址和相關控制寄存器地址轉換成內核進程的虛擬地址,以便后面對寄存器進行操作,部分代碼如下:

    圖片點擊可在新窗口打開查看

      CreateHardwareAccess函數根據MapHardware得到的m_pBaseAddress,構造一個CRegLPC32xx類實例,然后調用CRegLPC32xx類的Init函數確保串口控制器硬件進入穩定的工作狀態。

      根據LPC3250的數據手冊,設置標準UART的波特率需要設置小數波特率預分頻器和UART波特率發生器。當不用小數波特率預分頻器(即X=Y=1) 時,將標準UART的{Baudrate,DLM:DLL}的值定義一個數組BaudPairs[]。GetDivisorOfRate根據這個數組得到分頻系數,然后調用父類的成員函數SetBaudRate便可設置波特率。高速UART的波特率類似,只是波特率計算公式和分頻系數與標準UART不同。

      用GetWaterMark得到接收器FIFO的觸發深度,分別為16、32、48和60位,然后在CPdd16550的InitReceive中設置FIFO控制寄存器,默認的FIFO觸發深度是32位。

      Clpc32xxPdd16550UART是個抽象類,實現通用功能,具體的要分別由繼承的標準串口Clpc32xxPdd16550Stan- dardUART類和高速串口Clpc32xxPdd16550HighUART類實現。在各自初始化時,主要是配置各種寄存器,實現具體硬件差異化,包括:配置UART時鐘控制寄存器、時鐘模式寄存器和時鐘選擇寄存器,分別使能UART時鐘、設置自動時鐘模式、選擇相應的時鐘源作為分頻器的輸入時鐘;禁止UART3 Modem和UART6 IrDA功能;禁止UART的回送功能。

      特別要強調的是關于中斷的處理,串口驅動中斷可以用動態映射,也可以用靜態映射。在OEMInter-ruptHandler、 Clpc32xxPdd16550UART::Init、CPdd16550::Init、CPdd16550::ThreadRun等處加入調試打印信息,可以較快地找到問題所在,確定硬件中斷是否映射為系統中斷、系統中斷與中斷事件是否綁定、中斷產生時是否進入相應的處理程序。中斷處理好了,串口驅動就基本完成了。

      上述工作結束后,就要添加串口的注冊表。以串口3為例,主要是設置動態鏈接庫DLL、設備基地址、中斷號、前綴名、被加載的順序等。根據注冊表的 DeviceArrayIn-dex、CreateSerialObject就可以構造標準串口或高速串口類實例了, DeleteSerialObject在退出驅動時刪除實例。具體代碼如下:

    圖片點擊可在新窗口打開查看

    圖片點擊可在新窗口打開查看

    圖片點擊可在新窗口打開查看

      在廣州致遠電子有限公司的SmartARM3250開發板上,通過WinCE的串口應用程序與上位PC機進行發送接收實驗,本驅動已經實現標準串口最高460 800 b/s、高速串口最高921 600 b/s的穩定傳輸。

      結 語

      本文介紹了WinCE6.0下的串口驅動模型,結合LPC3250的硬件情況,詳細說明了串口驅動開發過程,包括配置串口相關的寄存器和處理中斷中重要函數的實現,以及注冊表和Source文件編寫等。本驅動程序在廣州致遠電子有限公司的SmartARM3250開發板上實驗成功。在串口驅動開發中所用的思路,對其他類似的驅動設計有較高的參考價值。

     

    支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

    返回版面帖子列表

    基于WinCE6.0的LPC3250串口驅動程序開發








    簽名
    主站蜘蛛池模板: 久久久精品中文字幕麻豆发布| 四虎影视永久在线观看| 一级免费黄色片| 老司机免费午夜精品视频| 在线观看免费午夜大片| 久久久亚洲欧洲日产国码二区| 欧美jizz18性欧美| 免费中韩高清无专码区2021| 色妞视频一级毛片| 国产精品久久久久久搜索| 一个人免费视频观看在线www| 无遮挡边吃摸边吃奶边做| 亚洲精品无码mv在线观看网站| 精品人妻中文字幕有码在线| 国产婷婷综合在线视频| avtt在线观看| 娇bbbb搡bbbb| 久久国产欧美日韩精品| 最新69国产成人精品免费视频动漫 | 最近中文字幕完整视频高清10| 偷拍激情视频一区二区三区| 美国人与动性xxx杂交视频| 国产日韩av在线播放| 99RE久久精品国产| 天天干天天拍天天射| 中文字幕在线视频网| 日日噜噜噜夜夜爽爽狠狠视频| 亚洲一卡一卡二新区无人区| 欧美疯狂性受xxxxx喷水| 又粗又大又长又爽免费视频| 色一情一乱一伦一区二区三欧美| 国产特级毛片aaaaaaa高清| 99精品久久99久久久久| 女人18毛片特级一级免费视频| 久久久久久中文字幕| 日本三级香港三级国产三级| 亚洲人成777| 欧美AAAAAA级午夜福利视频| 亚洲精品成人片在线播放| 爱爱帝国亚洲一区二区三区| 可以免费观看的一级毛片|