<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機系統Flash存儲器在系統編程設計

單片機系統Flash存儲器在系統編程設計

作者: 時(shí)間:2011-09-16 來(lái)源:網(wǎng)絡(luò ) 收藏

隨著(zhù)排放法規的加嚴,發(fā)動(dòng)機電子控制單元(ECU)成為了現代汽車(chē)中一個(gè)必備部分。在發(fā)動(dòng)機控制單元這種中,已成為其一個(gè)基本配置,主要用來(lái)存放控制程序代碼。

本文引用地址:http://dyxdggzs.com/article/172492.htm

將程序代碼裝入的方法有3種:第1種方法是要求供應商在發(fā)貨前將數據寫(xiě)入,但無(wú)法滿(mǎn)足產(chǎn)品開(kāi)發(fā)階段修改程序的要求;第2種方法是使用,但由于存儲器正在向小型化、貼片式發(fā)展,從而使Flash存儲器難以利用器編程;第3種方法是將存儲器安裝到電路板上進(jìn)行編程,即在編程(In System Programming,ISP),這種編程方式是通過(guò)的微處理器實(shí)現對Flash存儲器的編程,不需要其他編程設備和附加編程電源,具有靈活、方便的優(yōu)點(diǎn)。因此,在發(fā)動(dòng)機控制單元時(shí),結合M68HC11上電引導程序實(shí)現了存儲器AM29F010B的在系統編程。

1 Flash存儲器的在系統編程技術(shù)

AM29F010B是AMD公司生產(chǎn)的Flash存儲器,這種Flash存儲器編程簡(jiǎn)單。此芯片僅需5V單電源供電便可使內部產(chǎn)生高電壓進(jìn)行編程和擦除操作。用戶(hù)只需向其命令寄存器寫(xiě)入標準的微處理器指令,具體編程、擦除操作便由內部電路實(shí)現。

在編寫(xiě)程序時(shí)需要注意,由于只有擦除指令能使“0”變?yōu)?ldquo;1”,擦除結果為“1”;而編程指令不能使“0”寫(xiě)為“l”,所以用戶(hù)在進(jìn)行Flash存儲器編程時(shí),應先擦除,再進(jìn)行編程。

2 M68HC11與上電引導模式(Bootstrap Mode)

M68HC11是由Motorola公司推出的微處理芯片(Microcontroller Unit,MCU),由于其優(yōu)越的性能,目前在發(fā)動(dòng)機控制領(lǐng)域有著(zhù)廣泛地使用。M68HC11具有一種上電引導模式,使得用戶(hù)程序可以通過(guò)串行接口(SCI)下載到內部的RAM區中,然后將M68HC11轉到用戶(hù)程序中執行。下載的程序可以像任何普通用戶(hù)程序一樣運行。雖然上電引導模式是一種單芯片模式,但是在這種模式下可以改變模式控制字,因此同樣可以訪(fǎng)問(wèn)外部資源。

硬件的模式選擇通過(guò)MCU復位時(shí)MODA和MODB管腳進(jìn)行控制,MODA和MODB的邏輯狀態(tài)在RESET管腳電平變高之前被鎖存。當RE2SET管腳變高后,模式選擇管腳對MCU的運行模式不再起作用。復位時(shí)如果MODA和MODB管腳全為低電平,則MCU進(jìn)入上電引導模式。

3 在系統編程的實(shí)現

3.1 硬件方案
為了通過(guò)M68HC11對AM29F010B進(jìn)行在系統編程,除了基本組件的之外,本系統在硬件方面做了以下準備:
1)為了能夠從計算機上下載程序代碼,即與計算機進(jìn)行通訊,本系統設計了MAX232進(jìn)行TTL電平和RS232電平的轉換;
2)為了使MCU開(kāi)機或者復位能夠進(jìn)入上電引導模式,需要在MODA和MODB管腳處設計跳線(xiàn),使復位時(shí)為低電平。硬件方案簡(jiǎn)圖見(jiàn)圖1。

圖1 硬件方案

3.2 在系統編程的軟件方案
復位進(jìn)入上電引導模式后,會(huì )自動(dòng)進(jìn)行串口的初始化等操作,然后通過(guò)串口接收程序,放到RAM內,并自動(dòng)跳到此程序執行。設計中依靠這個(gè)程序實(shí)現對外部Flash存儲器的編程。

3.2.1 程序
此程序需要下載到M68HC11內部RAM中,在引導程序完成后開(kāi)始執行。在本系統中用于實(shí)現與計算機繼續通訊接收程序代碼,并且用接收的代碼對外部Flash存儲器AM29F010B進(jìn)行編程。

程序的執行過(guò)程為1)進(jìn)行初始化操作;2)等待開(kāi)始字節“W”;3)等待編程開(kāi)始地址;4)擦除Flash EPROM,并發(fā)送擦除后的地址FFFE和FFFF處數據;5)接收二進(jìn)制數據,執行編程操作;6)發(fā)送AA表明編程成功,并開(kāi)始執行外部程序。由于M68HC11的RAM只有256個(gè)字節,因此程序用匯編語(yǔ)言進(jìn)行編寫(xiě),下面是其中幾個(gè)子程序。

/3初始化,程序在RAM地址中存放,將單片切換到擴展模式,并設置波特率96003/
ORG$0
START LDS #$FF
LDX #$1000
BSET hprio,X,#00100000B
BCLR hprio,X,#00010000B
BCLR hprio,X,#01000000B
LDAA #00110000B
STAA BAUD
/3片擦除子程序3/
ERASE_FLASH  ldab   #$AA
stab  $555
ldab  #$55
stab  $2AA
ldab  #$80
stab  $555
ldab  #$AA
stab  $555
ldab  #$55
stab  $2AA
ldab  #$10
stab  $555
rts
/3編程子程序3/
FlashProgByte  ldab  #$AA
stab  $555
ldab  #$55
stab  $2AA
ldab  #$A0
stab  $555
staa  X

這是根據AM29F010B編程的時(shí)序要求編寫(xiě)的程序,其時(shí)序見(jiàn)表1、表2。

存儲器相關(guān)文章:存儲器原理



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>