• 沒有找到結果。

can 資料傳輸方式

第五章 通信界面及三相不斷電系統並聯

5.4 can 資料傳輸方式

CAN包含四種訊框(frame)架構,分別為資料訊框(data frame)、遠 端傳送要求訊框(remote frame)、錯誤訊框(error frame)與過載訊框 (overload frame)。其中資料訊框與遠端傳送要求訊框用來進行資料傳 輸,二者最大的差別為遠端傳送要求訊框沒有資料欄位,如表5-2及 表5-3所示[45],而其餘二種訊框則(錯誤訊框、過載訊框)為處理意外 狀況時所設計的。

表5-2 資料訊框架構 Bus

Idle SOF Arbitration Field

Control Field

Idle SOF Arbitration

Field Control Field CRC CAN依同一網路上可架設之節點多寡分為標準格式 (standard frame)與延伸格式(extended frame),延伸格式是為了較龐大的系統而 訂制的。辨識碼的意義代表「優先權」和「是否被接收者接收」,辨 識碼的數值越小代表優先權越高。

由表5-3可看到資料訊框包含有七個欄位[45],分別為:

(1) 起始訊框(start of frame, SOF):為一訊框的開始位元,其 值”0”才正確,佔1位元(bit)。

(2) 辨識碼欄位(arbitration field, ArID),包含了標準格式與延伸 格式二種,如表5.2與表5.3所示。二者主要差別的地方即為 辨識碼的長度。標準格式的辨識碼為11個位元,延伸格式 的 辨 識 碼 為 2 9 個 位 元 。 在 此 欄 位 當 中 有 一 延 伸 辨 識 碼 (identifier extension, IDE)可以分辨是標準或是延伸格式;若

此位元值為0表示標準格式,並將IDE歸類到控制欄位,若 為1則為延伸格式。在此欄位當中又包含一遠端傳送要求位 元(remote transmit request bit, RTR),若此位元值為0表示 資料訊框,若為1表示遠端傳送要求訊框,而且延伸格式的 遠端傳送要求訊框會再加一SRR位元(substitute remote request bit),其值固定為1。

(3) 控制欄位(control field ),是由IDE/r1、r0 與資料長度編碼 (data-length code, DLC)所組成,而標準格式與延伸格式的 組成位元不一樣。標準格式將IDE歸類到控制欄位,所以其 格式並無r1。而延伸格式中則包含了r0、r1和DLC。其中r0 及r1為保留位元,預設值為0。其控制欄位的組成成員如圖 5-1及圖5-2所示[45]。而且從表中也可知道控制欄位中的資 料長度編碼值與資料量的關係。

Standard Format

Arbitration Field Control Field Data Field SOF 11 bit IDENTIFIER RTR IDE r0 DLC

圖5-1 標準訊框格式

Extended Format

Arbitration Field Control Field Data Field SOF

11 bit IDENTIF

IER

SRR IDE 18 bit

IDENTIFIER RTR r0 r1 DLC 圖5-2 延伸訊框格式

(4) 資料欄位(data field):資料訊框才有的欄位,其功能為放 要傳送的資料,有0~8 個位元組的資料量,若為遠端傳送要 求訊框時則無此欄位。

(5) 循環冗位檢查欄位(cyclic redundancy check field,CRC):

包括儲放資料經CRC後計算的結果(CRC sequence,15位元 )與一個符號位元「1」(CRC delimiter),可作為接收資料是 否正確之錯誤偵測。CRC為一資料傳輸上之錯誤偵測技術。

(6) 確認欄位(ACK field ):包括確認位元(ACK slot)與符號位元

「1」(ACK delimiter)。若為傳送端其確認位元為「1」,接 收端若正確的收到資料其確認位元則設定為「0」。

(7) 結束訊框(end of frame,EOF):為七個位元都為「1」所組 成,作為結束訊框的記號。

CAN定義0V為強勢位元D (dominant bit-level),5V為弱勢位元 R (recessive bit-level),且CAN的傳輸是藉由二條所謂CANH和 CANL 的 傳 輸 線 , 若 CANH-CANL < 0.5V 即 為 強 勢 位 元 ; 若 CANH-CANL>0.9V則為弱勢位元(以數位訊號處理器提供5V作為 參考電位)。舉例說明:當網路上同時有二個以上節點要求使用匯 流排時,當其中一個節點的ID送出的位元是D,而其他系統送出的 位元是R時,則送出D的系統將取得匯流排的使用權。由表5-4及圖 5-3可以看出其匯流排之狀態。

表5-4 SN65HV230Q輸出驅動轉態表 輸出差訊號

輸入

D訊號 CANH CANL 匯流排

