新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > PC機并口與現場總線CAN通訊的實現

        PC機并口與現場總線CAN通訊的實現

        ——
        作者:Control Engineering China/莊乾成,饒運濤,江珊珊,魏雄 時間:2007-01-26 來源:《EDN電子設計技術》 收藏

        本文采用pc機并行端口epp(enhanced parallel port)協議在windows98系統下通過對并口操作完成對can控制器sja1000的控制,從而與同一網絡的其他can節點的通訊。

        1轉換端口電路框圖

        由于sja1000的訪問時間在40ns以內,所以pc在訪問sja1000時完全可以不用插入等待周期。/wait可以由/addrstrobe和/datastrobe信號經過一個與非門后產生(圖1)。由于sja1000的a l e時下降沿鎖存地址信號,所以將/addrstrobe反相后與ale相連。在epp的數據讀/寫周期時,sja1000的/rd和/wr控制信號有效,而在地址讀/寫周期時無效。sja1000的/reset腳與并行端口的/reset腳相連,由pc機向sja1000提供復位信號,如果并行端口的/reset腳不用做s j a1000的復位,則可以用作外設16位地址高低字節的選通信號。sja1000的片選/cs腳接地,始終處于選通狀態。


        2epp端口寄存器

        (表2)

        上表中irqen:中斷使能位(1有效);astrb:地址選通位(0有效);init:初始化(1有效);dstrb:數據選通位(0有效);write:讀/寫狀態位(0:寫,1:讀)。讀取接口狀態和控制接口都只須對相應的端口寄存器進行操作。以下為windows環境下采用vc++嵌入匯編的收和發的子程序(基地址為378h)。

        3對can節點sja1000的操作

          在進行通訊之前應先對sja1000進行初始化,其初始化步驟依次為:a)檢測硬件連接是否正確,b)進入復位狀態,c)設置時鐘分頻寄存器,d)設置輸出控制寄存器,e)設置通訊波特率,f)設置代碼驗收寄存器,g)設置代碼屏蔽寄存器,h)設置工作模式,i)設置中斷使能寄存器,j)退出復位狀態完成初始化。

          通訊過程中can數據格式為:一幀can報文分為信息頭和信息內容兩部分。前5個字節為信息頭部分(如下表地址16~20),其前29位(id0~id28)為標示符(4個字節),包含本信息包的目的地址。第5個字節是幀信息,ff為幀格式(0為標準幀,1為擴展幀格式),rtr為遠程幀發送請求(0表示發送數據幀,1表示發送遠程幀),x表示無關位,最后4位dlc是數據長度,即所發數據的實際字節數。其余8個字節是數據內容部分,即為實際所發的數據。表3說明了can報文數據格式(擴展幀)。

        4通訊實現過程

          pc機采用visual c++建立對話框發送對象,采用主動發送方式,此時can網絡中一定要有接收方存在,否則sja1000將由于無應答而一直處于發送狀態。接收數據則采用查尋方法(vc++采用工作線程方法很容易實現)。以下為創建線程及線程執行函數(在執行函數體中以接收數據并輸出為例,不考慮can總線遠程幀請求,sja1000的基地址為0)。

        5結束語

        can總線以高抗干擾性,高速率,實時性強等優點,被廣大顧客所青睞。本文介 紹了基于并口與can總線的轉換及通訊辦法,這些都是筆者在學習和實踐中得來,相信能對 從事相關工作的人員有一定的啟發。


         


        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 久治县| 壤塘县| 黑水县| 南投县| 丘北县| 义乌市| 顺平县| 云阳县| 彭阳县| 屏东市| 林甸县| 从江县| 尼玛县| 龙胜| 页游| 遵义县| 拜城县| 黄龙县| 济源市| 菏泽市| 来安县| 肇源县| 当雄县| 南陵县| 舒兰市| 彩票| 南乐县| 利辛县| 离岛区| 屯昌县| 清苑县| 雷州市| 祥云县| 漾濞| 崇州市| 哈密市| 墨竹工卡县| 肥西县| 内乡县| 蒙阴县| 共和县|