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