基于68MC376的ISP實(shí)現(xiàn)方法
出處:by2hit.amo 發(fā)布于:2007-04-28 11:08:02
關(guān)鍵詞:單片機(jī);ISP
引言
目前,在汽車電子中有很多常用的單片機(jī),如Motorola 68MC376等,它們在硬件上并不直接支持ISP,從而在應(yīng)用中造成一定程度的不便。本文研究的目的即是在Motorola 68MC376單片機(jī)上通過相關(guān)的硬件設(shè)計(jì)和軟件設(shè)計(jì)實(shí)現(xiàn)ISP,使其同樣具有在系統(tǒng)編程的能力。
系統(tǒng)設(shè)計(jì)
總體設(shè)計(jì)和難點(diǎn)
讓Motorola 68MC376單片機(jī)具有ISP能力,需要有專門的硬件支持以及上位機(jī)和下位機(jī)的軟件支持??傮wISP設(shè)計(jì)框圖如圖1所示。
由圖1可知,本設(shè)計(jì)所使用的ISP方法是從上位機(jī)讀取編程字節(jié),通過串口傳輸?shù)较挛粰C(jī),并且通過下位機(jī)程序?qū)⒕幊套止?jié)寫到下位機(jī)的可擦寫存儲器中。
這樣一個設(shè)計(jì)存在兩個難點(diǎn)。首先,由于硬件68MC376并不具備內(nèi)部的ROM,所以必須使用合適的Flash存儲器搭建存儲器擴(kuò)展電路,才能實(shí)現(xiàn)存放應(yīng)用程序的目的,為ISP提供基本的硬件基礎(chǔ)。其次,由于ISP的下位機(jī)應(yīng)用程序均存在于的Flash中,即在讀取自身程序的同時對自身進(jìn)行擦寫等操作,這顯然是不可能的,必須使用其他的獨(dú)特方法才能實(shí)現(xiàn)下位機(jī)的軟件編程操作。
硬件設(shè)計(jì)
為了使68MC376具有ISP能力,首先需要圍繞該芯片設(shè)計(jì)Flash ROM擴(kuò)展電路硬件和串口的收發(fā)電路。
圖2中包括兩部分電路的設(shè)計(jì),即Flash擴(kuò)展電路的設(shè)計(jì)和串口設(shè)計(jì)。
Flash擴(kuò)展電路主要包括地址總線(ADDRESS)、數(shù)據(jù)總線(DADA BUS)以及讀寫和片選信號的連接。由于68MC376外部數(shù)據(jù)總線為16位,故選擇兩片AM29F040作為外部擴(kuò)展Flash。該Flash芯片單片容量為4Mbit,所以擴(kuò)展的只讀存儲器共計(jì)1Mbyte。
由于使用68MC376的CSBOOT連接了兩片F(xiàn)lash的片選端,所以圖2所連接的Flash ROM可以實(shí)現(xiàn)硬件自啟動功能。為實(shí)現(xiàn)此功能,需要對其物理地址進(jìn)行配置。在本設(shè)計(jì)中,F(xiàn)lash的地址被配置在0x80000的位置。
圖2中的串口電路為使用了光電隔離措施的串口驅(qū)動電路。由于該電路可能工作在電磁兼容環(huán)境比較惡劣的場合,所以使用6N137設(shè)計(jì)光隔電路,以免外界干擾對單片機(jī)產(chǎn)生影響。
軟件設(shè)計(jì)
軟件設(shè)計(jì)主要包括上位機(jī)軟件設(shè)計(jì)和下位機(jī)軟件設(shè)計(jì),二者需要遵循同樣的協(xié)議,相互配合工作。
圖3描述了在系統(tǒng)編程時上位機(jī)和下位機(jī)的配合流程。通常在下位應(yīng)用程序中,該部分在系統(tǒng)編程的代碼處于休眠狀態(tài),當(dāng)串口接收到編程請求時,該部分代碼才被激活并產(chǎn)生相應(yīng)的效果。該流程中設(shè)計(jì)了一個編程開鎖的握手過程,這是為了防止誤操作,從而保證下位機(jī)在系統(tǒng)編程的代碼不會被意外的激活。
下位機(jī)軟件
圖3中下位機(jī)編程初始化部分主要完成Flash讀寫允許、信號串口波特率的重新定義、RAM配置以及ISP代碼拷貝等任務(wù)。為了提高ISP速度,通常將串口波特率設(shè)為57600bit/s。RAM使用單片機(jī)內(nèi)部的TPURAM,并將其配置在從0x10000開始的地址上。
圖3下位機(jī)流程中被框起的是一個特殊的部分。通常下位機(jī)的應(yīng)用程序都是在ROM里執(zhí)行的。但是由于在ISP過程中,系統(tǒng)不可能一邊從Flash ROM讀取指令,一邊對Flash ROM進(jìn)行擦寫操作,所以這里采用了特殊的子函數(shù)映射的方法完成這一功能,即在源代碼設(shè)計(jì)中,所有的ISP子函數(shù)均是通過計(jì)算相對地址得到運(yùn)行的(見圖4)。
系統(tǒng)從Flash ROM啟動后,位于地址0x81000處有一段代碼具有ISP的串口讀數(shù)功能,則在實(shí)際執(zhí)行時先要將這段代碼拷貝到地址0x10000,然后跳轉(zhuǎn)至映射的地址并執(zhí)行相應(yīng)的指令。下面一段源代碼為串口接收(sci_receive)的源程序例。
MOVE.L #FlashBaseAddr,D0;
file://得到ISP代碼在Flash中的基地址
MOVE.L #sci_receive,A0;
file://得到sci_receive子函數(shù)的實(shí)際地址
SUB.L D0,A0;
file://二者相減得到基地址偏移量
ADD.L RAMBaseAddr,A0;
file://加上RAM基地址,得到RAM中//sci_receive的映射地址
JSR (A0);
file://跳往映射地址處執(zhí)行
上位機(jī)解碼工作
上位機(jī)軟件設(shè)計(jì)中,比較重要的一部分是SX文件的解碼工作。
SX文件一般以S0行標(biāo)志文件代碼部分開始,S9行表示文件代碼部分結(jié)束。中間部分一般以S1、S2或者S3開頭,表示不同的尋址范圍。
以S20C08000000002000000 852145D為例,該部分代碼為24位尋址(即地址為3個字節(jié))。具體地址為0x0C0800,后面除了一個字節(jié)以外均為實(shí)際二進(jìn)制代碼的字符表達(dá)形式,一個字節(jié)5D為該行的校驗(yàn)碼。
該代碼需要通過重新編碼后方可被單片機(jī)直接使用??紤]到單片機(jī)的運(yùn)算速度遠(yuǎn)不如上位機(jī)PC,所以這部分工作由上位機(jī)完成。上位機(jī)每個編程循環(huán)讀取一行SX格式的代碼,獲取地址并且完成解碼后,通過串口發(fā)送給下位機(jī)。下位機(jī)從串口獲取該地址和該行編碼后,直接調(diào)用ISP中的Flash燒寫程序?qū)lash進(jìn)行編程。
實(shí)際結(jié)果
在實(shí)際工作中使用Matlab/GUI編寫了上位機(jī)解碼和發(fā)送程序,配合下位機(jī)的ISP軟件工作,各方面表現(xiàn)均正常。嘗試76K的SX格式的下位機(jī)軟件時,用時大約為1分鐘。
結(jié)語
本文使用Flash作為ROM擴(kuò)展了68 MC376的存儲器硬件電路,設(shè)計(jì)了串口電路的硬件,完成了ISP硬件的設(shè)計(jì);通過SX文件上位機(jī)解碼,以及下位機(jī)獨(dú)特的映射執(zhí)行代碼的方式,完成了ISP的軟件設(shè)計(jì)。
考慮到68K系列芯片的相似性,類似芯片如68 MC332等均可以直接使用該方法實(shí)現(xiàn)ISP在系統(tǒng)編程的功能?!?/P>
參考文獻(xiàn)
[1]. ROM datasheet http://m.58mhw.cn/datasheet/ROM_1188413.html.
[2]. AM29F040 datasheet http://m.58mhw.cn/datasheet/AM29F040_306529.html.
[3]. 6N137 datasheet http://m.58mhw.cn/datasheet/6N137_91364.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52









