王 越 胡 宇
?
簡析基于PIC32單片機的CAN總線通信
王 越1胡 宇2
1.沈陽金科精密儀器設備有限公司,遼寧 沈陽 110136 2.嵐山嵌入系統(沈陽)有限公司,遼寧 沈陽 110000
CAN全稱為“Controller Area Network”即控制器局域網,是國際上應用最廣泛的現場總線之一。隨著通信技術的快速發展,CAN總線通信得到廣泛的應用?;诖?,闡述了CAN總線數據庫的設計,對基于PIC32單片機的CAN總線結構及其總線通信進行了簡要分析。
CAN總線;數據庫;結構;通信
PIC32單片機系列適用于各種嵌入式應用領域,包括:工業、通信、家電以及消費電子產品等等。以下就基于PIC32單片機的CAN總線通訊進行分析。
CAN總線數據庫的設計主要包括:
(1)CAN節點。具體包括CAN總線網絡中所有節點的名稱以及通信ID。
(2)信號signal。信號signal代表一種類型的變量,一般用消息中的一位或者幾位來表示。一般包含的主要信息有:startBit,即開始位;length即這個變量的長度是多少位的。除此之外還有最大值、最小值的設置等。
(3)消息Message。其實質就是在CAN總線上通信的數據幀,一個Message包含的主要信息有:ID,表明這個數據幀是從哪個節點發出的:DLC,也就是數據幀的長度,即多少個字節(Byte):信號signal,一條消息一般含有一個或多個信號。
PIC32控制器局域網模塊實現了CAN規范2.0B,該規范主要用于工業和汽車。該異步串行數據通信協議能在電氣噪聲環境下提供可靠的通信。PIC32器件系列可以集成最多兩個CAN模塊。
2.1 CAN模塊支持以下主要特性
第一,符合標準。
(1)完全符合CAN規范2.0B;(2)最高1 Mbps的可編程比特率。
第二,報文接收和發送。
(1)最多32個報文FIFO。
(2)每個FIFO最多可包含32個報文,總共最多可包含1 024個報文;
知識鏈組織若能有效地開發利用有價值的、稀缺的、難以模仿的知識資源,那么就可以獲得相對于其他知識鏈的知識優勢。然而,知識鏈組織之間是一種戰略伙伴關系,依靠合同協議和相互信任維持合作,在運行過程中容易受到目標分歧、文化差異、利益不均等的干擾而產生沖突,因此需要運用正式的契約機制、非正式的自實施機制、第三方沖突管理機制、關系強度調節機制等多種手段,掃除知識鏈開發利用知識資源的組織障礙,促進知識鏈知識優勢的形成。
(3)FIFO可以作為發送報文FIFO或接收報文FIFO;
(4)用戶可為用于發送的報文FIFO定義優先級;
(5)最多32個用于報文過濾的接收過濾器;
(6)最多4個用于報文過濾的接收過濾器屏蔽器寄存器;
(7)自動響應遠程發送請求(Remote Transmit Request,RTR);
(8)支持DeviceNetTM尋址。
第三,其他特性。
(1)環回、監聽所有報文和監聽模式,用于自檢、系統診斷和總線監視。(2)低功耗工作模式。(3)CAN模塊是PIC32系統總線上的總線主機。(4)操作不需要直接存儲器訪問(Direct Memory Access,DMA)通道。(5)專用的時間標記定時器。(6)僅數據報文接收模式。
2.2 PIC32CAN模塊的大體結構框圖(如圖1所示)

