基于CAN的程序下載器與通訊調(diào)試器設(shè)計(jì)
1.?引言
在電子產(chǎn)品的各種通訊方式中,CAN(Controller Area Network)總線以其高可靠性、實(shí)時(shí)性、傳輸距離遠(yuǎn)的特點(diǎn)得到廣泛的應(yīng)用,已經(jīng)成為許多高檔汽車(如奔馳、寶馬等)車電系統(tǒng)的總線標(biāo)準(zhǔn)。于是出現(xiàn)了許多內(nèi)部集成CAN控制器的單片機(jī),如Atmel公司的T89C51CC0X系列單片機(jī)就是其中性價(jià)比較高的一款,它具有豐富的內(nèi)部資源,支持CAN方式的在線編程。我們在使用此系列產(chǎn)品的過程中,針對其應(yīng)用普遍但編程器較少的特點(diǎn),開發(fā)了一款基于T89C51CC01CA芯片的CAN程序下載和CAN節(jié)點(diǎn)調(diào)試器,它既能對同類單片機(jī)進(jìn)行編程,又能通過CAN總線對具有CAN通訊功能的設(shè)備進(jìn)行調(diào)試。
2.?系統(tǒng)結(jié)構(gòu)框圖
2.1? 系統(tǒng)原理框圖。如圖1所示,PC機(jī)通過高速的USB方式或低速的UART方式連接到下載調(diào)試器上,下載調(diào)試器將PC的消息封裝成CAN命令幀的形式轉(zhuǎn)發(fā),完成下載功能或CAN節(jié)點(diǎn)調(diào)試功能。
?
2.2? 調(diào)試器框圖。如圖1所示,當(dāng)使用CAN調(diào)試器功能時(shí),在CAN總線上可以掛接多個(gè)設(shè)備。CAN調(diào)試器作為一個(gè)智能終端,參與總線的運(yùn)行。
2.3下載器原理框圖。如圖2所示,當(dāng)使用下載器功能時(shí),用戶可以選擇CAN下載方式或串口下載方式,但為了保證下載的正確性,每次只允許連接一個(gè)從設(shè)備。
?
圖2:下載器原理框圖
3.?下載調(diào)試器硬件及框圖
下載調(diào)試器連接PC機(jī)和CAN總線上的節(jié)點(diǎn),完成數(shù)據(jù)流格式的轉(zhuǎn)換,并且利用內(nèi)部的RAM空間對上/下行數(shù)據(jù)流的速度進(jìn)行緩沖匹配。整個(gè)硬件主要分成四個(gè)部分:主控器件、通訊轉(zhuǎn)換芯片、功能控制部分和電源部分。硬件框圖和電路圖分別為圖3和圖4。
?
3.1 主控器件
主控芯片為Atmel公司的T89C51CC01芯片,該芯片采用51內(nèi)核技術(shù),與其它單片機(jī)相比具有很多的優(yōu)勢:
??豐富的內(nèi)部資源: 32Kbytes 片內(nèi)Flash、 256bytes片內(nèi)RAM、 1Kbytes片內(nèi)XRAM、2Kbytes片內(nèi)EEPROM、2Kbytes片內(nèi)程序引導(dǎo)區(qū)、八通道10位AD等。
??內(nèi)部集成完全支持V2.0A/V2.0B標(biāo)準(zhǔn)的CAN控制器,該控制器具有15個(gè)獨(dú)立的郵箱,每個(gè)郵箱具有多種工作模式。消息的接收、發(fā)送、校驗(yàn)過程完全通過硬件來完成,不需要用戶的干預(yù)。
??片內(nèi)程序引導(dǎo)區(qū)支持ISP(In-Systerm Programming)和IAP(In-Application Programming)功能,使程序下載變得非常容易。
3.2 通訊轉(zhuǎn)換芯片
下載調(diào)試器與PC機(jī)的接口芯片為PL2303,它完全支持USB協(xié)議V1.1,能夠自動(dòng)完成USB數(shù)據(jù)格式和UART數(shù)據(jù)格式間的轉(zhuǎn)換。并且為了匹配兩種方式的速度,該芯片分別為上傳和下傳的數(shù)據(jù)流配置了256字節(jié)的RAM。CAN總線的驅(qū)動(dòng)芯片為ATA6660,它將TTL電平轉(zhuǎn)換為差分信號輸出,在通訊距離達(dá)到10km時(shí),傳輸速率仍可達(dá)到50kbit/s。
3.3 控制電路
控制電路主要有三個(gè)功能:下載器功能或調(diào)試器功能選擇,串口下載方式或CAN下載方式選擇,硬件復(fù)位條件控制。???????????
4.?編程器功能
4.1 編程對象
編程器的主要服務(wù)對象為一系列支持CAN下載或串口下載的器件,如T89C51CC01/02/03等。T89C51CC01在保留51系列并行下載方式的基礎(chǔ)上,又?jǐn)U展了串口UART或CAN 的ISP(在線)下載方式。 T89C51CC01有兩個(gè)系列,T89C51CC01UA芯片的程序引導(dǎo)區(qū)在生產(chǎn)時(shí)固化了UART引導(dǎo)程序,支持UART方式的在線下載功能;T89C51CC01CA芯片的程序引導(dǎo)區(qū)固化了CAN引導(dǎo)程序,支持CAN總線方式的在線下載功能。本文以CAN下載方式為例介紹下載原理。為了表達(dá)的方便,將用戶的PC機(jī)稱為主機(jī),被編程的器件稱為從機(jī)。
4.2? T89C51CC01CA芯片的程序引導(dǎo)區(qū)
T89C51CC01CA芯片內(nèi)部有2Kbytes的程序引導(dǎo)區(qū),分成3個(gè)部分:ISP通訊管理、函數(shù)調(diào)用管理、Flash存儲器管理?!癐SP通訊管理”部分管理從機(jī)引導(dǎo)程序區(qū)和編程器間的通訊,對編程器的串行數(shù)據(jù)流進(jìn)行解釋并轉(zhuǎn)換為對從機(jī)Flash存儲器的訪問;“函數(shù)調(diào)用管理”為IAP提供各種函數(shù);“Flash存儲器管理”執(zhí)行對從機(jī)Flash存儲器底層的讀、寫操作。
4.3 編程流程
從機(jī)中固化的驅(qū)動(dòng)程序遵守CAN2.0A標(biāo)準(zhǔn)幀協(xié)議格式,數(shù)據(jù)幀的11位標(biāo)識符用來對目標(biāo)器件和目標(biāo)器件的寄存器尋址。因此將標(biāo)識符的高8位作為基地址,用來區(qū)分不同的器件;將標(biāo)識符的低3位作為偏移地址,用來代表不同的命令。
編程器首先發(fā)送偏移地址為0的數(shù)據(jù)幀,進(jìn)行通訊初始;接著編程器發(fā)送偏移地址為1的數(shù)據(jù)幀,選擇編程區(qū)域(Flash或EEPROM),并設(shè)置編程的起始和結(jié)束位置;從機(jī)發(fā)回應(yīng)答消息后,編程器通過偏移地址為2的數(shù)據(jù)幀連續(xù)發(fā)送編程數(shù)據(jù);一個(gè)數(shù)據(jù)塊發(fā)送完畢后,編程器繼續(xù)選擇需要編程的區(qū)域,直到完成整個(gè)寫數(shù)據(jù)任務(wù);此后編程器發(fā)送偏移地址為3的數(shù)據(jù)幀讀取從機(jī)Flash或EEPROM中的數(shù)據(jù),完成數(shù)據(jù)校驗(yàn)的任務(wù)。編程器也可以發(fā)送偏移地址為4或5的數(shù)據(jù)幀對一些配置字節(jié)進(jìn)行修改。下載的流程圖如圖5:
?
??? 編程器使用FLIP軟件,這個(gè)軟件可以從Atmel公司的網(wǎng)站上免費(fèi)獲得。
5.CAN調(diào)試器功能
本設(shè)計(jì)的另一個(gè)重要功能是作為調(diào)試器使用,對具有CAN功能的節(jié)點(diǎn)進(jìn)行通訊調(diào)試。主機(jī)通過高速的USB口與調(diào)試器通訊,調(diào)試器將主機(jī)的數(shù)據(jù)流封裝成具有CAN2.0A或CAN2.0B格式的命令幀,再由CAN控制器發(fā)送到總線上;而接收到的報(bào)文經(jīng)過相反的數(shù)據(jù)轉(zhuǎn)換過程傳回到主機(jī)上。
主機(jī)的CAN調(diào)試界面用VB程序編寫的,分通用功能界面(圖6)和面向應(yīng)用的CAN總線調(diào)試界面(圖7)兩個(gè)部分。兩種功能的側(cè)重點(diǎn)不同,前一種主要用于節(jié)點(diǎn)的初期調(diào)試,重點(diǎn)在于實(shí)現(xiàn)節(jié)點(diǎn)間的通訊連接和節(jié)點(diǎn)狀態(tài)測試;后一種用于實(shí)現(xiàn)具體的任務(wù),重點(diǎn)在于節(jié)點(diǎn)間任務(wù)分配和全局時(shí)序響應(yīng)。兩個(gè)部分在功能上相互補(bǔ)充,滿足不同層次的需要。
5.1?? CAN總線調(diào)試器的通用功能界面設(shè)計(jì)
??? CAN總線調(diào)試器的通用功能用來監(jiān)測總線的狀態(tài)、測試新的命令和接收不同節(jié)點(diǎn)的消息幀。例如當(dāng)CAN總線上加入新的節(jié)點(diǎn)或總線出現(xiàn)故障時(shí),可以用這種方式進(jìn)行調(diào)試。如圖7所示,用戶根據(jù)具體的應(yīng)用要求任意設(shè)置CAN的幀結(jié)構(gòu)中的仲裁域、控制域和數(shù)據(jù)域中的所有位的值,發(fā)送各種命令幀;也可以加入報(bào)文過濾器,有選擇的接收相關(guān)的消息幀。
此種方式的主要功能為:
??改變IDE位的值,選擇發(fā)送標(biāo)準(zhǔn)幀或擴(kuò)展幀;
??改變仲裁域中基本ID和擴(kuò)展ID的值,將命令幀發(fā)送到CAN總線上的不同節(jié)點(diǎn);
??修改RTR位的值,選擇發(fā)送數(shù)據(jù)幀或遠(yuǎn)程幀;
??改變數(shù)據(jù)長度,發(fā)送不同長度的數(shù)據(jù)幀;
??改變通訊速率,測試通訊的可靠性,尋求速率和距離的最優(yōu)解決方案;
??改變報(bào)文過濾器的值,接收特定ID范圍內(nèi)的消息幀,并實(shí)時(shí)顯示;
??顯示各種狀態(tài)值,對總線的健康狀態(tài)進(jìn)行評估;
??將接收到的消息幀保存在用戶指定的文件中,方便對數(shù)據(jù)的后期的分析處理;?
5.2? 面向應(yīng)用的CAN總線調(diào)試器界面設(shè)計(jì)
該方式面向用戶的實(shí)際工程,根據(jù)任務(wù)的要求為CAN的幀結(jié)構(gòu)中的各種域賦予明確的意義,例如ID碼中就可以包含優(yōu)先級、源器件地址和目標(biāo)器件地址等。這種方式的重點(diǎn)是系統(tǒng)級任務(wù)的實(shí)現(xiàn),因此將調(diào)試器作為總線上的智能節(jié)點(diǎn),既能接收其它節(jié)點(diǎn)的報(bào)文,又能對其它節(jié)點(diǎn)發(fā)出命令,從而完全具備實(shí)際節(jié)點(diǎn)的所有功能,滿足整個(gè)系統(tǒng)的時(shí)序要求。
如圖8所示,為了使界面具有很好的可讀性,將復(fù)雜的CAN消息的數(shù)字表達(dá)方式文字化,即用戶對命令或報(bào)文過濾器內(nèi)容設(shè)置完成后,可以為命令或報(bào)文過濾器指定一個(gè)名字。各種報(bào)文的發(fā)送和接收都以用戶定義的文字來表示,程序自動(dòng)在文字與CAN的幀結(jié)構(gòu)間轉(zhuǎn)換,從而具有很好的可讀性。這種方式下的特點(diǎn)為:???
??系統(tǒng)配置文件的管理。每個(gè)工程的命令幀、報(bào)文過濾器的設(shè)置和接收的數(shù)據(jù)被保存在獨(dú)立的配置文件中,通過“文件”菜單可以打開、保存和關(guān)閉工程的配置文件,而且可以在編輯當(dāng)前工程配置文件的基礎(chǔ)上生成新工程的配置文件,簡化新工程的開發(fā)步驟。
??命令管理。在“發(fā)送命令”區(qū)顯示了已經(jīng)定義的命令,這些命令都以用戶定義的名字表示,可以通過命令按鈕添加、修改、刪除命令,進(jìn)行命令的后期維護(hù)。
??報(bào)文過濾。在“接收設(shè)置”區(qū)顯示了用戶可以接收的報(bào)文的ID,這些ID范圍之外的報(bào)文將被屏蔽。通過命令按鈕可以添加、修改、刪除ID,并且在設(shè)置接收過濾的時(shí)候,可以指定接到報(bào)文后系統(tǒng)自動(dòng)回復(fù)的消息內(nèi)容,增加了軟件的靈活性。
6.?結(jié)束語
本設(shè)計(jì)將編程器和CAN總線調(diào)試器集成到同一個(gè)器件中,開發(fā)了相應(yīng)的操作軟件,提高了器件的使用范圍和方便性。隨著CAN總線的廣泛應(yīng)用,以及CAN下載方式的推廣,這項(xiàng)技術(shù)也將得到進(jìn)一步推廣。
評論
查看更多