引言
MC68HC908LJ12是Motorola即將推出的一款八位單片機,主要特點是片內有LCD驅動模塊和FLASH存儲器,擬代替今后會逐漸停產的MC68HC05L1、L5、L16等型號的單片機。MC68HC908LJ12表面貼封裝的芯片具有SCI、SPI、內置實時時鐘模塊RTC、512B RAM以及12KB片內FLASH等特點,其內置LCD驅動模塊具有3×27或4×26段LCD驅動能力。
MC68HC908LJ12單片機片內集成電荷泵,使用+5V工作電壓即可產生所需FLASH編程電壓;另外,片內FLASH擦寫速度快,可靠性高,可擦寫至少10萬次以上,所以在需頻繁修改存儲的數據和代碼的場合,都是理想的選擇。
筆者在試用MC68HC908LJ12開發產品的過程中,總結了FLASH在線編程技術,并提供了一種廉價靈活的帶片內FLASH的單片機的開發辦法。
FLASH在線編程模式
所謂FLASH在線編程,即芯片無需從目標系統上取下即可對FLASH進行擦除和寫入的操作。MC68HC908LJ12單片機片內有12KB的FLASH,對FLASH的編程有兩種模式:監控模式(Monitor Mode)和用戶模式(User Mode)。
當單片機上電復位時,若檢測到復位向量($FFFE~$FFFF)為空($FFFF),或特定引腳加上特定的電平,就可使單片機在復位后進入監控模式。在監控模式下,可以利用固化在監控ROM中的代碼并通過主機下載程序到RAM中完成對FLASH的一系列的操作。監控模式適合對剛出廠的芯片進行編程寫入,或者對芯片的整體擦除或寫入。仿真器和編程器就是使用的監控模式。
在單片機正常工作的過程中,程序也可以在用戶模式下對FLASH進行編程操作。此時FLASH寫入和擦除程序是必須的,但無需外部硬件條件的支持。所以用戶模式可以在程序運行中對部分的FLASH進行修改,適合于目標系統的程序和數據的動態更新和存儲。
基于MC68HC908LJ12單片機FLASH在線編程以上特性,筆者設計了一套集編程功能和開發功能于一身的MC68HC908LJ12開發工具,電路原理圖如圖1所示。
通過跳線的方式,可以選擇編程功能(圖中開關至A的位置)或開發功能(圖中開關于B的位置)。當選擇編程功能時,單片機工作在監控模式下,主機通過串行通信口可以向片內FLASH執行擦寫操作;當選擇開發功能時,單片機工作在用戶模式下,并可以通過引出的插座連接到目標系統上進行產品開發。筆者在使用MC68HC908LJ12單片機的過程中,為該單片機編寫了一套大約3.5KB的在線編程開發系統程序。將此程序寫入芯片,開發者在此程序的基礎上,能在用戶模式下實現對片內另外8.5KB的FLASH擦寫,調試用戶自己的程序。用戶程序定型后,可以選擇編程功能擦除在線編程開發系統程序,并將所需的用戶程序寫入FLASH中。如果使用過程中發現程序有錯誤之處,仍可選擇編程功能,將修改后的程序重新寫回FLASH中。這樣會給開發帶來許多方便。
用戶也可將此工具設計為分離形式的,即編程功能和開發功能分別在一塊PCB板上。圖中虛線框內即為編程器的電路原理圖,LJ12芯片安置在開發板上。編程器和開發板之間只需6條連線,即DSC1、IRQ、RST、PTA0、電源線VDD和GND地線。將編程器與開發板連接即可在監控模式下對FLASH進行擦寫操作,單獨使用開發板即可開發目標系統。
FLASH監控編程模式
在監控模式下, MC68HC908LJ12單片機運行固化在ROM中的代碼,監控代碼包括使用半雙工口的通訊子程。監控模式使用PTA0引腳,通過串行通信口與主機建立連接。建立連接后,單片機的控制權即交給了主機完成對FLASH的擦寫操作。MC68HC908LJ12單片機在監控模式下的總線頻率是2.4576MHz,進入監控模式有兩種方式:高電平進入方式和空向量進入方式。
當單片機上電復位時,若在IRQ引腳上加上高電平VTST(VDD+2.5V),就可使單片機進入監控模式。使用此方式進入監控,在OSC1引腳輸入的時鐘頻率必須是4.9152MHz或者9.8304MHz,PTC1引腳上的高低電平控制分頻因子,低電平時分頻因子為2,高電平時分頻因子為4。
單片機上電復位時,若檢測到復位向量($FFFE~$FFFF)為空($FFFF),單片機也將在復位后進入監控模式。使用此方式進入監控,若IRQ引腳為低電平,PLL允許,可由外部32768Hz的晶振產生所需要的總線頻率2.4576MHz。若IRQ引腳為高電平,單片機將不管PTC1引腳上的電平而直接使用9.8304MHz的外部晶振產生總線頻率2.4576MHz,即分頻因子恒為4。
FLASH用戶編程模式
在用戶模式下,ICP程序代碼是用戶程序代碼的一個部分,需將此代碼存儲在無沖突的FLASH存儲器中以便被用戶程序調用。對FLASH進行擦寫的時候,FLASH編程操作例程應復制到RAM中運行。MC68HC908LJ12單片機在對FLASH進行擦寫的過程中,一旦FLASH控制寄存器(FLCR)的高壓允許位HVEN置1,整個FLASH陣列會被加上一個高于普通工作電壓的編程電壓,此時對FLASH內任意字節的讀取都是不穩定的,執行的代碼也可能是完全錯誤的。所以,開發者在調用FLASH擦寫子例程前,需將子例程復制到RAM中,然后跳轉到RAM中執行。
在用戶模式下另一種在線編程的方法是利用固化在監控ROM中監控代碼,這樣,既可以減少有限的RAM空間的使用,也可以免去用戶編寫ICP代碼的麻煩。Motorola提供了監控代碼的入口地址,用戶只需提供總線頻率、目標FLASH的起始地址、數據隊列大小以及數據隊列等參數,然后調用“JSR 入口地址”命令即可使用。
結語
FLASH給開發者提供了快速的方便的編程和開發方法,同時也給單片機的應用開拓了更大的空間。合理地利用片內集成FLASH的單片機可以降低開發成本,縮短產品的開發周期。本文就MC68HC908LJ12單片機的FLASH的編程技術展開了一些探討,FLASH的編程的其他功能有待于大家去挖掘。
MC68HC908LJ12是Motorola即將推出的一款八位單片機,主要特點是片內有LCD驅動模塊和FLASH存儲器,擬代替今后會逐漸停產的MC68HC05L1、L5、L16等型號的單片機。MC68HC908LJ12表面貼封裝的芯片具有SCI、SPI、內置實時時鐘模塊RTC、512B RAM以及12KB片內FLASH等特點,其內置LCD驅動模塊具有3×27或4×26段LCD驅動能力。
MC68HC908LJ12單片機片內集成電荷泵,使用+5V工作電壓即可產生所需FLASH編程電壓;另外,片內FLASH擦寫速度快,可靠性高,可擦寫至少10萬次以上,所以在需頻繁修改存儲的數據和代碼的場合,都是理想的選擇。
筆者在試用MC68HC908LJ12開發產品的過程中,總結了FLASH在線編程技術,并提供了一種廉價靈活的帶片內FLASH的單片機的開發辦法。

