基于USB接口的ISP下載系統(tǒng)設計
1 引言
ISP(In-System Programming)在系統(tǒng)編程,通過下載電纜直接對安裝在用戶目標板上的器件編程,給電子產品的設計和生產帶來許多革命性的變化。目前,比較成熟的ISP下載器大多是基于串口或者并口通信的,但是也存在著以下問題:
(1)用戶PC機的主頻、硬件和操作系統(tǒng)不同,可能會造成控制信號錯誤;www.51kaifa.com
(2)不同的廠商提供不同的ISP下載器,互不兼容,給嵌入式開發(fā)帶來不便;
(3)限于串、并口的通信協(xié)議,ISP數據傳輸速率較低,影響嵌入式產品的開發(fā)。
基于以上原因,本文提出了一種將單片機和USB總線相結合,進行ISP下載的方法,經過實際應用,取得了較好的效果。
2 系統(tǒng)設計
本系統(tǒng)分為硬件和軟件兩部分,硬件平臺主要由USB接口和單片機控制模塊組成,完成對PC機通信和對目標芯片ISP編程。軟件面向用戶設計,由用戶選擇要下載的、已經編譯成Hex文件格式的代碼文件,然后向目標芯片下載程序代碼,同時可以檢測目標芯片型號、擦除目標芯片、從目標芯片讀出程序代碼等。整體框架如圖1所示。www.51kaifa.com
圖1 系統(tǒng)框架圖
2.1 硬件系統(tǒng)設計
硬件是整個系統(tǒng)的基礎,是完成各個功能的物理平臺。硬件部分主要完成USB通信和ISP下載。采用USB接口芯片與單片機相結合,USB接口芯片已經封裝好USB1.1協(xié)議,使用單片機控制對目標芯片ISP下載操作,硬件模塊關系如圖2所示。
圖2 硬件模塊關系圖
本設計通過USB接口與PC機通信,微控制器接收完數據后,使用ISP方式下載到目的芯片中,故在硬件上采用ATMEL公司的51系列單片機AT89S52作為本設計的嵌入式微控制器,采用PHILIP公司的PDIUSB12作為USB設備接口器件。
2.1.1 PDIUSB12設計
PDIUSBD12 PDIUSB12是PHILIPS公司生產的一種USB接口芯片,完全封裝USB1.1協(xié)議,是一款性價比很高的USB 器件。它通常用作微控制器系統(tǒng)中實現與微控制器進行通信的高速通用并行接口,支持本地的DMA 傳輸。PDIUSBD12 完全符合USB1.1 版的規(guī)范。PDIUSBD12 所具有的低掛起功耗連同LazyClock 輸出,可以滿足使用ACPI、OnNOW 和USB 電源管理的要求,其低的操作功耗可以應用于使用總線供電的外設。其電路設計原理圖如圖3所示。
圖3 PDIUSB12電路
該電路設計分析如下:
(1)PDIUSB12的時鐘源頻率為6MHz;
(2)D0~D7分別與MCU的P0.0~P0.7相連;
(3)D12的A0引腳通過10K的電阻與地相連;
(4)D12的ALE引腳與MCU的ALE引腳相連;
(5)GL_N通過一個電阻和紅色LED串聯(lián)到VCC;www.51kaifa.com
(6)DMACK_N和EOT_N通過電阻上拉到VCC。
2.1.2 MCU設計
本設計中的MCU采用ATMEL公司的AT89S52單片機,主要用于USB通信和ISP下載。其硬件原理圖如圖4所示。
圖4 MCU硬件原理圖
上圖中,電路配置描述如下:
(1)MCU采用24MHz晶振;
(2)數據總線P0端口接上拉電阻,P0.0~P0.7與PDIUSB12芯片的D0~D7相連。MCU
的地址鎖存引腳ALE與PDIUSB12的ALE引腳相連,端口P0作地址/數據總線復用;
(3)功能引腳P3.6、P3.7與PDIUSB12的WR_N和RD_N相連,控制PDIUSB12的讀
寫信號;
(4)MCU的P2.1引腳、P2.2引腳和P2.3引腳分別與PDIUSB12的片選引腳CS_N、掛起狀態(tài)引腳SUSPEND和復位引腳RESET_N相連接,作為相應的功能控制。
2.2 軟件設計
本設計的軟件主要分為兩個部分:單片機上的控制系統(tǒng)設計和PC機上的應用程序設計。單片機控制系統(tǒng)負責與PC機通信和對目標芯片ISP編程,PC機上的應用程序包括USB的驅動程序和ISP下載控制軟件。
2.2.1 單片機控制系統(tǒng)
單片機控制系統(tǒng)是核心內容,處理與計算機進行USB通信、數據處理和對目標芯片ISP下載代碼。將PDIUSB12設計成完全的中斷驅動,當MCU處理前臺任務時,USB的傳輸可
以在后臺進行,這就確保了最佳的傳輸速率和更好的軟件結構,同時簡化了編程和調試。
MCU一旦上電就初始化其所有端口、存儲區(qū)、定時器和中斷服務程序。之后MCU將重新連接USB,包括將Soft_Connect寄存器設置為 ON。主機通過設備的上拉電阻產生的信號變化來檢測新的設備連接。因為這些過程確保了在MCU準備好提供服務之前PDIUSB12不會進行操作。設備上電后,主機通過設備的上拉電阻產生的信號變化來檢測新的設備連接。PDIUSB12片內有1.5kΩ的Soft Connect上拉電阻,默認狀態(tài)下不與VCC相連,允許系統(tǒng)微控制器來決定與USB建立連接的時間。
單片機控制系統(tǒng)的設計目標就是使PDIUSB12在USB上達到最大的傳輸速率,使更多的時間留給ISP控制處理程序處理ISP請求。將USB通信處理設計成完全的中斷驅動。當CPU處理前臺任務時,USB的傳輸可在后臺進行,這就確保了最佳的傳輸速率和更好的軟件結構,同時簡化了編程和調試。前后臺任務處理關系如圖5所示。
圖5 前后臺任務處理關系圖
整個系統(tǒng)程序設計采用模塊化設計思想。為了使軟件可移植性強、易維護,采用分層
的方法來編寫PDIUSB12的驅動程序和ISP下載程序。
2.2.2 PC機ISP下載軟件設計
PC機ISP下載軟件是面向用戶的一個接口,它向用戶提供讀目標芯片廠商號,讀目標芯片型號,寫目標芯片Flash,讀目標芯片Flash和擦除目標芯片Flash等ISP編程操作。因為所有ISP操作都在單片機控制系統(tǒng)中實現,所以PC機ISP下載軟件僅是通過USB接口向單片機發(fā)送ISP編程指令和代碼數據,同時接收并顯示單片機反饋回的信息。
實現USB通信的功能函數包括ReadData和WriteData兩個函數。
(1)ReadData函數
int __stdcall ReadData(int pipenum,unsigned char *recbuffer,int len,int waittime=-1)
其中參數pipenum表示要操作的管道號,可以為0、2、4,分別對應端點0、1、2;參數recbuffer表示接收數據緩沖區(qū);len為接收緩沖區(qū)長度,而且必須為要接收數據的真實長度,但最大長度為1024;waittime表示超時時間,單位為毫秒。
(2)WriteData函數
int __stdcall WriteData(int pipenum,unsigned char *sendbuffer,int len,int waittime=-1)
其中參數pipenum表示要操作的管道號,可以為1、3、5,分別對應端點0、1、2;參數recbuffer表示發(fā)送數據緩沖區(qū);len為發(fā)送緩沖區(qū)長度,而且必須為要發(fā)送數據的真實長度,但最大長度為1024;waittime表示超時時間,單位為毫秒。
3 應用與測試
使用USB Analyser分析USB-bus1.1分析儀采集的數據,當本設計與PC連接時,主機檢測到新設備,并提示安裝驅動程序,安裝完驅動程序后,PC機開始枚舉USB設備。PC
機根據讀取得USB設備描述符配置設備,此時,USB設備枚舉成功,進入掛起狀態(tài),本設備已經被PC機識別,如圖6所示,USB接口測試成功。
圖6 PC機識別出本設計
將USB-ISP單片機開發(fā)與教學實驗板與PC機相連接,在PC機運行USB調試助手,通過USB調試助手與本設計進行數據通信,在PC機上運行ISP控制軟件,測試檢測連接功能、擦除Flash功能、下載功能和讀取Flash功能能夠較好的實現。
4 結論
本文作者創(chuàng)新點:設計了一種單片機(MCU)控制、基于USB接口通信的通用智能型ISP下載器。由于ISP下載系統(tǒng)使用USB接口,PC機主機不直接操縱編程器的硬件電路,而是向內置單片機發(fā)以命令的形式間接控制下載器工作,避免PC機軟件受病毒侵害出現錯誤、聯(lián)機電纜接觸不良、外界電磁干擾等原因造成控制錯誤,整個設計顯得靈活、方便。
參考文獻
[1]胡曉軍.USB接口開發(fā)技術[M].西安:西安電子科技大學出版社.2005
[2]任衛(wèi)華、葉明.基于PDIUSB12芯片的USB接口實現方案[J].國外電子元器件.2005
[3]USB Interface Association Descriptor Device Class Code and Use Model, http://www.usb.org.
[4]王志強等. USB設備驅動程序開發(fā)技術研究[J].微計算機信息,2006,2:257-260www.
評論