C8051F040在基于CAN總線(xiàn)的分布式測控系統中的應用
摘要:CYGNAL生產(chǎn)的單片機C8051F040是代表8位單片機發(fā)展方向的高速(25M)混合信號系統級芯片(SOC)它不僅集成了一般測控系統需要的外設,而且集成了很有發(fā)展前景的現場(chǎng)總線(xiàn)—CAN總線(xiàn)控制器,文中對該芯片中的CAN控制器結構作了分析,并給出了在分布式測控系統中使用該芯片的智能節點(diǎn)的硬件、軟件設計方案。
關(guān)鍵詞:C8051F040;CAN總線(xiàn);分布式;測控節點(diǎn)
1 概述
分布式在線(xiàn)測控系統是由多個(gè)面向設備的、以MCU為核心的智能處理單元和多個(gè)并行運行且具有不同監測和故障診斷功能的微機構成的。該系統采取“分治”的設計思想它將數據采集以及部分數據處理任務(wù)交給設備層的智能處理單元去完成而監測診斷層主要負責監視和故障診斷。分布式測控系統設計均應考慮各個(gè)節點(diǎn)之間的通信問(wèn)題因為通信網(wǎng)絡(luò )的選取對系統性能有很大影響。 國內已開(kāi)展了基于現場(chǎng)總線(xiàn)的在線(xiàn)測控系統的研究并利用CAN總線(xiàn)實(shí)現設備層的檢測處理、單元間的通信以及與上層監測主機的通信。CAN總線(xiàn)就是一種支持分布式實(shí)時(shí)控制系統的串行通信局域網(wǎng)絡(luò )總線(xiàn)。它的主要特點(diǎn)如下:
●任一個(gè)節點(diǎn)均可在任一時(shí)刻主動(dòng)向網(wǎng)絡(luò )上的其它節點(diǎn)發(fā)送數據,而從不分主從,因此,通信比較靈活;
●節點(diǎn)可分為不同的優(yōu)先級,可以滿(mǎn)足不同的實(shí)時(shí)要求;
●采用非破壞性總線(xiàn)仲裁,當兩節點(diǎn)同時(shí)向總線(xiàn)發(fā)送信息時(shí),優(yōu)先級低的節點(diǎn)主動(dòng)停止數據發(fā)送而優(yōu)先級高的節點(diǎn)可不受影響地繼續發(fā)送數據;
●通信距離最遠可達10km,通信最高速率可達1Mbps
●每幀數據的有效字節數為8,因此,可保證很短的傳輸時(shí)間,而且實(shí)時(shí)性強,受干擾的概率低;
●每幀數據都含有CRC(循環(huán)冗余)校驗及其它校驗措施,因而數據出錯率很低;
●CAN總線(xiàn)節點(diǎn)在嚴重錯誤的情況下,可自動(dòng)切斷與總線(xiàn)的聯(lián)系,以使總線(xiàn)上的其它操作不受影響。
目前,CAN總線(xiàn)協(xié)議以其可靠性高、實(shí)時(shí)性好以及獨特的設計已經(jīng)成為總線(xiàn)通信網(wǎng)絡(luò )的首選國內目前使用較廣的是PHILIPS 生產(chǎn)的SJA1000 、82C200等獨立的CAN控制器,由于這種獨立的控制器限制了測控節點(diǎn)的集成度,因此,很多微處理器生產(chǎn)廠(chǎng)家已經(jīng)開(kāi)始生產(chǎn)內部集成有CAN控制器的MCU。美國CYGNAL公司生產(chǎn)C8051F040就是內部集成有BOSCH CAN控制器的混合信號系統級芯片(SOC)。本文將分析C8051F040 的CAN總線(xiàn)結構、與CPU 的接口及初始化配置,同時(shí)將給出基于C8051F040的分布式測控節點(diǎn)的設計及系統的實(shí)現框架。
2 C8051F040及其內部BOTSH CAN
?。茫纾睿幔旃镜膯纹瑱CC8051F040具有與8051指令集完全兼容的CIP-51內核。它的最高頻率可達25MHz內置64kB FLASH RAM和4kB的數據存儲器。C8051F040在一個(gè)芯片內集成了構成單片機數據采集或控制系統所需要的幾乎所有模擬和數字外設及其它功能部件,包括ADC、可編程增益放大器、DAC、電壓比較器、溫度傳感器、SMBus/I2C、UART、SPI、定時(shí)器、內部振蕩器、看門(mén)狗電路以及CAN 控制器等,這種高度集成為設計小體積、低功耗、高可靠和高性能的測控系統提供了方便,同時(shí)也使測控設備整體成本能夠降低。
?。茫福埃担保疲埃矗皟炔考捎校拢希裕樱?CAN,它兼容CAN技術(shù)規范2.0A和2.0B,主要由CAN內核、消息RAM(獨立于CIP-51的RAM)、消息處理單元和控制寄存器組成,圖1所示是C8051F040內部的CAN總線(xiàn)結構圖。
圖1中,CAN內核由CAN協(xié)議控制器和負責消息收發(fā)的串行/并行轉換RX/TX移位寄存器組成。消息RAM用于存儲消息目標和每個(gè)目標的仲裁掩碼。這種CAN處理器有32個(gè)隨意配置為發(fā)送和接受的消息目標并且每一個(gè)消息目標都有它自己的識別掩碼,所有的數據傳輸和接收濾波都是由CAN控制器完成的,而不是由CIP-51來(lái)完成。
?。茫粒蝺炔考拇嫫髦写鎯α怂校茫粒蔚目刂坪团渲眯畔?,其中包括控制寄存器、狀態(tài)寄存器、設置波特率的位定時(shí)寄存器 、測試寄存器、錯誤計數器和消息接口寄存器。通常CAN內核不能直接訪(fǎng)問(wèn)消息RAM,而必須通過(guò)接口寄存器IF1或IF2來(lái)訪(fǎng)問(wèn)。另外,CIP-51的SFR并不能直接訪(fǎng)問(wèn)CAN內部寄存器的所有單元,其配置CAN、消息目標、讀?。茫粒螤顟B(tài)以及獲取接收數據、傳遞發(fā)送數據都由SFR中的6個(gè)特殊寄存器來(lái)完成,其中CAN0CN、CAN0TST和CAN0STA 3個(gè)寄存器可直接獲取或修改CAN 控制器中對應的寄存器,而CAN0DATH、CAN0DATL、CAN0ADR 3個(gè)寄存器主要用來(lái)訪(fǎng)問(wèn)修改其它不能直接訪(fǎng)問(wèn)的CAN 內部寄存器,其中CAN0ADR用來(lái)指出要訪(fǎng)問(wèn)寄存器的地址,CAN0DATH、CAN0DATL這時(shí)就相當于要訪(fǎng)問(wèn)的16位寄存器的高、低字節的映射寄存器,而對它們的讀寫(xiě)則相當于對所指向寄存器的讀寫(xiě)。圖2給出了CIP-51如何訪(fǎng)問(wèn)CAN中控制寄存器和每個(gè)消息的路徑圖。
消息處理單元用于根據寄存器中的信息來(lái)控制CAN內核中移位寄存器和消息RAM 之間的數據傳遞,同時(shí),它還可用來(lái)管理中斷的產(chǎn)生。
3 基于C8051F040的智能系統設計
3.1 硬件設計
工業(yè)測控現場(chǎng)通常存在著(zhù)大量的傳感器、執行機構和電子控制單元,它們一般分布較廣,而且對實(shí)時(shí)性要求也很高,圖3是基于CAN總線(xiàn)的分布式測控系統框圖。該系統采用現場(chǎng)總線(xiàn)式集散系統FDCSField Distributed Control System結構,它由主控站(注:CAN總線(xiàn)各節點(diǎn)并不分主從 這里是針對特定的系統而言)、C8051F040為MCU的智能節點(diǎn)并配以CAN現場(chǎng)總線(xiàn)控制網(wǎng)絡(luò )構成。主控站主要完成對各節點(diǎn)的在線(xiàn)監控以及對各節點(diǎn)返回信息的分析處理,并對節點(diǎn)發(fā)出控制命令以控制節點(diǎn)工作模式。智能節點(diǎn)則根據主控站命令來(lái)完成數據采集、運行顯示以及對執行部件的控制,以及各節點(diǎn)與主站、節點(diǎn)與節點(diǎn)之間的實(shí)時(shí)數據交換和信息控制。
圖4是一個(gè)以C8051F040為核心的智能節點(diǎn)設計原理圖。
圖中,C8051F040的6、7腳分別為CANRX和CANTX引腳,CAN的輸出輸入必須加總線(xiàn)收發(fā)器才能與CAN物理總線(xiàn)相連。本系統采用了TJA1050高速CAN收發(fā)器來(lái)替代傳統的PCA82C250收發(fā)器,TJA1050芯片具有電磁輻射低、防短路、不上電時(shí)對總線(xiàn)無(wú)影響等特點(diǎn),它的8腳S可以選擇高速或靜音兩種模式,并可由C8051F040的P4.0控制。為了增加CAN 節點(diǎn)的抗干擾能力,將CAN引腳通過(guò)高速光耦6N137與總線(xiàn)收發(fā)器相連,可實(shí)現各節點(diǎn)之間的電氣隔離。電源的隔離可以采用小功率電源隔離模塊,也可以用帶多個(gè)5V隔離輸出的開(kāi)關(guān)電源模塊。這樣能大大提高節點(diǎn)的穩定性和可靠性,但可能會(huì )增加節點(diǎn)的硬件復雜性。
3.2 節點(diǎn)軟件設計
對于一個(gè)實(shí)際的測控系統,其節點(diǎn)軟件是比較復雜的,但由于C8051F040具有與8051指令完全兼容的CIP-51內核,所以,對于有使用51系列單片機經(jīng)驗的人來(lái)說(shuō),這并沒(méi)有太大的難度,下面主要介紹C8051F040內置CAN的軟件設計。
如果需要某一節點(diǎn)將A/D采樣值通過(guò)CAN總線(xiàn)送到主控站(地址01H),且配置系統時(shí)設定的工作頻率為25MHzCANTX引腳設為推挽方式,那么在初始化過(guò)程中,波特率應配置為160kbps,消息目標禁止不用,配置消息目標2為接收時(shí)的程序代碼如下:
CAN_INIT:
MOV SFRPAGE,#01H
ORL CAN0CN,#41H ;設INIT位為1, CCE為1
; 配置波特率
MOV CAN0ADR,#03H
MOV CAN0DATH,#7FH
MOV CAN0DATL,#05H
;禁止不用的消息目標(3-32)
MOV CAN0ADR, #0DH ; 指向IF1的仲裁控制寄存器2
MOV CAN0DATH,#00H ; MAGVAL=0;
MOV CAN0ADR,#09H ; 指向IF1的命令掩碼寄存器
MOV CAN0DATL,#0A0H ; 方向為寫(xiě),改變仲裁位
MOV R1,#20H
MOV CAN0ADR, #08H ;指向IF1的命令寄存器
ENABLE_MESSAGE_OBJECTS:
MOV CAN0DATL,R1 ;寫(xiě)R1指向的消息目標
MOV CAN0ADR, #08H ;指向IF1的命令寄存器
WAIT_TRANSFER_OVER
MOV A,CAN0DATH ;讀命令寄存器
JB ACC.7,WAIT_TRANSFER_OVER
DEC R1
CJNE R1,#02H,ENABLE_MESSAGE_BJECTS
;配置消息目標2為接收
MOV CAN0ADR,#21H
MOV CAN0DATL,#11111000B; 寫(xiě)IF2命令掩碼
MOV CAN0DATH,#00H
MOV CAN0DATL,#00H ;寫(xiě)IF2掩碼1
MOV CAN0DATH,#00H
MOV CAN0DATL,#00H ; 寫(xiě)IF2掩碼2
MOV CAN0DATL,#00H ; 寫(xiě)IF2仲裁寄存器1
MOV CAN0DATH,#80H ; 寫(xiě)IF2仲裁寄存器2高8位
消息目標有效,標準仲裁幀,方向為接收
MOV CAN0DATL,#00H ; 寫(xiě)IF2仲裁寄存器2低8位
MOV CAN0DATH,#00010100B; 寫(xiě)IF2控制寄存器高位
MOV CAN0DATL,#80H ; 寫(xiě)IF2控制寄存器低位
MOV CAN0ADR, #20H
MOV CAN0DATL, #02H ; 通過(guò)IF2寫(xiě)2號消息目標
WAIT_TRANSFER_OVER1;
MOV A,CAN0DATH ; 讀命令寄存器
JB ACC.7,WAIT_TRANSFER_OVER1
; 等待寫(xiě)結束
;CAN進(jìn)入操作模式
MOV CAN0CN,#00000010B ; CAN進(jìn)入正常操作模式狀態(tài)中斷使能,
RET
發(fā)送過(guò)程是將存儲在從BUF0起始地址中的2個(gè)字節的A/D采樣數據,通過(guò)IF1傳送到消息目標1的過(guò)程。其啟動(dòng)發(fā)送程序代碼如下:
SEND_AD_DATA:
MOV SFRPAGE, #01H
MOV CAN0ADR, #09H
MOV CAN0DATL,#10110111B
; 寫(xiě)IF1命令掩碼寄存器
MOV CAN0ADR, #0DH
MOV CAN0DATH,#10100000B ;使用11位標準仲幀
MOV CAN0DATL,#04H ;寫(xiě)IF1仲裁寄存器2,發(fā)送對象的地址01因標準幀使用高11位,所以地址要左移2位指向控制寄存器
MOV CAN0DATH,#00001001B ; 寫(xiě)IF1控制寄存器高8位,傳輸中斷使能,置傳輸請求位
MOV CAN0DATL,#0BH ; 寫(xiě)IF1控制寄存器低8 位,EOB=1 DLC=0指向BUF0
MOV DPTR,BUF0
MOVX A,@DPTR
MOV CAN0DATL,A ; 寫(xiě)IF1數據0
INC DPTR
MOVX A,@DPTR
MOV CAN0ADR,#0FH
MOV CAN0DATH,A ; 寫(xiě)IF1數據1
MOV CAN0ADR, #08H
MOV CAN0DATL,#01H ;傳遞到目標1及啟動(dòng)發(fā)送
RET
4 結束語(yǔ)
?。茫纾睿幔旃镜膯纹瑱CC8051F040是一種完全集成的混合信號系統級芯片(SOC),它具有與8051指令集完全兼容的CIP-51內核代表了8位單片機的發(fā)展方向。它不僅集成有構成監控系統常用的外設,而且集成了逐漸成為控制領(lǐng)域首選的高可靠性、高性能C8051F040 CAN總線(xiàn);本文使用該芯片設計的測控系統智能節點(diǎn)具有集成度高、性能穩定等特點(diǎn)。由于C8051F040可達到25MHz工作頻率,因而可提高系統實(shí)時(shí)性。此外,由于BOTSCH CAN內有32個(gè)自帶掩碼消息目標的特殊設計,因此,用其進(jìn)行分布式在線(xiàn)測控系統節點(diǎn)之間的相互數據傳遞設計將更為簡(jiǎn)單。
評論