PC機並口與CAN通訊的實現

2021-04-06 11:31:34 字數 1265 閱讀 3471

由於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匯流排的轉換及通訊辦法,這些都是筆者在學習和實踐中得來,相信能對 從事相關工作的人員有一定的啟發。

PC機如何實現與微控制器間序列通訊

中心議題 pc機與微控制器間序列通訊的實現 設計方案的介紹 硬體設計 軟體設計 解決方案 有線傳輸 無線傳輸 採用ccll00收發器通過串列埠實現pc機與微控制器之間的雙工無線通訊 單片微型計算機簡稱微控制器,它是將 處理器 cpu 儲存器 ram,rom 定時 計數器和各種介面電路都整合到一塊積體...

微控制器 串列埠與PC通訊

先通過串列埠除錯工具即pc傳送字元給微控制器,微控制器接收資料後再發給pc,再次通過串列埠除錯工具觀察傳送結果,即實現了pc到微控制器的收發 由於本地 需要安裝虛擬串列埠,pc用com1口,mcu的compim設為com2,波特率均為9600 org 0000h ajmp main org 0023...

CAN匯流排通訊的實現

實現mic 3680與f28335 can匯流排通訊的設定 mic 3680can模組濾波使用單濾波模式 can2.0a協議 使用11位識別符號 1 f28335傳送,mic 3680接收 f28335設定 1 設定msgid暫存器中ide位為0 即第31位 時,傳送標準幀 2.f28335的設定要...