RS-232轉CAN通信適配卡設計
PIC16F877A單片機自帶有8路模擬通道,轉換精度為10位。本適配卡選擇RA0為模擬通道。板卡將A/D轉換后的數(shù)據通過CAN總線上傳給上位機。
1.4 數(shù)據流
2 系統(tǒng)軟件設計
軟件設計分為兩大塊:板卡底層軟件設計和PC機上串口操作軟件設計。板卡底層軟件設計主要是對PIC16F877A編程,用于把從PC機通過串口輸人給單片機的數(shù)據按照CAN協(xié)議幀結構進行打包處理,并操作CAN控制器把數(shù)據發(fā)送到CAN總線;把從CAN總線上輸入的數(shù)據轉換成串行數(shù)據輸出給PC機:PC機上串口操作軟件設計主要是對串口的操作和通過串口收發(fā)數(shù)據。
2.1單片機編程
開發(fā)工具使用的是MPLAB集成開發(fā)環(huán)境(IDE),它是綜合的編輯器、項目管理器和設計平臺,適用于使用Microchip的PICmicro系列單片機進行嵌入式設計的應用開發(fā);編程語言用的是C語言,將HITECH 公司的PICC編譯器直接掛接在MPLAB-IDE集成開發(fā)平臺下,實現(xiàn)一體化的編譯連接和原代碼調試。
CAN控制器SJA1000T片內有模式寄存器MOD、命令寄存器CMR、狀態(tài)寄存器SR、中斷寄存器IR、中斷使能寄存器IER、接收緩沖器RXB、發(fā)送緩沖器TXB、仲裁丟失捕捉寄存器ALC、錯誤代碼捕捉寄存器ECC、錯誤報警限額寄存器EWLR、錯誤計數(shù)寄存器ERR、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、總線時序寄存器BTR、輸出控制寄存器OCR和時鐘分頻寄存器CDR等,單片機就是通過讀寫這些寄存器來實現(xiàn)對SJA1000T的控制,從而實現(xiàn)CAN報文的接收和發(fā)送。文后給出CAN控制器SJA1000T初始化和接收子程序的流程圖。下面給出CAN初始化程序,其中WRCAN是自定義的一段對SJAIO00T寫數(shù)據的子程序。
2.2 串口操作程序設計
在各種開發(fā)工具中間,VC由于功能強大和靈活,所以本實驗系統(tǒng)使用VC作為開發(fā)工具。串口通訊目前流行的方法主要有3種:一是利用Microsoft提供的CMSCOMM控件進行通訊,通過插入ActiveX控件的方式實現(xiàn);二是利用WIN API函數(shù)進行編程,這種編程的難度較高,要掌握較多的API函數(shù);三是利用現(xiàn)在網絡上面提供的一些串口通訊控件進行編寫,比如CSerial類等。本程序采用WINAPI函數(shù)進行串口的開發(fā),程序在PC機上用來收發(fā)串口數(shù)據運行正確穩(wěn)定。
評論