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