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

注:不是所有特性在所有器件上均可用,而是需要參考具體器件數(shù)據(jù)冊中的“控制器局域網(wǎng)(CAN)”以確定可用性。
圖1PIC32CAN模塊的大體結構框圖
CAN模塊由協(xié)議引擎、報文接收過濾器和報文組合緩沖區(qū)(Message Assembly Buffer,MAB)組成。協(xié)議引擎通過CAN總線(按照CAN規(guī)范2.0B)發(fā)送和接收報文。所接收的報文在接收報文組合緩沖區(qū)中組合。然后,接收到的報文通過報文接收過濾器進行過濾。發(fā)送報文組合緩沖區(qū)在協(xié)議引擎進行處理時存放待發(fā)送的報文。CAN報文緩沖區(qū)駐留在器件RAM中。CAN模塊中沒有CAN報文緩沖區(qū)。因此,所有報文都存儲在器件RAM中。CAN模塊是PIC32系統(tǒng)總線上的總線主機,它會根據(jù)需要向器件RAM讀寫數(shù)據(jù)。CAN模塊執(zhí)行操作時不使用DMA,它可以在無須DMA或CPU干預的情況下,從器件RAM中讀取報文。
3.1 CAN報文格式
CAN總線協(xié)議使用異步通信。信息以數(shù)據(jù)幀的形式從發(fā)送器傳遞到接收器,數(shù)據(jù)幀由定義數(shù)據(jù)幀內(nèi)容的字節(jié)字段組成。每一幀都以幀起始(Start of Frame,SOF)位域開始,以幀結束(End of Frame,EOF)位域結束。SOF位后面跟隨仲裁和控制字段,它們表示報文類型、格式、長度和優(yōu)先級。該信息使CAN總線上的每個節(jié)點都可以適當?shù)仨憫獔笪摹?shù)據(jù)字段用于傳送報文內(nèi)容,其長度可變,范圍為0至8字節(jié)。錯誤保護通過循環(huán)冗余校驗(Cyclic Redundancy Check,CRC)和應答(Ac knowledgement,ACK)字段來實現(xiàn)。(1)CAN總線協(xié)議支持五種幀類型:第一,數(shù)據(jù)幀——包含發(fā)送器向接收器傳送的數(shù)據(jù);第二,遠程幀——由總線上某個節(jié)點發(fā)送,用于請求從另一個節(jié)點發(fā)送具有相同標識符的數(shù)據(jù)幀;第三,錯誤幀——由任意節(jié)點在檢測到錯誤時發(fā)送;第四,過載幀——在連續(xù)的數(shù)據(jù)幀或遠程幀之間提供額外的延時;第五、幀間間隔一一在連續(xù)的幀之間提供間隔。(2)CAN 規(guī)范2.0B 還定義了兩種額外的數(shù)據(jù)格式:第一,標準數(shù)據(jù)幀—用于使用11個標識符位的標準報文;第二,擴展數(shù)據(jù)幀—用于使用29個標識符位的擴展報文。(3)CAN總線規(guī)范有三種版本:第一,2.0A——將29位標識符視為錯誤;第二,2.0B Passive——忽略29位標識符報文;第三,2.0B Active——處理11位和29位標識符。
3.2 CAN寄存器
CAN模塊寄存器可以按照它們的功能分為以下幾組:第一,模塊和CAN比特率配置寄存器;第二,中斷和狀態(tài)寄存器;第三,屏蔽器和過濾器配置寄存器;第四,F(xiàn)IFO控制寄存器。
3.3 CAN模塊工作模式
用戶應用程序可以選擇以下幾種CAN模塊工作模式:(1)配置模式;(2)正常工作模式;(3)監(jiān)聽模式;(4)監(jiān)聽所有報文模式;(5)環(huán)回模式;(6)禁比模式。用戶應用程序通過寫入CAN控制寄存器中的請求工作模式位REQOP<2:0>(CiCON<26:24>)來請求所需的工作模式。CAN模塊通過CAN控制寄存器中的工作模式位OPMOD<2:0>(CiCON<23:21>)確認進入所請求的模式。模式轉換與CAN網(wǎng)絡同步執(zhí)行。通過允許CAN中斷寄存器中的模式改變中斷位MODIE(CiINT<19>),用戶應用程序可以選擇在所請求的模式改變發(fā)生時產(chǎn)生中斷。在成功應用新模式之后,將會產(chǎn)生CAN中斷。或者,用戶也可以選擇通過查詢OPMOD<2:0>位(CiCON<23:21>)來確定CAN模塊是否成功切換了模式[2]。
基于PIC32單片機的CAN總線通信在自動化領域的應用非常廣泛,其特點是結構簡單、成本低,但速度高、實時性和可靠性好,因此對其進行分析具有重要意義。
[1]張子明,等.基于C8051F040單片機+BU61580架構的1555B總線通信接口模塊的設計[J].測控技術,2013(12):157-159.
[2]李多,陳軍.基于單片機串口實現(xiàn)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