FLASH在線編程模式
所謂FLASH在線編程,即芯片無需從目標系統上取下即可對FLASH進行擦除和寫入的操作。MC68HC908LJ12單片機片內有12KB的FLASH,對FLASH的編程有兩種模式:監控模式(Monitor Mode)和用戶模式(User Mode)。
當單片機上電復位時,若檢測到復位向量($FFFE~$FFFF)為空($FFFF),或特定引腳加上特定的電平,就可使單片機在復位后進入監控模式。在監控模式下,可以利用固化在監控ROM中的代碼并通過主機下載程序到RAM中完成對FLASH的一系列的操作。監控模式適合對剛出廠的芯片進行編程寫入,或者對芯片的整體擦除或寫入。仿真器和編程器就是使用的監控模式。
在單片機正常工作的過程中,程序也可以在用戶模式下對FLASH進行編程操作。此時FLASH寫入和擦除程序是必須的,但無需外部硬件條件的支持。所以用戶模式可以在程序運行中對部分的FLASH進行修改,適合于目標系統的程序和數據的動態更新和存儲。
基于MC68HC908LJ12單片機FLASH在線編程以上特性,筆者設計了一套集編程功能和開發功能于一身的MC68HC908LJ12開發工具,電路原理圖如圖1所示。
通過跳線的方式,可以選擇編程功能(圖中開關至A的位置)或開發功能(圖中開關于B的位置)。當選擇編程功能時,單片機工作在監控模式下,主機通過串行通信口可以向片內FLASH執行擦寫操作;當選擇開發功能時,單片機工作在用戶模式下,并可以通過引出的插座連接到目標系統上進行產品開發。筆者在使用MC68HC908LJ12單片機的過程中,為該單片機編寫了一套大約3.5KB的在線編程開發系統程序。將此程序寫入芯片,開發者在此程序的基礎上,能在用戶模式下實現對片內另外8.5KB的FLASH擦寫,調試用戶自己的程序。用戶程序定型后,可以選擇編程功能擦除在線編程開發系統程序,并將所需的用戶程序寫入FLASH中。如果使用過程中發現程序有錯誤之處,仍可選擇編程功能,將修改后的程序重新寫回FLASH中。這樣會給開發帶來許多方便。
用戶也可將此工具設計為分離形式的,即編程功能和開發功能分別在一塊PCB板上。圖中虛線框內即為編程器的電路原理圖,LJ12芯片安置在開發板上。編程器和開發板之間只需6條連線,即DSC1、IRQ、RST、PTA0、電源線VDD和GND地線。將編程器與開發板連接即可在監控模式下對FLASH進行擦寫操作,單獨使用開發板即可開發目標系統。
FLASH監控編程模式
在監控模式下, MC68HC908LJ12單片機運行固化在ROM中的代碼,監控代碼包括使用半雙工口的通訊子程。監控模式使用PTA0引腳,通過串行通信口與主機建立連接。建立連接后,單片機的控制權即交給了主機完成對FLASH的擦寫操作。MC68HC908LJ12單片機在監控模式下的總線頻率是2.4576MHz,進入監控模式有兩種方式:高電平進入方式和空向量進入方式。
當單片機上電復位時,若在IRQ引腳上加上高電平VTST(VDD+2.5V),就可使單片機進入監控模式。使用此方式進入監控,在OSC1引腳輸入的時鐘頻率必須是4.9152MHz或者9.8304MHz,PTC1引腳上的高低電平控制分頻因子,低電平時分頻因子為2,高電平時分頻因子為4。
單片機上電復位時,若檢測到復位向量($FFFE~$FFFF)為空($FFFF),單片機也將在復位后進入監控模式。使用此方式進入監控,若IRQ引腳為低電平,PLL允許,可由外部32768Hz的晶振產生所需要的總線頻率2.4576MHz。若IRQ引腳為高電平,單片機將不管PTC1引腳上的電平而直接使用9.8304MHz的外部晶振產生總線頻率2.4576MHz,即分頻因子恒為4。
FLASH用戶編程模式
在用戶模式下,ICP程序代碼是用戶程序代碼的一個部分,需將此代碼存儲在無沖突的FLASH存儲器中以便被用戶程序調用。對FLASH進行擦寫的時候,FLASH編程操作例程應復制到RAM中運行。MC68HC908LJ12單片機在對FLASH進行擦寫的過程中,一旦FLASH控制寄存器(FLCR)的高壓允許位HVEN置1,整個FLASH陣列會被加上一個高于普通工作電壓的編程電壓,此時對FLASH內任意字節的讀取都是不穩定的,執行的代碼也可能是完全錯誤的。所以,開發者在調用FLASH擦寫子例程前,需將子例程復制到RAM中,然后跳轉到RAM中執行。
在用戶模式下另一種在線編程的方法是利用固化在監控ROM中監控代碼,這樣,既可以減少有限的RAM空間的使用,也可以免去用戶編寫ICP代碼的麻煩。Motorola提供了監控代碼的入口地址,用戶只需提供總線頻率、目標FLASH的起始地址、數據隊列大小以及數據隊列等參數,然后調用“JSR 入口地址”命令即可使用。
結語
FLASH給開發者提供了快速的方便的編程和開發方法,同時也給單片機的應用開拓了更大的空間。合理地利用片內集成FLASH的單片機可以降低開發成本,縮短產品的開發周期。本文就MC68HC908LJ12單片機的FLASH的編程技術展開了一些探討,FLASH的編程的其他功能有待于大家去挖掘。
評論