摘要:介紹了一種基於DSP的CAN控制器和USB晶片的USB總線和CAN總線的通信模塊的設計,提出了一種使用USB接口實現CAN總線網絡與計算機連接的方案。利用USB100晶片可在不了解任何USB協議的情況下,完成計算機RS 232串口升級為USB接口,同時CAN接口採用DSP片上CAN控制器,硬體設計極為簡單。在DSP的控制下,PC機與CAN節點可以雙向通信,通信波特率可高達1 Mb/s,傳輸數據穩定,可靠。實驗證明,運用TMS320F2812片上eCAN模塊來構成CAN總線通信系統更為簡單,實用。
0 引言
隨著計算機技術的飛速發展,全電子的計算機連鎖控制系統由上位機,聯鎖機和智能執行單元三層結構組成。本文所介紹的模塊正是在此背景下為數據通信進行服務的。CAN總線是目前為止唯一有國際標準的現場總線,由於採用了許多新技術及獨特的設計,與一般的通信總線相比,它的數據通信具有突出的可靠性,實時性和靈活性,其應用範圍目前已不再局限於最初的汽車行業,而擴展到了機械工業包括數控工具機,醫療器械,家用電器等領域。USB接口速度快、連線簡單和即插即用的特性是與上位機通訊非常好的外設接口。因此,基於USB接口實現CAN總線與PC機之間數據通信的研究具有一定的應用意義。
1 系統結構
本系統主要是由USB接口和CAN接口等模塊組成,其中微處理器TMS320F2812控制全局,實現通過USB接口將CAN總線數據傳送給PC機,以及通過USB接口將PC機數據傳送給CAN節點的雙向通信功能。傳統的CAN總線通信模塊一般要用到獨立的CAN控制器晶片,本系統微處理器F2812片上帶有eCAN模塊,設計時較為方便,下面簡要介紹eCAN模塊。
eCAN模塊是TMS320F2812 DSP片上的增強型CAN控制器,其性能較之已有的DSP內嵌CAN控制器有較大的提高,數據傳輸更加靈活方便,數據量更大、可靠性更高、功能更加完備。eCAN模塊它完全兼容CAN2.0B協議,可以在有幹擾的環境裡使用上述協議與其他控制器串行通信。除具有一般DSP內嵌CAN控制器的所有功能外,與TMS320LF240x系列DSP的CAN模塊相比,它主要具有如下的一些增強特性:增加了郵箱數量,多達32個;eCAN是一個32位的高級CAN控制器;具有時間標識;具有超時功能。
以上這些增強特性使得TMS320F2812進行CAN通信時,傳輸更加方便靈活、數據量更大、功能更完備。圖1為系統結構圖。
2 系統硬體設計
2.1 USB模塊的硬體設計
本系統USB接口模塊採用USB100模塊作為主控晶片。USB100模塊是USB通用設備接口晶片,具有8位數據總線接口,內部多達384 B的發送緩衝區和128 B的接收緩衝區,數據通信速率最高可達8 Mb/s,USB100模塊讀寫數據分別由RD和WR2個引腳控制,相當於有讀寫2個地址,因此將這兩個地址映射到F2812外設接口的區域xzcs01中,0x2000作為寫地址,0x4000作為讀地址,通過XA13,XA14,XZCS01,XWE,XRD5個管腳進行解碼,即可方便地控制USB模塊的數據收發。選用altera公司的CPLD晶片EPM7032作為解碼器件,可以進行在系統編程操作,其中上述5個管腳作為CPLD的輸入引腳,CPLD2個輸出引腳分別接至USB100模塊的RD和WR兩個引腳。由於USB100模塊是5 V供電,F2812是3.3 V供電,所以8位數據總線通過電平轉換器件741vc4245相連,數據方向由F2812的XR/W控制。根據USB100模塊時序圖,當F2812檢測到USB100模塊TXE引腳為低時,表示內部發送緩衝區允許發送數據到USB埠,可以將數據通過八位總線發給USB100模塊;當F2812檢測到USB100模塊RXF為低時,表示內部發送緩衝區有來自USB埠的數據。
2.2 eCAN模塊應用設計
由於採用TMS320F2812片上增強型控制器eCAN,所以CAN模塊硬體電路極為簡單,只需將F2812的RX和TX引腳經過電平轉換器件連接至CAN收發器PCA82C250的TXD和RXD引腳,並以F2812作為CAN總線系統的微處理器,進行實時數據收發。其硬體系統分為2層:第一層,CAN總線與F2812接口層;第二層,F2812與外圍器件的信息處理。CAN收發器採用低廉的PCA82C250,系統的擴展性強,至少可連接110個節點,其引腳8(Rs)用於選擇工作模式,高速工作時上接一個斜率電阻,根據總線通信速度可適當調整,一般在16~140 Kb/s之間。
3 系統軟體設計
3.1 DSP程序設計
本系統中,微處理器TMS320F2812主要完成2個功能:一是對eCAN控制器進行初始化;二是完成上位機USB接口和下位機CAN接口的數據通信。USB接口通信通過查詢USB100的TXE和RXF引腳的狀態來完成上位機與微處理器F2812的數據交換,CAN接口的通信主要包括eCAN模塊的消息發送和接收。
F2812上電復位後,必須對軟體進行初始化,其中最重要的是對eCAN模塊初始化。消息發送時,需要初始化發送郵箱,包括向寄存器CANME使能相應郵箱、設置CANMD方向、通過MBOXn.MSGID(n=O~31)設置發送郵箱的ID等操作,初始化後向消息數據寄存器ECanaMboxes.Mboxn.MDR寫入上位機USB接口發送的數據,然後設置EcanaRegs.CANTRS.bit.TRSn為1請求發送消息,等待傳輸響應位TA=1,表示消息成功發送,並產生發送中斷,本系統通過發送中斷子程序統計發送消息個數。消息接收時,同樣需要初始化相應的接收郵箱,完成初始化後,當下位機通過CAN接口發送數據時,如果eCAN模塊的接收郵箱的ID與下位機消息的ID匹配,並成功接收,則相應的接收消息掛起寄存器(CANRMP)的相應位被置1;若CPU開放了eCAN接收中斷,則同時也產生接收消息中斷,在接收中斷子程序,可以將相應的消息數據寄存器的內容發給USB100模塊的寫地址,同時需要查詢USB100的TXE端是否允許向USB埠發送數據。