基于CAN的程序下載器與通訊調試器設計
在電子產(chǎn)品的各種通訊方式中,CAN(Controller Area Network)總線以其高可靠性、實時性、傳輸距離遠的特點得到廣泛的應用,已經(jīng)成為許多高檔汽車(如奔馳、寶馬等)車電系統(tǒng)的總線標準。于是出現(xiàn)了許多內部集成CAN控制器的單片機,如Atmel公司的T89C51CC0X系列單片機就是其中性價比較高的一款,它具有豐富的內部資源,支持CAN方式的在線編程。我們在使用此系列產(chǎn)品的過程中,針對其應用普遍但編程器較少的特點,開發(fā)了一款基于T89C51CC01CA芯片的CAN程序下載和CAN節(jié)點調試器,它既能對同類單片機進行編程,又能通過CAN總線對具有CAN通訊功能的設備進行調試。
2.系統(tǒng)結構框圖
2.1 系統(tǒng)原理框圖。如圖1所示,PC機通過高速的USB方式或低速的UART方式連接到下載調試器上,下載調試器將PC的消息封裝成CAN命令幀的形式轉發(fā),完成下載功能或CAN節(jié)點調試功能。
2.2 調試器框圖。如圖1所示,當使用CAN調試器功能時,在CAN總線上可以掛接多個設備。CAN調試器作為一個智能終端,參與總線的運行。
2.3下載器原理框圖。如圖2所示,當使用下載器功能時,用戶可以選擇CAN下載方式或串口下載方式,但為了保證下載的正確性,每次只允許連接一個從設備。
圖2:下載器原理框圖
3.下載調試器硬件及框圖
下載調試器連接PC機和CAN總線上的節(jié)點,完成數(shù)據(jù)流格式的轉換,并且利用內部的RAM空間對上/下行數(shù)據(jù)流的速度進行緩沖匹配。整個硬件主要分成四個部分:主控器件、通訊轉換芯片、功能控制部分和電源部分。硬件框圖和電路圖分別為圖3和圖4。
3.1 主控器件
主控芯片為Atmel公司的T89C51CC01芯片,該芯片采用51內核技術,與其它單片機相比具有很多的優(yōu)勢:
豐富的內部資源: 32Kbytes 片內Flash、 256bytes片內RAM、 1Kbytes片內XRAM、2Kbytes片內EEPROM、2Kbytes片內程序引導區(qū)、八通道10位AD等。
內部集成完全支持V2.0A/V2.0B標準的CAN控制器,該控制器具有15個獨立的郵箱,每個郵箱具有多種工作模式。消息的接收、發(fā)送、校驗過程完全通過硬件來完成,不需要用戶的干預。
片內程序引導區(qū)支持ISP(In-Systerm Programming)和IAP(In-Application Programming)功能,使程序下載變得非常容易。
3.2 通訊轉換芯片
下載調試器與PC機的接口芯片為PL2303,它完全支持USB協(xié)議V1.1,能夠自動完成USB數(shù)據(jù)格式和UART數(shù)據(jù)格式間的轉換。并且為了匹配兩種方式的速度,該芯片分別為上傳和下傳的數(shù)據(jù)流配置了256字節(jié)的RAM。CAN總線的驅動芯片為ATA6660,它將TTL電平轉換為差分信號輸出,在通訊距離達到10km時,傳輸速率仍可達到50kbit/s。
3.3 控制電路
控制電路主要有三個功能:下載器功能或調試器功能選擇,串口下載方式或CAN下載方式選擇,硬件復位條件控制。
4.編程器功能
4.1 編程對象
編程器的主要服務對象為一系列支持CAN下載或串口下載的器件,如T89C51CC01/02/03等。T89C51CC01在保留51系列并行下載方式的基礎上,又擴展了串口UART或CAN 的ISP(在線)下載方式。 T89C51CC01有兩個系列,T89C51CC01UA芯片的程序引導區(qū)在生產(chǎn)時固化了UART引導程序,支持UART方式的在線下載功能;T89C51CC01CA芯片的程序引導區(qū)固化了CAN引導程序,支持CAN總線方式的在線下載功能。本文以CAN下載方式為例介紹下載原理。為了表達的方便,將用戶的PC機稱為主機,被編程的器件稱為從機。
4.2 T89C51CC01CA芯片的程序引導區(qū)
T89C51CC01CA芯片內部有2Kbytes的程序引導區(qū),分成3個部分:ISP通訊管理、函數(shù)調用管理、Flash存儲器管理。“ISP通訊管理”部分管理從機引導程序區(qū)和編程器間的通訊,對編程器的串行數(shù)據(jù)流進行解釋并轉換為對從機Flash存儲器的訪問;“函數(shù)調用管理”為IAP提供各種函數(shù);“Flash存儲器管理”執(zhí)行對從機Flash存儲器底層的讀、寫操作。
4.3 編程流程
從機中固化的驅動程序遵守CAN2.0A標準幀協(xié)議格式,數(shù)據(jù)幀的11位標識符用來對目標器件和目標器件的寄存器尋址。因此將標識符的高8位作為基地址,用來區(qū)分不同的器件;將標識符的低3位作為偏移地址,用來代表不同的命令。
評論