狀態 Low High Low 強勢 High 高阻抗 高阻抗 弱勢

開路 高阻抗 高阻抗 弱勢

註:LOW及HIGH表示匯流排之差動訊號(LOW:0;HIGH:1)

圖5-3 CAN節點輸出訊號情形

為實現二機並聯,本文將電壓控制模式之數位信號處理器設為傳 送端,電流控制模式之數位信號處理器設為接收端。首先先將傳送端 與接收端系統參數初始設定:

1. 訊息識別碼(message identifier):傳送端與接收端在傳輸資 料時,需為相同之識別碼才能彼此傳輸資料,故設定傳送端 與接收端為相同之識別碼。

2. 本地接收遮罩碼(local acceptance mask, LAM):在接收訊息 中,訊息識別碼首先會對接收郵遞箱中所設定的訊息識別碼 進行比對,其中的識別碼比對係對具有一個識別碼各個位元 的對應遮罩設定,用來加以適當的遮罩做濾除,被遮罩的位 元(該位元為 1)將被忽略而不比對。故傳送端與接收端在傳 輸資料時,除了訊息識別碼需為相同之外,亦需比對接收遮 罩碼才能彼此傳輸資料,故設定傳送端與接收端為相同之識 別碼及遮罩碼。

3. 郵 遞 箱 方 向 及 致 能 暫 存 器 : C A N 內 建 六 組 郵 遞 箱 空 間為 Mailbox0~Mailbox5,且每個郵遞箱均有四個 16bit 的暫 存器,共有 48*16bit 之空間,其中 Mailbox0、1 為接收郵遞 箱,Mailbox2、3 為可設定為傳送或接收郵遞箱,Mailbox4、

5 為傳送郵遞箱。故傳送端可使用郵遞箱 Mailbox4、5 及 Mailbox2、3,接收端可使用郵遞箱 Mailbox0、1 及 Mailbox2、

3。

4. 傳輸速率(baud rate)設定:傳送端與接收端在傳輸資料時,

需為相同之速率,本文將傳輸速率設為 1M bit/s。其計算公 式如下所示:

baud rate=(CPUCLK/((BRP+1)*Bit Time))=1/(TQ* Bit Time) Bit Time=(TSEG1+1)+ (TSEG2+1)+1

其中 CPUCLK 為數位訊號處理器之執行速度 40MHz,TQ 表示為時 間單元量,BRP 表示速率預除器,TSEG1(time segment 1)用於設定傳

位延遲時間段。

將傳送端與接收端參數初始設定完之後,可開始傳送資料或接收 資料,傳送訊息的啟動必須經由 CAN 內部之傳送控制暫存器(TCR) 之傳送要求設定位元(TRS)加以設定才可傳送,可用幾個方法得知是 否傳送端已傳送完成:

1. 持續檢查傳送控制暫存器內對應的傳送告知位元(TA)是否 為 1,若傳送告知位元為 1 則表示傳送成功。

2. 檢查 CAN 中斷旗標暫存器 CAN_IFR 中的接收及傳 送的訊息中斷旗標(MIF)是否為 1,若此位元為 1 則表示傳 送成功。

3. 設定對應的中斷致能,由中斷服務副程式執行對應處理而完 成。

4. 以軟體設一等待迴圈作為時間延遲,做為傳送與接收的時間 同步。

其傳送流程如圖 5-4 所示

控制區域網路之 控制參數

初始

設定

啟動傳送控制暫存器(TCR)之 傳送要求設定位元(TRS=1)

等待傳送 回應告知

完成訊息傳送

TA=0或MIF=0

告知傳送端已 成功送出資料 TA=1或MIF=1

圖 5-4 CAN 訊息傳送流程圖

同理,當接收端接收資料時亦有幾種方法得知接收端已接收完 成:

1. 持續檢查接收控制暫存器內對應的接收訊息閒置位元(RMP) 是否為 1,若接收訊息閒置位元為 1 則表示接收成功而處於 閒置狀態。

2. 檢查 CAN 中斷旗標暫存器 CAN_IFR 中的接收及傳 送的訊息中斷旗標(MIF)是否為 1,若此位元為 1 則表示 接收成功。

3. 設定對應的中斷致能,由中斷服務副程式執行對應處理而完 成。

4. 以軟體設一等待迴圈作為時間延遲,做為傳送與接收的時間 同步。

其接收流程如圖 5-5 所示

控制區域網路之 控制參數

初始

設定

等待接收 回應或延遲

等待告知

完成訊息接收

RMP=0或MIF=0

告知接收端已 成功收到資料 RMP=1或MIF=1

圖 5-5 CAN 訊息接收流程圖

相關文件