摘要:介紹了一種基于DSP的CAN控制器和USB芯片的USB總線和CAN總線的通信模塊的設計,提出了一種使用USB接口實現CAN總線網絡與計算機連接的方案。利用USB100芯片可在不了解任何USB協議的情況下,完成計算機RS 232串口升級為USB接口,同時CAN接口采用DSP片上CAN控制器,硬件設計極為簡單。在DSP的控制下,PC機與CAN節點可以雙向通信,通信波特率可高達1 Mb/s,傳輸數據穩定,可靠。實驗證明,運用TMS320F2812片上eCAN模塊來構成CAN總線通信系統更為簡單,實用。
關鍵詞:USB;CAN總線;eCAN;TMS320F2812
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端口發送數據。
上位機通過USB接口發送數據,下位機通過CAN接口接收數據基本步驟為:
(1)F2812初始化通用IO口以及eCAN控制器;
(2)F2812檢測USB模塊是否有來自上位機的數據;
(3)若有,將數據讀入配置好的eCAN發送郵箱;
(4)啟動配置好的eCAN發送郵箱;
(5)當郵箱發送消息給下位機成功后,會進入eCAN發送中斷程序;
(6)清除相應標志后退出中斷程序,繼續等待上位機發送數據。
上位機通過USB接口接收數據,下位機通過CAN接口發送數據基本步驟為:
(1)F2812初始化通用IO口以及eCAN控制器;
(2)當下位機通過CAN接口發送數據時,根據郵箱標識符,已配置好的eCAN接收郵箱收到下位機數據,同時進入eCAN接收中斷子程序;
(3)F2812檢測USB模塊內部緩沖區是否允許向上位機發送數據,若禁止,則等待;
(4)若允許向上位機發送數據,則將數據寫入上位機;
(5)清除相應標志后退出中斷程序,繼續等待下位機發送數據。圖2為系統軟件流程圖。
3.2 上位機軟件編寫
采用NI公司的LABWINDOWS/CVI8.0進行上位機控制界面設計,實現通過PC機發送和接收CAN總線系統的數據的功能。
由于USB100模塊將USB接口虛擬成了RS 232標準的串口,程序要實現的任務是調用WINDOWS下串口函數,使得用戶在CVI的界面下完成PC機數據的收發。該系統與PC機之間的通信主要通過調用LABWINDOWS/CVI函數庫中提供的RS 232函數庫,這幾個函數在設計驅動程序中具體實現。主要的函數有:配置串口函數:int OpenComConfig(int COMPort,char deviceName[],long baudRate,int parity,int dataBits,int stopBits,int inputQueueSize,int outputQueueSize);將字節寫入指定端口函數:int ComWrt(int COMPort,char buffer[],int count);從指定端口讀入字節函數:int ComRd(int COMPort,char buffer[],int count);在PC機上通過相應控件啟動相應端口函數,使得數據通過USB接口發送。
4 通信測試
系統測試時,利用CAN調試器作為一個CAN節點,并利用調試器自帶的調試軟件在下位機上顯示。
首先,進行上位機通過USB接口發送數據,下位機通過CAN接口接收數據實驗,CAN節點設置為擴展幀,幀格式為數據幀,幀ID為0x000000 82,下位機CAN調試軟件以十六進制接收數據,發送的是字符‘1’、‘2’、‘3’、‘4’、‘5’,下位機接收到的是對應的ASCII碼值0x31~0x35,以十六進制顯示。
然后,進行下位機通過CAN接口發送數據,上位機通過USB口接收數據實驗,CAN節點設置不變,發送的數據是0x31~0x35五個數據,上位機收到的是‘1’~‘5’五個字符。具體測試界面見圖3和圖4。
5 結語
設計了一套USB-CAN總線通信模塊,其中CAN控制器特別的使用了F2812內嵌eCAN模塊,在實際應用中,該通信部分能有效,及時的與系統其他節點進行通信,較為有效地將DSP的高速處理能力和CAN總線的優良特性結合起來,并且硬件電路設計更為簡單實用,采用C語言編程,提高了程序的可維護性,大大縮短了研發周期。