基于C8051F040的CAN總線智能節(jié)點的設(shè)計
控制器局域網(wǎng)can(controller
aera network)是德國bosch公司在80年代初為解決現(xiàn)代汽車中大量的控制與測試儀器之間的數(shù)據(jù)交換而提出的一種串行數(shù)據(jù)通信協(xié)議。他是多主總線,通信介質(zhì)可以是雙絞線,通信速率可達1m/s,最遠通信距離可達10km。can具有極高的可靠性,高實時性特點特別適合工業(yè)過程監(jiān)控設(shè)備的互連,已被公認是最有前途的現(xiàn)場總線之一。can總線的高速采集系統(tǒng)具備dcs(分布式控制系統(tǒng))的主要特征,可代替dcs。
cygnal公司的51系列單片機c8051f040是集成在一塊芯片上的混合信號系統(tǒng)級單片機,在一個芯片內(nèi)集成了構(gòu)成一個單片機數(shù)據(jù)采集或控制的智能節(jié)點所需要的幾乎所有模擬和數(shù)字外設(shè)以及其他功能部件,代表了目前8位單片機控制系統(tǒng)的發(fā)展方向。芯片上有1個12位多通道adc,2個12位dac,2個電壓比較器,1個電壓基準,1個32kb的flash存儲器,與mcs-51指令集完全兼容的高速cip-51內(nèi)核,峰值速度可達25mips,并且還有硬件實現(xiàn)的uart串行接口和完全支持can2.0a和can2.0b的can控制器。本文將介紹帶有在片can的cygnal公司的混合信號片上系統(tǒng)(soc)級單片機c8051f040作為微處理器的can智能節(jié)點設(shè)計的硬件和軟件方案。
1 典型c8051f404的can總線網(wǎng)絡(luò)結(jié)構(gòu)
典型c8051f404的can總線網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。一個典型的can節(jié)點由帶有can控制器的微處理器和can收發(fā)器構(gòu)成。can收發(fā)器建立can控制器和物理總線之間的連接,控制邏輯電平信號從can控制器到達物理總線的物理層,反之也一樣。can控制器執(zhí)行can協(xié)議,用于信息緩沖和濾波。f040的can控制器支持完全的can2.0a和can2.0b。
上位機通過can適配卡與各個can節(jié)點通訊。在應(yīng)用中,上位機可以發(fā)送命令到節(jié)點,收集數(shù)據(jù),修改過程參數(shù),各節(jié)點可以將采集到的數(shù)據(jù)送到上位機進行復(fù)雜的數(shù)學(xué)計算或是保存打印,實現(xiàn)更加優(yōu)越的信息處理功能。
2 c8051f040的can控制器結(jié)構(gòu)
f040的所有can協(xié)議功能都由獨立的can控制器而不是由51處理器來完成。因此,can通信占用cpu帶寬很小,51處理器只需要通過特殊功能寄存器(sfr)配置can控制器,數(shù)據(jù)過濾器就可以了。
2.1 can控制器各部分功能
can core:can協(xié)議控制器和發(fā)送/接收轉(zhuǎn)換寄存器;
message ram:存儲message objects和標志碼,can控制器共有32個message object可供配置來用于發(fā)送或接收數(shù)據(jù);
registers:用于控制和配置c_can模塊的所有寄存器;
message handler:控制數(shù)據(jù)在can core的接收/發(fā)送轉(zhuǎn)換寄存器和message object之間的傳輸,以及中斷的產(chǎn)生。
2.2 can寄存器分類
can寄存器可分為以下4類:
(1)can控制器協(xié)議寄存器:用于can控制、中斷、錯誤控制、總線狀態(tài)控制和測試模塊;
(2)信息目標(message object)接口寄存器:配置32個信息目標(msg obj),從目標接收和發(fā)送數(shù)據(jù)。8051處理器通過他來讀寫can message ram;
(3)信息處理寄存器:只讀寄存器。為51cpu提供信息目標的狀態(tài),如信息有效標志,發(fā)送請求狀態(tài),新數(shù)據(jù)標志和中斷標志;
(4)c8051處理器特殊功能寄存器(sfr):c8051處理器控制的5個寄存器,直接讀寫can協(xié)議寄存器,通過can數(shù)據(jù)寄存器(can0dath和can0datl)和can地址寄存器(can0adr)間接讀寫其他can控制器。
3 can節(jié)點的硬件設(shè)計
設(shè)計采用的接口芯片使用ti公司的3.3vcan收發(fā)器sn65hvd230,他與pca82c250的引腳兼容。sn65hvd230有3種工作模式:高速,傾斜和低功耗模式,由rs腳的連接方式來確定。由于f040自帶了can控制器,外圍電路極為簡潔。
4 can通訊軟件設(shè)計
為避免51 cpu讀寫message ram與can 信息收發(fā)之間產(chǎn)生沖突,cpu不直接讀寫message object,而是通過專門的寄存器(ifx interface registers)來配置信息目標。
一個完整的信息目標的結(jié)構(gòu)如表1所示。
can通訊協(xié)議的最大特點之一就是廢除了傳統(tǒng)的站地址編碼,而使用信息塊標志碼。id28-0,xtd和dir用來定義信息標志碼,以及定義即將發(fā)送數(shù)據(jù)幀的類型(遠程幀或標準幀),并且與mask28-0,mxtd和mdir一起用來作為將要接收數(shù)據(jù)幀的過濾器。一個已接收到的信息被放在有效的(msgval=1)、具有匹配標志碼的message object里。只有當(dāng)xtd=1時,遠程幀才被放入message object,xtd=0時,標準幀被放入message object。當(dāng)多于一個的有效message object與收到的信息匹配,則該條信息被放入號碼最小的message object里。data0-data7是8個數(shù)據(jù)字節(jié)。can通訊初始化和法數(shù)據(jù)幀的軟件流程如圖4所示。
can通訊軟件設(shè)計主要包括3個模塊:can通訊初始化、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)模塊。信息目標的初始化程序代碼(c語言)如下:
當(dāng)微處理器接收數(shù)據(jù)采用中斷方式,接收message object初始化時將rxie位置1。當(dāng)程序進入到can中斷服務(wù)子程序時,先判斷can狀態(tài)寄存器的rxok位是否已置位,若已置位,則說明can控制器已經(jīng)成功接收到一個數(shù)據(jù)幀(因為can通訊有多個中斷源,而中斷向量只有一個),這時再調(diào)用相應(yīng)的函數(shù),取出數(shù)據(jù)幀中有用的字節(jié)進行處理或執(zhí)行相應(yīng)的操作。源程序代碼如下:
5 結(jié)語
c8051f040是完全集成的混合信號系統(tǒng)級單片機,具有與8051指令集完全兼容的cip-51內(nèi)核,代表了8位單片機的發(fā)展方向。他不但集成了構(gòu)成監(jiān)控系統(tǒng)的常用外設(shè),而且還集成了高可靠性、高性能的can總線控制模塊。本文使用該芯片設(shè)計的can節(jié)點模塊集成度高、性能穩(wěn)定,實時性好、軟件設(shè)計簡潔,在工業(yè)生產(chǎn)和儀器開發(fā)領(lǐng)域具有廣泛的應(yīng)用前景。本文給出的硬件和軟件設(shè)計方案均已通過實際測試,并成功運用于大洋協(xié)會“十五”攻關(guān)項目:小型底棲生物標本自動分離系統(tǒng)的通訊模式中。
評論