注:不是所有特性在所有器件上均可用,而是需要參考具體器件數據冊中的“控制器局域網(CAN)”以確定可用性。
圖1PIC32CAN模塊的大體結構框圖
CAN模塊由協議引擎、報文接收過濾器和報文組合緩沖區(Message Assembly Buffer,MAB)組成。協議引擎通過CAN總線(按照CAN規范2.0B)發送和接收報文。所接收的報文在接收報文組合緩沖區中組合。然后,接收到的報文通過報文接收過濾器進行過濾。發送報文組合緩沖區在協議引擎進行處理時存放待發送的報文。CAN報文緩沖區駐留在器件RAM中。CAN模塊中沒有CAN報文緩沖區。因此,所有報文都存儲在器件RAM中。CAN模塊是PIC32系統總線上的總線主機,它會根據需要向器件RAM讀寫數據。CAN模塊執行操作時不使用DMA,它可以在無須DMA或CPU干預的情況下,從器件RAM中讀取報文。
3.1 CAN報文格式
CAN總線協議使用異步通信。信息以數據幀的形式從發送器傳遞到接收器,數據幀由定義數據幀內容的字節字段組成。每一幀都以幀起始(Start of Frame,SOF)位域開始,以幀結束(End of Frame,EOF)位域結束。SOF位后面跟隨仲裁和控制字段,它們表示報文類型、格式、長度和優先級。該信息使CAN總線上的每個節點都可以適當地響應報文。數據字段用于傳送報文內容,其長度可變,范圍為0至8字節。錯誤保護通過循環冗余校驗(Cyclic Redundancy Check,CRC)和應答(Ac knowledgement,ACK)字段來實現。(1)CAN總線協議支持五種幀類型:第一,數據幀——包含發送器向接收器傳送的數據;第二,遠程幀——由總線上某個節點發送,用于請求從另一個節點發送具有相同標識符的數據幀;第三,錯誤幀——由任意節點在檢測到錯誤時發送;第四,過載幀——在連續的數據幀或遠程幀之間提供額外的延時;第五、幀間間隔一一在連續的幀之間提供間隔。(2)CAN 規范2.0B 還定義了兩種額外的數據格式:第一,標準數據幀—用于使用11個標識符位的標準報文;第二,擴展數據幀—用于使用29個標識符位的擴展報文。(3)CAN總線規范有三種版本:第一,2.0A——將29位標識符視為錯誤;第二,2.0B Passive——忽略29位標識符報文;第三,2.0B Active——處理11位和29位標識符。
3.2 CAN寄存器
CAN模塊寄存器可以按照它們的功能分為以下幾組:第一,模塊和CAN比特率配置寄存器;第二,中斷和狀態寄存器;第三,屏蔽器和過濾器配置寄存器;第四,FIFO控制寄存器。
3.3 CAN模塊工作模式
用戶應用程序可以選擇以下幾種CAN模塊工作模式:(1)配置模式;(2)正常工作模式;(3)監聽模式;(4)監聽所有報文模式;(5)環回模式;(6)禁比模式。用戶應用程序通過寫入CAN控制寄存器中的請求工作模式位REQOP<2:0>(CiCON<26:24>)來請求所需的工作模式。CAN模塊通過CAN控制寄存器中的工作模式位OPMOD<2:0>(CiCON<23:21>)確認進入所請求的模式。模式轉換與CAN網絡同步執行。通過允許CAN中斷寄存器中的模式改變中斷位MODIE(CiINT<19>),用戶應用程序可以選擇在所請求的模式改變發生時產生中斷。在成功應用新模式之后,將會產生CAN中斷。或者,用戶也可以選擇通過查詢OPMOD<2:0>位(CiCON<23:21>)來確定CAN模塊是否成功切換了模式[2]。
基于PIC32單片機的CAN總線通信在自動化領域的應用非常廣泛,其特點是結構簡單、成本低,但速度高、實時性和可靠性好,因此對其進行分析具有重要意義。
[1]張子明,等.基于C8051F040單片機+BU61580架構的1555B總線通信接口模塊的設計[J].測控技術,2013(12):157-159.
[2]李多,陳軍.基于單片機串口實現1-Wire總線通信的方法[J].微型機與應用,2012(11):41-52.
Analysis of CAN Bus Communication Based on PIC32 MCU
Wang Yue1Hu Yu2
1.Shenyang Jinke precision instrument equipment Co., Ltd., Liaoning Shenyang 110136 2.Arashiyama embedded system(Shenyang)Co., Ltd., Shenyang Liaoning 110000
CAN full name “Controller Area Network”Controller area network, Is one of the most widely used field bus in the world. With the rapid development of communication technology, CAN bus communication has been widely used. Based on this, this paper describes the design of the CAN bus database, the CAN bus structure based on PIC32 MCU and its bus communication are analyzed briefly.
CAN bus; database; structure; communication
TP273.5
A
1009-6434(2016)08-0023-02