基于DSPIC30F3013的CAN總線數(shù)據(jù)采集系統(tǒng)方案
MCP2515與MCU的接口可以靈活配置??赏ㄟ^引腳(如TXORTS)與MCU的數(shù)字I/O腳直接相連,利用數(shù)字I/O的讀寫功能控制MCP2515的狀態(tài);也可以直接使用MCP2515的SPI指令集來實現(xiàn)所有的功能。用于控制MCP2515的SPI指令集如表1所列。
dsPIC30F3013通過SPI接口與MCP2515進行通信,dsPIC30F3013的SPI模塊工作在主控模式,MCP2515工作在從動模式。dsPIC30F3013通過調(diào)用SPI指令來訪問MCP2515的內(nèi)部寄存器。
MCP2551是一個可容錯的高速CAN收發(fā)器,它完全符合ISO-11898標準,包括能滿足24 V電壓要求。它的工作速率可高達1 Mb/s。
2 軟件設(shè)計
dsPIC30F3013作為控制核心,它承擔(dān)著數(shù)據(jù)采集處理和CAN通信的任務(wù)。數(shù)據(jù)采集部分的工作流程如圖4所示。
dsPIC30F3013的12位ADC模塊包含一塊ADCBUFO至ADCBUFF的16字雙口只讀緩沖區(qū),對ADC轉(zhuǎn)換結(jié)果進行緩沖。本應(yīng)用采樣3路信號,并用掃描輸入,經(jīng)過12次ADC轉(zhuǎn)換后,每次轉(zhuǎn)換的數(shù)據(jù)依次寫入ADCBUF0至ADCBUFB。即代號為0、3、6、9的AD-CBUF中存放的是同一個信號的不同時間的采樣值,將這4個緩沖器的結(jié)果相加,然后再右移2位,即可實現(xiàn)該信號的4次平均值數(shù)字濾波。其他兩個信號存放在與之相關(guān)的ADCBUF中,處理方法與此相同。
MCP2515的SPI接口支持0,0和1,1運行模式。外部數(shù)據(jù)和命令通過SI引腳傳送到器件中,且數(shù)據(jù)在SCK時鐘信號的上升沿傳送進去,在SCK的下降沿通過SO引腳傳送出去。CS片選引腳設(shè)置為低電平后,MCP2515希望收到的第一個字節(jié)是指令/命令字節(jié),這就要求在調(diào)用一個命令時,要先把CS引腳拉升為高電平然后再降低為低電平。使用裝載TX緩沖器指令,取消了一般寫命令所需的8位地址,只需選擇地址指針設(shè)置的6個地址之一,便可快速地將數(shù)據(jù)寫入發(fā)送緩沖器。
下面以MCP2515的裝載TX緩沖器為例來說明數(shù)據(jù)的發(fā)送過程。裝載TX緩沖器的時序如圖5所示。本應(yīng)用有3路信號,每一路信號都要求精確到小數(shù)點后2位,所以經(jīng)過處理后的數(shù)據(jù)格式使用浮點型。一個浮點數(shù)需要占用4字節(jié),為了使監(jiān)控中心易于管理,用包含4字節(jié)數(shù)據(jù)長度的標準數(shù)據(jù)幀來發(fā)送數(shù)據(jù)?,F(xiàn)以裝載TX緩沖器0為例說明一次數(shù)據(jù)發(fā)送操作,如圖6所示。
dsPIC30F3013的SPI模塊在數(shù)據(jù)發(fā)送和接收時有8位和16位兩種工作模式可選。MCP2515的SPI指令、內(nèi)部寄存器地址及數(shù)據(jù)都是8位的,所以在初始化SPI模塊時,清零MODE16(SPI1CON《10》),將通信數(shù)據(jù)配置為8位寬度。
結(jié)語
本文介紹了一種以Microchip公司dsPIC30F3013為控制核心,以MCP2515為CAN控制器和以MCP2551作為CAN收發(fā)器的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)與傳感器組成一個CAN節(jié)點,有效地改善了工控系統(tǒng)中監(jiān)控部分線路布局范圍廣、布線凌亂、抗干擾能力差的現(xiàn)狀,同時,使整個監(jiān)控系統(tǒng)更易于擴展。實踐證明,這種設(shè)計是可靠的、高性能的
評論