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