MC908GP32單片機

MC908GP32單片機

MC908GP系列單片機是HC08系列單片機大家族中具有通用性的一族,MC908GP32是MC908GP系列中的一個型號,MC908GP32單片機具有三種封裝形式,它們分別為40腳、42腳、44腳。

主要特點

①512B片內RAM;32K片內Flash程式存儲器,具有線上編程能力和保密功能。

②時鐘發生器模組,具有32KHz晶振PLL電路,可產生各種工作頻率;8MHz內部匯流排頻率。

③增強的HC05 CPU結構;16種定址方式(比HC05多8種);16位變址暫存器和堆疊指針;存儲器至存儲器數據傳送;快速8×8乘法指令;快速16/8除法指令;擴展的循環控制功能;BCD功能。

④33根通用I/O腳,包括26根多功能I/O腳和5或7根專用I/O腳;PTA、PTC和 PTD的輸入口有可選擇的上拉電阻;PTC0—PTC4有15mA吸流和放流能力,其他口有10mA吸流和放流能力 (總體驅動電流應小於150mA);所有口有最高5mA輸入電流保護功能。

⑤增強型串列通訊口SCI;串列外圍接口SPI;兩個16位雙通道定時器接口模組(TIM1和 TIM2),每個通道可選擇為輸入捕捉、輸出比較和PWM,其時鐘可分別選為內部時鐘的1、2、4、8、16、32和64的分頻值;帶時鐘預分頻的定時基模組有8種周期性實時中斷(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式時使用外部32KHz晶振周期性喚醒 CPU;8位鍵盤喚醒口。

⑥系統保護特性:計算機工作正常(COP)復位;低電壓檢測復位,可選為3V或5V操作;非法指令碼檢測復位;非法地址檢測復位。

⑦具有PDIP40、SDIP42和QFP44封裝形式。

⑧最佳化用於控制套用;最佳化支持C語言。

內部結構

單片機(以下簡稱GP32單片機)的三種封裝形式只是引腳數量和形式有所區別,其它方面是一致的。圖中I/O口是按 44引腳的GP32給出的,對於42引腳的GP32單片機則沒有PTC5、PTC6兩個引腳,對於40引腳的GP32單片機則沒有PTC5、PTC6及 PTD6/T2CH0、PTD7/T2CH1四個引腳。

從內部結構簡圖可以看出,GP32內部有以下主要部分:CPU08、存儲器、定時器接口模組、定時基模組、看門狗模組、通用I/O接口、串列通信接口 SCI、串列外設接口SPI、斷點模組、A/D轉換模組、鍵盤中斷模組、時鐘發生模組及鎖相環電路、低電壓禁止模組、復位與中斷模組、監控模組MON和系統設定模組。

引腳功能

MC908GP32單片機 MC908GP32單片機

40引腳的MC908GP32單片機的引腳圖,引腳功能分類簡介如下:(1) 電源類引腳

VDD、VSS(20腳、19腳):電源供給端。

VDDAD /VREFH、VSSAD /VREFL(31腳、32腳):內部A/D轉換器的電源供給及參考電壓輸入端。

VDDA、VSSA(1腳、2腳):時鐘發生器模組(CGM)的電源供給端。

(2) 控制類引腳

(6腳):外部低有效復位輸入或輸出腳,有內部上拉電阻。

(14腳):外部中斷輸入腳,有內部上拉電阻。

(3) I/O類引腳

PTA7/KBD7~PTA0/KBD0(40~33腳):8位通用雙向I/O口,每個可程式為鍵盤輸入腳。

PTB7/AD7~PTB0/AD0(30~23腳):8位通用雙向I/O口,也可作為8路8位A/D轉換輸入腳。

PTC4~PTC0(11~7腳):5位通用雙向I/O口。

PTD5/T1CH1~PTD0/ (22、21、18~15腳):6種特殊功能、雙向I/O口,其中T1CH1、T1CH0用於定時器模組(TIM1)。SPSCK、MOSI、MISO、 用於串列外圍接口(SPI)。

PTE0/TxD、PTE1/RxD(12腳、13腳):2位雙向I/O口或串列通訊口。

(4) 其它

CGMXFC(3腳):CGM的外部濾波電容連線腳。

OSC1、OSC2(5腳~4腳):片內振盪器引腳。

存儲器組織

CPU08 可定址64K地址空間,所以它的地址範圍是$0000~$FFFF,在這$0000~$FFFF的定址範圍內,分成多個不同區段,每個區段的作用不同。 MC908GP32單片機的存儲器組織及地址分配見圖。圖中只是畫出了64K地址空間的簡要映像。

RAM區域及其作用

用戶RAM的地址範圍是:$0040~$023F,共512位元組。這個區域既是用戶RAM,也是堆疊RAM。一般情況下,這個區域安排用戶數據和堆疊空間。由於這個空間較小,必須合理安排初始堆疊指針SP和用戶數據,更好地發揮RAM的作用。在這個區域中,有192位元組的RAM屬於第0頁,也就是地址的高8位為0,第0頁RAM的地址範圍是:$0040~$00FF,這個地址範圍定址方便,合理分配使用這些記憶體地址對實際編程很有幫助。

必須注意的是,由於堆疊也在RAM區域,且復位時SP=$00FF,位於第0頁內,所以實際編程時,可以把SP從第0頁移出,例如使之為$023F,也就是初始的SP在RAM的最高地址處,由於M68HC08系列單片機的進棧指令是使SP-1,所以是堆疊數據向低地址方向依次堆放,這樣堆疊使用的地址空間是$023F→更低地址方向。安排用戶數據時,可以從RAM的最低地址$0040向更高地址空間安排,即用戶數據使用的地址空間是$0040→更高地址方向。這樣從兩頭向中間使用,可以儘量避免兩種數據交疊,發生錯誤。但是,用戶數據不宜安排過多,要給堆疊留有足夠的空間,否則運行時可能產生錯誤。若記憶體安排較滿,必須精確計算堆疊最大可能深度,以保證程式的正常執行。

映像暫存器名及簡明含義

所謂映像暫存器,是指那些通過存儲器地址訪問的暫存器,它們不像暫存器A、H:X、SP、PC、CCR那樣直接通過其“名”來使用它,而是通過它們對應的地址來使用它們。要通過其“名”來使用它們,必須用偽指令定義它們所占用的實際地址與“名”對應。

存儲器暫存器

在MC908GP32單片機中,與Flash編程有關的暫存器有2個,它們是Flash控制暫存器(FLCR)和Flash塊保護暫存器(FLBPR)。對應的地址分別為$FE08和$FF7E,下面分別闡述這些暫存器的功能及用法。

Flash控制暫存器

FLCR的地址:$FE08,定義為:

數據位 D7 D6 D5 D4 D3 D2 D1 D0

定義 未定義 未定義 未定義 未定義 HVEN MASS ERASE PGM

復位 0 0 0 0 0 0 0 0

D7~D4位:未定義。

D3 — HVEN位:高壓允許位(High-Voltage Enable Bit)。 HVEN=1,打開電荷泵並將高電平加到Flash陣列上;HVEN=0,撤除Flash陣列上的高電平並關閉電荷泵。當PGM=1或ERASE=1時,可以通過設定HVEN將來自片內電荷泵的高壓加到Flash陣列上。

D2 — MASS位:整體擦除控制位(Mass Erase Control Bit)。該位在ERASE=1時有效,用於選擇Flash擦除操作方式:整體擦除或頁擦除。MASS=1,選擇整體擦除方式;MASS=0,選擇頁擦除方式。

D1 — ERASE位:擦除控制位(Erase Control Bit)。該位用於設定Flash編程操作為擦除操作。ERASE位與PGM位之間存在互鎖關係,無法同時被設定為1。ERASE=1,選擇擦除操作;ERASE=0,不選擇擦除操作。

D0 — PGM位:編程(寫入)控制位(Program Control Bit)。該位用於設定Flash編程操作為編程(寫入)操作,且無法與ERASE位同時為1。PGM=1,選擇寫入操作;PGM=0,不選擇寫入操作。

Flash塊保護暫存器

FLBPR的地址:$FF7E,它的內容為Flash保護區域的起始地址的14~7位,保護區域的起始地址的最高位始終為1,而保護區域的起始地址的低7位(位6~0)始終為0。對FLBPR寫入,可以設定被保護的Flash區域,它本身也是一個Flash位元組。當Flash處於保護狀態時,擦除和寫入操作都是受限制的,HVEN將無法被正常置起。Flash塊保護暫存器設定的只是保護區域的起始地址,保護區域的結束地址始終為Flash存儲區的結束地址($FFFF)。例如,設定FLBPR的值為$02(%0000 0010),則保護區域為$8100~$FFFF(%1000 0001 0000 0000 ~ %1111 1111 1111 1111)。

特別情況是:FLBPR的存儲內容為$00,整個Flash存儲區都受到保護;如果FLBPR的存儲內容為$FF,則整個Flash存儲區都可以被擦除或寫入。

只有當單片機處於運行用戶程式時,對FLBPR本身和Flash保護區域的擦寫操作保護才是有效的。復位不影響FLBPR。

需要注意的是,FLBPR的8位數據所代表的地址取決於具體型號的晶片的Flash容量。以上是對MC908GP32而言的,FLBPR設定的是16位起始地址的第14~7位(第15位恆為1);而對MC68HC908JL3而言,它們設定的是16位起始地址的第12~5位(第15~13位恆為1)。這兩種情況見表13-1。具體設定時可以根據相應晶片手冊結合要保護的區域進行計算得到。

編程過程

在HC08系列單片機中,對Flash進行擦除或寫入操作需要遵循一定的時序和步驟。對於整個MC68HC908系列的各個型號,這些步驟是一樣的,但時序要求可能略有不同,針對具體型號的Flash進行編程時應參考相應的晶片手冊。同時需要注意的是,一些型號的監控ROM內含有Flash編程子程式,用戶可直接調用,例如MC68HC908JL3;有的型號則沒有,例如MC908GP32,這種情況需自行編制子程式。下面介紹MC908GP32的Flash編程的基本操作。

頁擦除操作

下面過程可以擦除GP32的Flash存儲器的一頁(128位元組):

①$2→FLCR(1→ERASE位,0→MASS位):進行頁面擦除。

②讀Flash塊保護暫存器FLBPR。

③向被擦除的Flash頁內任意一個地址寫入任意值,為方便起見,一般向待擦除頁首地址寫入0。

④延時tnvs(>10µs)。

⑤$A→FLCR(1→HVEN位)。

⑥延時terase(>1ms)。

⑦$8→FLCR(0→ERASE位)。

⑧延時tnvh(>5µs)。

⑨$0→FLCR(0→HVEN位)。

⑩延時trcv(>1µs),完成一頁的擦除操作。

整體擦除操作

下面過程擦除GP32的整個Flash區域,以便把新的程式裝入Flash存儲器,這是套用系統研製過程中開發工具對GP32編程的準備工作。

①$6→FLCR(1→ERASE位,1→MASS位):進行整體擦除。

②讀Flash塊保護暫存器FLBPR。

③向被擦除的Flash任意一個地址寫入任意值,為方便起見,一般向首地址寫入0。

④延時tnvs(>10µs)。

⑤$E→FLCR(1→HVEN位、MASS位、ERASE位)。

⑥延時tMerase(>4ms)。

⑦$C→FLCR(0→ERASE位)。

⑧延時tnvhl(>100µs)。

⑨$0→FLCR(0→HVEN位、MASS位)。

⑩延時trcv(>1µs),完成整體擦除操作。

編程操作

MC908GP32的Flash編程操作以行(64位元組)為單位進行的。當然,一次寫入可以小於一行,但不能大於一行。對於已經寫過的部分,未經擦除不能重新寫入變更其數據,否則將引起數據出錯。寫入過程如下:

①$1→FLCR(1→PGM位)。

②讀Flash塊保護暫存器FLBPR。

③向將要寫入的Flash行內任意一個地址寫入任意值,為方便起見,一般向行首地址寫入0,這一步選定了所要編程的行,以下的目標地址必須在這一行中。

④先延時tnvs(>10µs);再將$9→FLCR(1→HVEN位)。

⑤先延時tpgs(>5µs);再將待寫數據寫入對應的Flash地址。

⑥延時tprog(>30µs),完成一個位元組的寫入(編程)工作。

⑦重複⑤、⑥,直至同一行內各位元組寫入完畢。

⑧$8→FLCR(0→PGM位)。

⑨先延時tnvh(>5µs);再將$0→FLCR(0→HVEN位)。

⑩延時trcv(>1µs)以後,完成本行寫入工作,可以讀出校驗。

相關搜尋

熱門詞條

聯絡我們