<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > PC機并口與現場(chǎng)總線(xiàn)CAN通訊的實(shí)現

PC機并口與現場(chǎng)總線(xiàn)CAN通訊的實(shí)現

——
作者:莊乾成,饒運濤,江珊珊,魏雄 時(shí)間:2006-06-29 來(lái)源:Control Engineering China 收藏

       本文采用機并行端口EPP(Enhanced Parallel Port)協(xié)議在Windows98系統下通過(guò)對操作完成對控制器SJA1000的控制,從而與同一的其他節點(diǎn)的。
 
       1轉換端口電路框圖

              


  由于SJA1000的訪(fǎng)問(wèn)時(shí)間在40ns以?xún)?,所?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/PC">PC在訪(fǎng)問(wèn)SJA1000時(shí)完全可以不用插入等待周期。/Wait可以由/Addrstrobe和/Datastrobe信號經(jīng)過(guò)一個(gè)與非門(mén)后產(chǎn)生(圖1)。由于SJA1000的A L E時(shí)下降沿鎖存地址信號,所以將/Addrstrobe反相后與ALE相連。在EPP的數據讀/寫(xiě)周期時(shí),SJA1000的/RD和/WR控制信號有效,而在地址讀/寫(xiě)周期時(shí)無(wú)效。SJA1000的/RESET腳與并行端口的/RESET腳相連,由機向SJA1000提供復位信號,如果并行端口的/RESET腳不用做S J A1000的復位,則可以用作外設16位地址高低字節的選通信號。SJA1000的片選/CS腳接地,始終處于選通狀態(tài)。
 
       2EPP端口寄存器

       (表1)

                     

 

  (表2)  

                      

 

  上表中IRQEN:中斷使能位(1有效);ASTRB:地址選通位(0有效);INIT:初始化(1有效);DSTRB:數據選通位(0有效);WRITE:讀/寫(xiě)狀態(tài)位(0:寫(xiě),1:讀)。讀取接口狀態(tài)和控制接口都只須對相應的端口寄存器進(jìn)行操作。以下為Windows環(huán)境下采用VC++嵌入匯編的收和發(fā)的子程序(基地址為378h)。 

  

        
 
 
       3對節點(diǎn)SJA1000的操作

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

  通訊過(guò)程中CAN數據格式為:一幀CAN報文分為信息頭和信息內容兩部分。前5個(gè)字節為信息頭部分(如下表地址16~20),其前29位(ID0~ID28)為標示符(4個(gè)字節),包含本信息包的目的地址。第5個(gè)字節是幀信息,FF為幀格式(0為標準幀,1為擴展幀格式),RTR為遠程幀發(fā)送請求(0表示發(fā)送數據幀,1表示發(fā)送遠程幀),X表示無(wú)關(guān)位,最后4位DLC是數據長(cháng)度,即所發(fā)數據的實(shí)際字節數。其余8個(gè)字節是數據內容部分,即為實(shí)際所發(fā)的數據。表3說(shuō)明了CAN報文數據格式(擴展幀)。  

                      


  
       4通訊實(shí)現過(guò)程

  PC機采用Visual C++建立對話(huà)框發(fā)送對象,采用主動(dòng)發(fā)送方式,此時(shí)CAN中一定要有接收方存在,否則SJA1000將由于無(wú)應答而一直處于發(fā)送狀態(tài)。接收數據則采用查尋方法(VC++采用工作線(xiàn)程方法很容易實(shí)現)。以下為創(chuàng )建線(xiàn)程及線(xiàn)程執行函數(在執行函數體中以接收數據并輸出為例,不考慮CAN總線(xiàn)遠程幀請求,SJA1000的基地址為0)。 
       5結束語(yǔ)

  CAN總線(xiàn)以高抗干擾性,高速率,實(shí)時(shí)性強等優(yōu)點(diǎn),被廣大顧客所青睞。本文介 紹了基于與CAN總線(xiàn)的轉換及通訊辦法,這些都是筆者在學(xué)習和實(shí)踐中得來(lái),相信能對 從事相關(guān)工作的人員有一定的啟發(fā)。 

       參考文獻 

[1]饒運濤,鄒繼軍,鄭勇蕓.CAN原理與應用技術(shù)[M].北京:北京航 空航天大學(xué)出版社,2003.

[2]蔡寶忠,彭吉梅.深入Visual C++編程[M].北京,中國電力出 版社,20 01


評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>