在設定TI DSP的eCAN module,最先要了解的是主控暫存器與Bit-Timing設定,
這篇會寫到暫存器內,有那些位元,要如何設置。另外CAN Bit-Timing的設定
會影響到與其他CAN裝置的通訊,需要仔細調試。
CAN Master control register(主控暫存器)
CANMC.SUSP:在Suspend,設為"1"為Free,持續CAN通信。設為"0"為Soft,
當前訊息發完就關閉。
CANMC.MBCC:設定在SCC模式下,受EALLOW保護。設為"1", 在成功收發
Mail16,便清除mail conunter。
CANMC.TCC:設"1"去清除Mail counter的MSB BIT,TCC Bit會在一個時鐘
周期後,自動清除為"0"。
CANMC.SCB:設"1"為選擇eCAN模式,設"0"為選擇SCC模式。
CANMC.CCR:改變配置請求位元,在SCC模式下,要對CANBTC、
CANGAM、LAM0、LAM3寫入設定,需要先將CCR bit設為"1",
並等到CANES的CCE顯示為"1"(表示同意後),才能去修改這些
暫存器的設定。
CAMMC.PDR:本地斷電請求,設PDR位元"1" ,請求將eCAN模組進斷電模
式,也包括將eCAN模組Clock關閉。
CAMMC.DBO:傳送/接收資料位元組順序,設DBO為"1",從最低位元組先傳
收。設為"0",則從最高位先組傳收。
CAMMC.WUBA:喚醒Bus線方式,設為"1",當Bus線上有活動,就將eCAN模
組從斷電模式中喚醒。設為"0",只能寫入PDR bit來喚醒。
CAMMC.CDR:改變數據區域請求,在更改CAMMC.MBNR 4:0的區塊資料之
前,需要先將CDR bit設為"1",在更改完後,要將CDR bit設
為"0"。在CDR bit為"1"時,eCAN模組不會傳送那個Mailbox的
內容。
CAMMC.ABO:自動Bus開啟位元,ABO設為"1"時,在Bus off狀態,在偵測到
第128*11個隱性位元後,自動回到Bus on狀態。ABO設
為"0"時,在Bus off時,要檢測到連續128*11隱性位元並且CCR
位元已經被清除,才會回到Bus on狀態。
CAMMC.STM:自我測試模式,在設為"1"後,進入自我測試模式,eCAN模組
能自已產生Ack回應,不需要在Bus上連接其他的模組,發出去
的資料會存在合適的mailbox,能被讀取。
CAMMC.SRES:軟體重置位元,寫入"1",就能對模組進行軟體重置,所有的
暫存器參數,除了被保護的,都會被重置回初始設定。
CAMMC.MBNR:有MBNR[4:0]共5個bit,MBNR[4]只有用在eCAN,在SCC無
效。設定Mailbox編號,CPU請求是對應的Mailbox要被用來寫
入資料。與CDR搭配使用。
CAN傳輸速率配置
CAN規範裡,將一個Bit Timing分成四個時間區段,裡面的單位為TQ(Time
Quantum)圖中的TSEG1,TSEG2、SYNCSEG、SJW都是以TQ為單位。
1.SYNC_SEQ:同步節點,長度為1個TQ。
2.PROG_SEQ:用來補CAN網路裡的物理延遲時間(兩倍於Bus線上的信號傳播
延遲,這個延遲包括了輸入比較延遲與輸出驅動延遲),可以設
為1~8個TC。
3.Phase_SEG1:上升邊緣相位補償
4.Phase_SEG2:下降邊緣相位補償
5.SJW:同步跳轉寬度,用來增大或減小CAN Baudrate的容許偏差量。
5.Sample point:在每個BIT裡TSEG1與TSEG2之間,採樣點的位置,可以透過調
整TSEG1與TSEG2各自的長度,來調整。取樣位置不能太前也
不能太後面,不然可能會取到上升沿或下降沿。一般取樣位置
設定在50%之後,等待信號穩定再取樣,建議在75%~85%之
間。
CAN Bit-Timing Configuration register(位元時序設置暫存器)
CANBTC.BRP:BRP為Baud rate分頻器設定,TQ=(BRP+1)/BaseCLK。
在283xx, 2803x的BaseCLK=SYSCLKOUT/2。
在281x, 280x與2801x的BaseCLK=SYSCLKOUT。
SYSCLKOUT是CAN module的系統時鐘。
CANBTC.TSEG1:為PROG_SEQ+Phase_SEG1
CANBTC.TSEG2:為Phase_SEQ2。
CANBTC.SJW:SJW可設定1~4個TQ,SJW的值直接影响到重同步時相位緩沖
段的可調節範圍。選擇3、4可以使BUS線上獲得到更大的
Baudrate容許偏差量,一般的要求是3%以上。容許的偏差量太
低,通訊失敗的機率就會增加。
CANBTC.SAM:數據採樣次數設置,"0"表示每個採樣點只採1次,"1"在BRP>4
時每個採樣點採3次(多數決)。三次採樣是為了過濾掉Bus線上
的毛剌,但採用三次採樣可能會影響到SJW跳轉,所以一般用
選用單次採樣。
Bit timing設置
當BRP設為49,BaseCLKK為SYSCLKOUT/2=75MHz,
TQ=50/75MHZ=0.667us。假設TSEG1=11個TQ,TSEG2=3個TQ
就可以得到tCAN=SYNCSEG+TSEG1+TSEG2=15個TQ=10us。
在這個範例可以設定CAN的Bit time為10us,速度為100kbit/s。
Reference
1.TMS320x2833x, 2823x DSP Enhanced Controller Area Network (eCAN) User's Guide
2.https://zhuanlan.zhihu.com/p/38299092