新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于VxWorks的多串口卡通信實現(xiàn)

        基于VxWorks的多串口卡通信實現(xiàn)

        作者: 時間:2010-01-27 來源:網(wǎng)絡(luò) 收藏


        2.2 EMM8驅(qū)動開發(fā)

        首先是對各的初始化和中斷配置,初始化包括設(shè)置波特率以及數(shù)據(jù)格式。

        在實際的工程應(yīng)用中,需要8個共同使用一個中斷(中斷資源不足),8的全雙工同時收發(fā)。難點在于使用同一個中斷且不能丟數(shù)據(jù),對于驅(qū)動使用同中斷問題,關(guān)鍵是接收數(shù)據(jù)的中斷服務(wù)程序ISR。經(jīng)過探索,不論是否使用單中斷,讀EMM8卡上I/O Register Map表中的一個中斷狀態(tài)寄存器(interrupt status register),可以指出當時是哪一個串口收到數(shù)據(jù),讀出該串口的數(shù)據(jù)即可。但是這種方法經(jīng)過測試在接收時丟數(shù)據(jù)。后經(jīng)研究發(fā)現(xiàn),中斷狀態(tài)寄存器并不一定在某一個時刻只有一個端口位發(fā)生跳轉(zhuǎn)。即CPU收到中斷后,有可能是幾個串口“同時”收到數(shù)據(jù),這是因為中斷控制器將同一個CPU中斷分給了不同的串口。從CPU端看來只有一個中斷,但從各串口來講,這個中斷有可能是幾個串口“同時”產(chǎn)生的。因此要對中斷狀態(tài)寄存器進行輪詢,由發(fā)生跳轉(zhuǎn)的串口位接收該串口的數(shù)據(jù)。修改后,經(jīng)過編寫用例測試,可以穩(wěn)定地使用單中斷接收數(shù)據(jù)且不影響數(shù)據(jù)的發(fā)送。


        2.3 驅(qū)動測試

        首先是各串口的功能測試,使用“串口調(diào)試助手”軟件工具通過PC機與各目標機串口,收發(fā)數(shù)據(jù),然后通過屏幕顯示得到的數(shù)據(jù),對比規(guī)定的預(yù)期結(jié)果,檢測數(shù)據(jù)收發(fā)是否正確。經(jīng)多次驗證,工作穩(wěn)定,正確。

        綜合測試:使用2臺PC104分別安裝STV2050CPU模塊和EMM8多串口模塊各1塊,2臺PC通過網(wǎng)口(交換機)連接2臺PC104,2個EMM8通過8根RS-232雙頭串口線連接。2臺PC通過網(wǎng)口使用tornado的shell工具下載啟動程序。2臺PC104分別稱為1主機和2主機。測試方法是:

        1主機同時發(fā)送8串口的數(shù)據(jù),2主機8串口接收并轉(zhuǎn)發(fā)回1主機。1主機接收返回的數(shù)據(jù),判斷是否錯誤。經(jīng)檢驗正確通信300000次無錯,多次驗證。完成對EMM8多串口通訊模塊全雙工收發(fā)的測試。

        經(jīng)過以上測試,表明本文所述的多串口卡通信方法有效,所開發(fā)模塊穩(wěn)定可靠。


        3、結(jié)束語

        本文介紹了嵌入式系統(tǒng)中的多串口卡通信的實現(xiàn)過程,因篇幅有限,不能列出詳盡代碼。本文以EMM8為例,采用驅(qū)動直接訪問硬件的方法,較為

        簡潔、高效地解決了單中斷多串口全雙工通信的問題,滿足了項目需求,并經(jīng)過了測試和驗收。為日后類似問題的解決提供了一些參考和經(jīng)驗。


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 永平县| 乌鲁木齐县| 桐城市| 丰原市| 海淀区| 安宁市| 黄梅县| 井冈山市| 环江| 霍山县| 正安县| 延川县| 金塔县| 东平县| 田阳县| 息烽县| 阳山县| 安阳市| 平邑县| 浮梁县| 望奎县| 壶关县| 剑河县| 株洲县| 南和县| 青神县| 宝山区| 余庆县| 和林格尔县| 天柱县| 河曲县| 阳西县| 安图县| 许昌市| 宕昌县| 秦皇岛市| 湖北省| 思茅市| 九龙城区| 多伦县| 运城市|