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