新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > dsPIC3F3013的CAN總線數據采集系統

        dsPIC3F3013的CAN總線數據采集系統

        作者: 時間:2011-05-21 來源:網絡 收藏

        接口電路如圖3所示。

          

          CAN協議控制器采用Microchip公司生產的是帶有SPI接口的獨立CAN控制器,它完全支持CAN V2.0B技術規范,通信速率為1 Mb/s,包括2個接收緩沖器、6個29位驗收濾波寄存器、2個29位驗收屏蔽寄存器、3個具有優先級設定及發送中止的發送緩沖器、高速SPI接口(10 MHz)。

          與MCU的接口可以靈活配置。可通過引腳(如TXORTS)與MCU的數字I/O腳直接相連,利用數字I/O的讀寫功能控制MCP2515 的狀態;也可以直接使用MCP2515的SPI指令集來實現所有的功能。用于控制MCP2515的SPI指令集如表1所列。

          

          dsPIC30F3013通過SPI接口與MCP2515進行通信,dsPIC30F3013的SPI模塊工作在主控模式,MCP2515工作在從動模式。dsPIC30F3013通過調用SPI指令來訪問MCP2515的內部寄存器。

          MCP2551是一個可容錯的高速CAN收發器,它完全符合ISO-11898標準,包括能滿足24 V電壓要求。它的工作速率可高達1 Mb/s。

          2 軟件設計

          dsPIC30F3013作為控制核心,它承擔著處理和CAN通信的任務。部分的工作流程如圖4所示。

          

          dsPIC30F3013的12位ADC模塊包含一塊ADCBUFO至ADCBUFF的16字雙口只讀緩沖區,對ADC轉換結果進行緩沖。本應用采樣3路信號,并用掃描輸入,經過12次ADC轉換后,每次轉換的數據依次寫入ADCBUF0至ADCBUFB。即代號為0、3、6、9的AD-CBUF中存放的是同一個信號的不同時間的采樣值,將這4個緩沖器的結果相加,然后再右移2位,即可實現該信號的4次平均值數字濾波。其他兩個信號存放在與之相關的 ADCBUF中,處理方法與此相同。

          MCP2515的SPI接口支持0,0和1,1運行模式。外部數據和命令通過SI引腳傳送到器件中,且數據在SCK時鐘信號的上升沿傳送進去,在SCK的下降沿通過SO引腳傳送出去。CS片選引腳設置為低電平后,MCP2515希望收到的第一個字節是指令/命令字節,這就要求在調用一個命令時,要先把CS 引腳拉升為高電平然后再降低為低電平。使用裝載TX緩沖器指令,取消了一般寫命令所需的8位地址,只需選擇地址指針設置的6個地址之一,便可快速地將數據寫入發送緩沖器。

          下面以MCP2515的裝載TX緩沖器為例來說明數據的發送過程。裝載TX緩沖器的時序如圖5所示。本應用有3路信號,每一路信號都要求精確到小數點后2 位,所以經過處理后的數據格式使用浮點型。一個浮點數需要占用4字節,為了使監控中心易于管理,用包含4字節數據長度的標準數據幀來發送數據。現以裝載 TX緩沖器0為例說明一次數據發送操作,如圖6所示。

          

          dsPIC30F3013的SPI模塊在數據發送和接收時有8位和16位兩種工作模式可選。MCP2515的SPI指令、內部寄存器地址及數據都是8位的,所以在初始化SPI模塊時,清零MODE16(SPI1CON10>),將通信數據配置為8位寬度。

          結 語

          本文介紹了一種以Microchip公司dsPIC30F3013為控制核心,以MCP2515為CAN控制器和以MCP2551作為CAN收發器的系統。該系統與傳感器組成一個CAN節點,有效地改善了工控系統中監控部分線路布局范圍廣、布線凌亂、抗干擾能力差的現狀,同時,使整個監控系統更易于擴展。實踐證明,這種設計是可靠的、高性能的。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 将乐县| 石楼县| 双辽市| 胶州市| 阿拉尔市| 福清市| 武乡县| 阳信县| 广水市| 宣恩县| 彰武县| 介休市| 武定县| 武宣县| 东海县| 巴彦淖尔市| 克东县| 斗六市| 綦江县| 景德镇市| 台山市| 平阳县| 永仁县| 应用必备| 儋州市| 子洲县| 鱼台县| 色达县| 新乐市| 扬州市| 孟津县| 韶关市| 楚雄市| 青神县| 宽甸| 鸡泽县| 塘沽区| 银川市| 万盛区| 郯城县| 吉木乃县|