CAN通信三——正點原子資料(庫函數)1版本1

本章,我們使用的是 450Kbps 的通信速率,使用的是 ISO11898 標準,
顯性電平對應邏輯 0, CAN_H 和 CAN_L 之差爲 2.5V 左右。而隱性電平對應邏輯 1, CAN_H 和 CAN_L 之差爲 0V。在總線上顯性電平具有優先權,只要有一個單元輸出顯性電平,總線上即爲顯性電平。而隱形電平則具有包容的意味,只有所有的單元都輸出隱性電平,總線上才爲隱性電平(顯性電平比隱性電平更強)。另外,在 CAN 總線的起止端都有一個 120Ω的終端電阻,來做阻抗匹配,以減少回波反射。

由發送單元在非同步的情況下發送的每秒鐘的位數稱爲位速率。一個位可分爲 4 段。
 同步段(SS)
 傳播時間段(PTS)
 相位緩衝段 1(PBS1)
 相位緩衝段 2(PBS2)
這些段又由可稱爲 Time Quantum(以下稱爲 Tq)的最小時間單位構成。
1 位分爲 4 個段,每個段又由若干個 Tq 構成,這稱爲位時序。
1 位由多少個 Tq 構成、每個段又由多少個 Tq 構成等,可以任意設定位時序。通過設定
位時序,多個單元可同時採樣,也可任意設定採樣點。

CAN的發送流程
(1)程序選擇 1 個空置的郵箱(TME=1) 【1_空置:RQCP=X TXOK=X TME=1】
(2)設置標識符(ID)
(3)數據長度和發送數據
(4)設置 CAN_TIxR 的 TXRQ 位爲 1,請求發送
(5)郵箱掛號(等待成爲最高優先級)【2_掛號:RQCP=0 TXOK=0 TME=0】 
(6)預定發送(等待總線空閒)【3_預定:RQCP=0 TXOK=0 TME=0】 
(7)發送【4_發送:RQCP=0 TXOK=0 TME=0】
(8)郵箱空置。【5_發送成功後空置:RQCP=1 TXOK=1 TME=1】
OTHERS
(9) 不強制退出發送(ABRQ=1) 發送失敗處理。

CAN接收到的有效報文,被存儲在3級郵箱深度的FIFO中,FIFO完全由硬件來管理。
應用程序只能通過讀取 FIFO
輸出郵箱,來讀取 FIFO 中最先收到的報文。這裏的有效報文是指那些正確被接收的(直到 EOF
都沒有錯誤)且通過了標識符過濾的報文。前面我們知道 CAN 的接收有 2 個 FIFO,我們每個
濾波器組都可以設置其關聯的 FIFO,通過 CAN_FFA1R 的設置,可以將濾波器組關聯到FIFO0/FIFO1。

發佈了29 篇原創文章 · 獲贊 56 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章