RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 RAiO RA89 Series MCU Q&A 問 答 手 冊 February 20, 2004 RAiO Technology Inc. Copyright RAiO Technology Inc. 2003, 2004 RAiO TECHNOLOGY INC. 1/1 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 Revision Update History Version Date Description 0630/2003 June 30, 2003 First Release 0724/2003 July 24, 2003 Add Q-45 0220/2004 February 20, 2004 Add Q-46~49 RAiO TECHNOLOGY INC. 2/2 Note www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 問 題 頁 數 A. RA89 系 列 應 用 ........................................................................ 6 1. RA89 系列 MCU 最大記憶體取址空間是多少 ? ..........................................................6 2. I/O 數量不足如何擴充 ? ..............................................................................................6 3. Flash 的 Bank 如何切換 ?..........................................................................................6 4. 是否可以外接 ROM 或 RAM ?.....................................................................................7 5. 程式如果超過 16Kbyte 怎麼處理 ? .............................................................................7 6. 如何減少 ADC 的漂移及增加穩定度 ? ........................................................................7 7. ADC 沒使用到的 Pin 如何處理 ? ................................................................................7 8. 乘法與累加器(乘加器)如何使用 ?................................................................................7 9. User UART 的 Baud Rate 如何設定 ? .......................................................................7 10. DAC 的輸出如何轉成電壓 ?........................................................................................7 11. DAC 的語音輸出聲音為何有破聲 ? .............................................................................8 12. 如何在程式中進行清除或寫入 Data 到 Flash 的某些區域 ? ........................................8 13. RA89 系列可以支援那些 Flash ? ................................................................................8 14. RA89 系列沒有 RTC(Real Time Clock)該如何解決 ? ................................................8 15. RA89 系列的功率消耗如何 ? ......................................................................................8 16. 能否使用到內建的 4Kbyte ROM ? ..............................................................................8 17. LCM Interface 如何使用 ?..........................................................................................9 18. RA89 系列 MCU 無可程式化中斷向量及 Priority ?.....................................................9 19. RA89 系列 MCU 中斷時只儲存 Enter Point ? ...........................................................9 20. 能否自行使用到 System UART ? ...............................................................................9 21. 如何能加密或保護 Flash 程式 ?..................................................................................9 22. 如何使用第二個 Flash 晶片 ? ...................................................................................10 23. 如何執行第二個 Flash 晶片上的程式 ?....................................................................10 24. 能否提供 I/O 用於 LED 的參考範例...........................................................................10 RAiO TECHNOLOGY INC. 3/3 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 25. 能否提供 Timer 的參考範例......................................................................................10 26. 能否提供 DAC 的參考範例........................................................................................10 27. 能否提供 RA8902 & RA8911 的 I/O Port 參考範例 ..................................................10 28. 能否提供 RA8911 MAC 的參考範例 .........................................................................10 29. 能否提供 UART 的傳輸範例 ?...................................................................................10 30. 能否提供 IrDA 的傳輸範例 ? ..................................................................................... 11 31. 能否提供 Midi 的語音範例 ? ..................................................................................... 11 32. 能否提供 ADPCM 的語音範例 ? ............................................................................... 11 33. 能否提供 ADC 的使用範例 ?..................................................................................... 11 34. 能否提供 Flash 的讀寫範例 ? ................................................................................... 11 35. 能否提供 RA8900 中文電子書的參考範例 ................................................................ 11 36. 能否介紹 Macro 與 Subroutine 的用法.................................................................... 11 37. RESET Pin 的 RC 值應為多少? ............................................................................... 11 38. I/O Port 設成 Output 為何會引發中斷 ? ...................................................................12 39. I/O Port 所有中斷均已 MASK,爲何還會引發中斷 ?................................................12 40. Test Pin 在 Bonding 時如何處理 ? ..........................................................................12 41. User Register 的定址範圍是多少 ? ..........................................................................12 42. User 能否使用 System RAM? ................................................................................13 43. 第二個 FLASH 是否可以運行程式 ? 如可以,在設定了第二個資料後,讀(或運行程式 位址爲)$C000h~$FFFFh 位址段的資料是第一個的 Flash 資料還是第二個 Flash 的資料。 13 44. RA89 系列的 ICE 板要使用哪種 RS232 Cable?.......................................................13 45. RA8915/16/17 系列的 32768Hz 要如何使用變成 RC 振盪? .....................................13 46. 如何執行在其他 Bank 的副程式? .............................................................................14 47. RA8917 提供的 Flash Erase/Program 副程式如何使用? ........................................14 48. RA8917 提供幾個 Utility Program? ........................................................................14 49. 有無使用 RA8917 做 Flash Read/Write/Erase 的說明? ..........................................14 RAiO TECHNOLOGY INC. 4/4 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 B. RICE-2000 應 用 ...................................................................... 18 1. 用 RICE-2000 的單步執行速度為何很慢 ? ................................................................18 2. 用 RICE-2000 對 Flash Download 的速度太慢 ?.....................................................18 3. RA89 系列開發環境是否提供 C-Compiler ?.............................................................18 4. RICE-2000 可用於那些 RA89 系列的開發 ? .............................................................18 5. RICE-2000 提供的 Break 功能有那些 ? ...................................................................18 6. RICE-2000 能否再在 Windows 2000 下執行 ? ........................................................18 7. 是否有程式可以將編譯好的 Hex File 直接下載到 Flash 內,而不要透過 RICE-2000? 18 8. Download.exe 如何將.rao 檔存入第二個 Flash 內 ?................................................18 9. RICE2000 能否進入 Monitor 的 Program/Erase 的 Utility? ...................................19 10. RICE2000 一段時間後無法連線?..............................................................................19 11. 如何由 RICE2000 得知 Flash 的 Device ID? ..........................................................19 RAiO TECHNOLOGY INC. 5/5 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 A. RA89 系 列 應 用 1. RA89 系列 MCU 最大記憶體取址空間是多少 ? 答: RA89 系列的 MCU 是與 65C02 相容的 8-Bit MCU,因此它的有效記憶體空間只有 64KByte,而為了使用 到更多的記憶體勢必要採用切換 BANK 的方式來達成,在 RA89 系列每一個 BANK 為 16KByte,以 RA8902 或 8911 為例,有 8 根 BANK 腳位,因此單一 Flash 可以使用到 16Kbyte * 28 = 4Mbyte 的記憶體,以 RA8917 為例,因為有 12 根 BANK 腳位,因此單一 Flash 可以使用到 16Kbyte * 212 = 96Mbyte 的記憶體空間。 2. I/O 數量不足如何擴充 ? 答: 在 RA89 系列各有不同的 I/O Port 數量,但有保留一外部 I/O Write 信號,讓客戶可以利用外部元件再增加 8-Bit 的輸出 Port,如下圖所示。 範例: D[7:0] D[7:0] Q[7:0] EXP_WR# RA89xx CK Q[7:0] OEB 74LS374 LDA #$55h STA 101Eh : : LDA #$AAh STA 101Eh : : 執行 STA 101Eh 後在 EXP_WR#上會產生一 Write Pulse,使 DATA 寫入外部的 74LS374 內,等於是增加 8-Bit 的輸出 Port。請參考 Data Sheet 內相關 Register 的說明。 3. Flash 的 Bank 如何切換 ? 答: 在 RA89 系列外部的 Flash 不論多大,它的 BANK-0 都是定址在 C000h~FFFFh 的位址,其它的 BANK-1~255(假設使用 4Mbyte 的 Flash)都是定址在 8000h~BFFFh 的位址(請參考 Data Sheet 內 Memory Organization 的圖示),如果程式小於 16KByte,建議放置在 BANK-0,也就是 C000h~FFFFh 的位址,其它 的 DATA 數據放在 8000h~BFFFh 的位址,這樣您的程式可以任意切換 BANK(將 BANK 數值寫入 BANK Register),再由 8000h~BFFFh 的位址內取得 DATA。 如果程式大於 16KByte,勢必有部分程式要存在 BANK-0 以外的地方,也就是 BANK1~255,且此部份的 程式執行位址一定是在 8000h~BFFFh 的範圍,這時候您不可以任意切換 BANK,必須要回到 BANK-0 的 程式才可以切換 BANK,否則會造成定址上的錯誤導至 MCU 無法正常工作。 RAiO TECHNOLOGY INC. 6/6 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 4. 是否可以外接 ROM 或 RAM ? 答: 一般在 RA89 系列可外接 2 個 Flash 及一個 SRAM,當然您如果要用 ROM 也可以(FL_WR# 或 MEM_WR# 不用接線)。SRAM 它的定址是在 4000h~7FFFh 的位址,您也可以使用 BANK 腳位進行擴展。RA8900 只 有一組 BANK Register,RA8902/8911 以上則有二組 BANK Register,請參考 Data Sheet 內 Register 的相關 Registers 說明。 5. 程式如果超過 16Kbyte 怎麼處理 ? 答: 如果程式大於 16KByte,勢必有部分程式要存在 BANK-0 以外的地方,也就是 BANK1~255,且此部份的 程式執行位址一定是在 8000h~BFFFh 的範圍,這時候您不可以任意切換 BANK,必須要回到 BANK-0 的 程式才可以切換 BANK,否則會造成定址上的錯誤導至 MCU 無法正常工作。 6. 如何減少 ADC 的漂移及增加穩定度 ? 答: 在 RA89 系列內部的 ADC 有 10-Bit 或 12-Bit,因為大部份會用在 3.3V 的環境,以 10-Bit ADC 為例,每 一類比輸入只要大於 3mV 就會造成 ADC 的轉換差異,因此在應用端的類比輸入來源及電源供應的穩定度 上需求極高,否則易造成轉換上的數值漂動形成誤判,尤其是 PCB 的電源 Layout 佈局也是一大關鍵,沒 使用到的類比輸入 Channel 也務必接到 GND 必避免干擾,請參考 ICE 應用操作手冊附件 B 的圖示與說明。 7. ADC 沒使用到的 Pin 如何處理 ? 答: 沒使用到的類比輸入 Channel 最好接到 GND 必避免干擾,請參考 ICE 應用操作手冊附件 B 的圖示與說明。 8. 乘法與累加器(乘加器)如何使用 ? 答: 在 RA89 系列中的 RA8911 及 8917 內建了一 16x16 的乘加器,您也可以當成 8x8 或 8x16 的乘法器使用, 這是一獨立於 MCU 的硬體乘法器,Data Sheet 內 Function Description 的第 8.17 節有完整的解說與例題。 9. User UART 的 Baud Rate 如何設定 ? 答: 在 RA89 系列的 User UART 傳輸 Baud Rate 可設成 115200、57600、38400 及 28800 四種,請參考 Data Sheet 的 Register [1037h],以現有 PC 而言都可以達到 115200bps 的傳輸速率。 10. DAC 的輸出如何轉成電壓 ? 答: 在 RA89 系列的 DAC 都是 Current Output 的型式,如果要轉成電壓必須接一適當的電阻,同時為避免線性 失真,也必需考量到下一級的輸入阻抗及接受電壓的範圍。如果以 Data Sheet 的圖 8-18 為例,以 DTMF 輸出(0~200µA),Full Range 時 RL ≒ 3.3V/200uA ≒ 15Kohm。 RAiO TECHNOLOGY INC. 7/7 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 11. DAC 的語音輸出聲音為何有破聲 ? 答: DAC 如果要用於語音輸出必須外接一放大器,最簡單的方式是用一電晶體做功率放大來推動喇叭,如 Data Sheet 圖 8-19 所示,如果聲音有破聲除了音源的因素外通常是外接電晶體、RB 電阻與喇叭(8Ohm 或 16Ohm) 的匹配不當所致。調整的方式極為容易,先送出 80h 的數值到 DAC,然後調整 RB 電阻值,讓電晶體的 C 極(Collect)電壓等於 1/2 的 VCC 既可。RA8902/8911 有提供三種 Level 的 Current Output,若配合軟體的設 定還可以控制大、中、小的不同音量。 12. 如何在程式中進行清除或寫入 Data 到 Flash 的某些區域 ? 答: 如果在應用上使用的外部記憶體是 Flash,那麼對 Flash 的清除或寫入確實會造成如何進行的困擾,RA89 系列 MCU 在設計上有考量到此一問題,因為程式與 Data 都是存在 Flash 內,同時想要執行程式並更新 Flash 內某一些區域或 BANK 的 Data 是達不到的,對 Flash 自己下 ERASE Command 將會造成 Flash 內的程式無 法繼續運行,因此在 MCU 的 System ROM 內,提供了對 Flash 進行清除或寫入 Data 的副程式,藉由這副 程式讓 Flash 空閒出來,並依指定的參數進行對 Flash 的動作,完成後再交回 Flash 內的主程式。 所謂的指定參數是指在呼叫執行 Utility 的副程式時對相關的 Registers(REG[1050h]~REG[1056h])進行設 定,在 Data Sheet 第 8.3 節對 Erase 及 Program Flash 的方法有詳細說明並各別舉例,請參考。 13. RA89 系列可以支援那些 Flash ? 答: 市面上 Flash 品牌眾多,但基本上有兩種 Command 模式,如 Data Sheet 的 8.3.1 節所述,符合 Command 1 及 Command 2 的 8-Bit Flash 大致都可以使用。請參考 Data Sheet 第 8.3.1 節及最後附件中的 Flash 對照表。 14. RA89 系列沒有 RTC(Real Time Clock)該如何解決 ? 答: 在 RA89 系列沒有硬體且完整的 RTC 功能,如果有必要可以使用內建的 Low Speed Timer,它利用 32768Hz 的石英振盪器產生三組– 1Hz、2Hz 及一分鐘的 Timer,藉由這些 Timer 可以搭配軟體達到 RTC 的功能。 15. RA89 系列的功率消耗如何 ? 答: RA89 系列 MCU 的系統頻率通常可以做不同的選擇,頻率愈低功率消耗就愈小,Power Saving Mode 時電 流消耗約 0.1µA。為節省功率消耗,MCU 可以平時在低頻(如 32768Hz)工作,負擔大時切換到高頻(如 22MHz) 工作,請參考 Data Sheet 第 8.1 節及 8.2 節的說明。 16. 能否使用到內建的 4Kbyte ROM ? 答: 基本上 RA89 系列內建的 4Kbyte ROM 是給瑞佑科技 ICE 使用的,它包括 ISD(In System Debugging) 及 RAiO TECHNOLOGY INC. 8/8 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 ISP(In System Programming) 等的 Firmware 功能,還有部份 Utility 的功能給客戶使用,如對 Flash 的清除 (Erase)或寫入(Program) 副程式,此 4Kbyte 的 ROM 定址在$F800~$FFFF 及$2000~$27FF 二個不同的區域, 通常不建議客戶使用到內建的 4Kbyte ROM,除非客戶願意下 Masking。 PS: RA8917 內建的 ROM 為 8Kbyte,定址在$F000~$FFFF 及$2000~$2FFF 二個不同的區域。 17. LCM Interface 如何使用 ? 答: RA89 系列 MCU 提供 LCM 的 Interface,可以讓客戶(1)縮短對 LCM 的指令週期 (2)加速程式撰寫與開發 (3) 減少 I/O 腳數的耗費,請參考 Data Sheet 第 8.12 節的說明。 18. RA89 系列 MCU 無可程式化中斷向量及 Priority ? 答: RA89 系列的 MCU 是與 65C02 相容的 8-Bit MCU,因此它的中斷模式只有 INT(Interrupt)及 NMI(Non-Mask Interrupt),且中斷向量固定存於$FFFE~FFFF(INT)及$FFFA~FFFB(NMI)。RA8917 及之後產品將提供可程 式化中斷向量及 Priority 設定。 現階段由於 RA89 系列其核心架構仍是以 65C02 為主體,是故使用者如有需要同時設置多個中斷源的使用 情況之下,則在中斷副程式入口設置判斷程式乃必然之作法。 19. RA89 系列 MCU 中斷時只儲存 Enter Point ? 答: 是的,MCU 不會儲存累加器、X 暫存器、Y 暫存器到堆疊區,必須自行使用 Push 及 Pull 指令。 20. 能否自行使用到 System UART ? 答: 基本上 RA89 系列的 System UART 是給瑞佑科技 ICE 使用的,負責傳送 PC 與 RA89 系列 MCU 之間有關 ICE 的訊息,也包括 Flash 的 Download、Upload 等等,因此通常不開放客戶使用。但是有些使用者需要在 PC 端建立自己的環境,這時候就必須瞭解 RA89 系列 MCU 的 Monitor 程式與 PC 端的通訊協議(Protocol), 為了減少客戶的困擾,我們提供了一”dRICE” 的 DOS Command,讓使用者透過 System UART 及 dRICE 來完成 PC 與 Flash 之間的溝通程式(或環境)。 21. 如何能加密或保護 Flash 程式 ? 答: 用戶使用 RA8902 時,用戶程序均放於外部的 Flash ROM,所以加密的功能必須由用戶自己寫於 Flash ROM 內部,或者客戶願意以下 Masking 方式,來實現加密的功能。目前的方式為在 System ROM 內加入客戶的 ID 碼,或置入一小的演算程式做為 Protection。 RAiO TECHNOLOGY INC. 9/9 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 22. 如何使用第二個 Flash 晶片 ? 答: RA8902/8911 要接第二顆 Flash 時,必須將 Flash 2 CE# 接個 Pull High 電阻,以避免資料錯誤,實際上使 用 External RAM 時也要在 MEM_CEZ、MEM_OEZ、MEM_WEZ 外加 Pull Up 電阻,才不會導致資料錯 誤。 23. 如何執行第二個 Flash 晶片上的程式 ? 答: 我們提供一個程式範例做說明,請參考應用範例<2nd Flash>,在 Flash1 (Bank0)的主程式為 Program1,在 Flash2 (Bank127) 的 程 式 為 Program2 , 程 式 流 程 請 參 考 附 件 <RunFS2> , Program 1 請 參 考 附 件 RunFS2_1.asm,Program 2 請參考附件 RunFS2_2.asm。 說明 Program 2 要 Download 到 Flash2 (Bank127) 的作法,當 Program 2 Coding 完成並 Compiler 後將產生 Program2.hex,以 Bank Download 的方式,將 Program2.hex Download 到 Flash2 (Bank127) 底下。 注意: P2.4 之接腳最好只接至第二顆 Flash 之控制腳,不要再接至其它 I/O 應用,以避免產生誤動作。 24. 能否提供 I/O 用於 LED 的參考範例 答: 請參考應用範例<LED>。 25. 能否提供 Timer 的參考範例 答: 請參考應用範例<Timer>。 26. 能否提供 DAC 的參考範例 答: 請參考應用範例<DAC>。 27. 能否提供 RA8902 & RA8911 的 I/O Port 參考範例 答: 請參考應用範例<RA8902&RA8911 I/O Port>。 28. 能否提供 RA8911 MAC 的參考範例 答: 請參考應用範例<MAC>。 29. 能否提供 UART 的傳輸範例 ? 答: 請參考應用範例<User UART>。 RAiO TECHNOLOGY INC. 10/10 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 30. 能否提供 IrDA 的傳輸範例 ? 答: 請參考應用範例<IrDA>。 31. 能否提供 Midi 的語音範例 ? 答: 請參考應用範例<Midi>。 32. 能否提供 ADPCM 的語音範例 ? 答: 請參考應用範例<ADPCM>。 33. 能否提供 ADC 的使用範例 ? 答: 請參考應用範例<ADC>。 34. 能否提供 Flash 的讀寫範例 ? 答: 請參考應用範例<Flash Program & Erase>。 35. 能否提供 RA8900 中文電子書的參考範例 答: 請參考應用範例<RA8900 中文電子書>。 36. 能否介紹 Macro 與 Subroutine 的用法 答: 請參考應用範例<Macro>。 37. RESET Pin 的 RC 值應為多少? 答: RA8902/8911 的 Reset 內部有一 2M-Ohm 的 Pull-High 電阻,因此外部再加上一小電容約 0.047uF 接到 GND 就可以。 VCC 2M Ohm RESET# RAiO TECHNOLOGY INC. 11/11 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 38. I/O Port 設成 Output 為何會引發中斷 ? 答: 這是當初晶片設計的規格,但 RA8902 Plus 及 RA8911 Plus 之後的版本已修正。 39. I/O Port 所有中斷均已 MASK,爲何還會引發中斷 ? 答: 請參考下圖為 RA89 系列 I/O 中斷運作流程圖: 主程式執行 將該 I/O Pin 所對應之中斷暫存器 [REG 1022h, 1026h, 102Ah] 之對應位元設為1 I/O Pin 準位轉換 NO 與 [REG 102Dh] 判斷是否允許中斷 由 [REG 1000h, 1001h, 1006h, 1007h] 判斷是否允許產生中斷 CPU_INT or NMI_INT YES NO YES NO 與 [REG 102Eh] 比較是否為所設定之 中斷觸發型態 YES 執行中斷副程式 由上圖所示可得知,Px_INT 之暫存器內容值只是先將 I/O 準位之變換做個記錄,尚未引發中斷,而是否 引發中斷進而執行中斷副程式之控制權還是由 NMI 及 INT Mask Register 來決定。 40. Test Pin 在 Bonding 時如何處理 ? 答: Test Pin 是給 IC 做測試或特殊用途時使用,一般不會用到,但 Bonding 時請接到 VCC,請參考 Data Sheet (V1.4 版以上) 的說明。 41. User Register 的定址範圍是多少 ? 答: RA8902/8911 的 User Register 定址範圍是由$1000~$10FF,但是實際使用並未到$10FF,以 RA8911 為例, RAiO TECHNOLOGY INC. 12/12 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 真正 User Register 只使用到$1056,請參考第七章的 Register Table,而$1057~$10FF 並無任何 Register,使 用者當然也無法使用。 42. User 能否使用 System RAM? 答: System RAM 是給 Monitor 程式及 ISP/ISD 用的,使用者無法使用。 43. 第二個 FLASH 是否可以運行程式 ? 如可以,在設定了第二個資料後,讀(或運行程式位址 爲)$C000h~$FFFFh 位址段的資料是第一個的 Flash 資料還是第二個 Flash 的資料。 答: RA89xx 在處理位址$C000h~$FFFFh 之時,都將只會指向第一顆 Flash,並不會指向第二個 Flash (儘管已 經設定致能了第二個 Flash),意即程式段僅能放在第一個 Flash Bank0 之位址,第二個 Flash 則僅供存放資 料,無法在此執行程式碼。如需存取第二個 Flash 之資料者,則請先致能第二個 Flash 之控制權之後,再 將指標指向位址$8000h~$BFFFh 之間並搭配[REG 1030h]: Flash Bank Register 使用。 44. RA89 系列的 ICE 板要使用哪種 RS232 Cable? 答: RA232 Cable 有兩種,一種為 RS232 傳輸線,它的 TX、RX 在 Cable 的兩頭是顛倒的,另一種是 RS232 延 長線,只是做為延長用途,它的 TX、RX 在 Cable 的兩頭不是顛倒的。接到 RA89 RICE Board 必須使用 RS232 延長線。 45. RA8915/16/17 系列的 32768Hz 要如何使用變成 RC 振盪? 答: 32768Hz 的振盪方式有兩種,由 ”TYPE” Pin 來選擇,請參考下圖。我們也會在下一版的 Data Sheet 內部 做說明。 VDD OSC1_XA OSC1_XA TYPE TYPE OSC1_XB OSC1_XB R (~460K Ohm) 32768Hz X’tal GND RA8917 RA8917 <X’tal 振盪> <RC 振盪> RAiO TECHNOLOGY INC. 13/13 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 46. 如何執行在其他 Bank 的副程式? 答: 使用 RA89 系列 MCU,主程式一般放在 C000h~FFFFh 的位置(16Kbyte),如果程式太大可分成若干副程 式,放在 8000h~BFFFh 的位置(也是 16Kbyte),利用不同的 Bank Register(FBANK 或 FBANK_H & FBANK_L) 來儲存或讀取。下面例子是假設副程式 1 的進入點放在 Bank1 的 8000h 位置,副程式 2 的進 入點放在 Bank2 的 8000h 位置,主程式如何呼叫這兩個副程式的方式: Main: LDA STA LDA STA JSR : : : LDA STA LDA STA JSR : : #01 FBANK_L #00 FBANK_H $8000 ; Jump to Subroutine 1 #02 FBANK_L #00 FBANK_H $8000 ; Jump to Subroutine 2 您也可以參考應用範例<Chang_Bank>。 47. RA8917 提供的 Flash Erase/Program 副程式如何使用? 答: 請參考應用範例<Program_Erase>及 Data Sheet 第 8.3 節說明。 48. RA8917 提供幾個 Utility Program? 答: RA8917 提供 2 個 Utility Program,一為 Flash Erase Sub-Routine,它的程式進入點為 $2F10h,另一為 Flash Program Sub-Routine,它的程式進入點為 $2F00h,進入 Subroutine 前需要先做好一些 Registers 的設定, 請參考 Data Sheet 8.3 章及參考應用範例<Chang_Bank>。 49. 有無使用 RA8917 做 Flash Read/Write/Erase 的說明? 答: 我們假設使用外部 Flash 為 29LV008,針對(1) Flash Read, (2) Flash Erase, (3) Flash Program 分別說明使用細 節: . (1) Flash Read: 使用到暫存器 FBANK_L & FBANK_H 29LV008(8Mbit, 1Mbyte)的地址線為 A0~A19(1MByte),因此 29LV008 的 A13~A0 接到 RA8917 的 A13~A0, RAiO TECHNOLOGY INC. 14/14 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 29LV0008 的 A19~A14 接到 RA8917 的 BK5~BK0。代表著可以控制 64 個 Bank,每一是 16Kbyte 16kByte x 64 = 1MByte。所以暫存器的設定範圍是 FBANK_H = 0,FBANK_L = 0~3Fh,實際上暫存器 FBANK_H[3:0] 對映到 RA8917 的腳位 BK[11:8],暫存器 FBANK_L[7:0] 對映到 RA8917 的腳位 BK[7:0]。 因此 29LV008 對 RA8917 而言 Bank1~Bank3F 是位於 8000~BFFFh,只有 Bank0 是位於 C000~FFFFh,您 可以藉由暫存器 FBANK_L[7:0]讀取 1Mbyte 29LV0008 的全部區域。例如想讀取 Bank63 的 16KByte,必 須設定暫存器 FBANK_L = 3Fh,FBANK_H = 0h (因 29LV008 只有 1MByte,此暫存器沒有用到): 例 1: LDA #00h STA FBANK_H LDA #3Fh STA FBANK_L LDA (8000h) ; 得到 Bank63 的第一個 Byte 如想讀取 Bank15 的 16KByte,必須設定暫存器 FBANK_L = 0Fh,FBANK_H = 0h : 例 2: LDA #00h STA FBANK_H LDA #0Fh STA FBANK_L LDA (8000h) ; 得到 Bank15 的第一個 Byte 如想跳到 Bank16 的位址執行副程式,必須設定暫存器 FBANK_L = 10h,FBANK_H = 0h : 例 3: LDA #00h STA FBANK_H LDA #10h STA FBANK_L JSR 8000h ; 跳到 Bank16 執行副程式 所以在您開發時必須先規劃好 Flash 的 Bank 使用方式,對 Flash 的讀取只有使用到暫存器 FBANK_L 及 & FBANK_H。 (2) Flash Erase: 使用到暫存器 FSAHR, FSAMR, FSALR, PFCR 例 4: RAiO TECHNOLOGY INC. 15/15 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 ; 清除 00000h~03FFFh (16Kbyte) STZ FSAHR STZ FSAMR STZ FSALR LDA #00010001b STA PFCR JSR 2F10h ; 選擇 Sector Erase,選擇 Command 2 模式 ; 呼叫 Monitor Erase Subroutine 請參考下表,上面例 4 會清除 BK63,共 16Kbyte 的區域。 Sector Address Table A19 A18 A17 A16 A15 A14 A13 Sector Size Address |Range BANK SA0 0 0 0 0 0 0 X 16KByte 00000h-03FFFh BK63 SA1 0 0 0 0 0 1 0 8KByte 04000h-05FFFh BK62 SA2 0 0 0 0 0 1 1 8KByte 06000h-07FFFh BK62 SA3 0 0 0 0 1 X X 32KByte 08000h-0FFFFh BK61, 60 SA4 0 0 0 1 X X X 64KByte 10000h-1FFFFh BK59, 58, 57, 56 SA5 0 0 1 0 X X X 64KByte 20000h-2FFFFh BK55, 54, 53, 52 SA6 0 0 1 1 X X X 64KByte 30000h-3FFFFh BK51, 50, 49, 48 SA7 0 1 0 0 X X X 64KByte 40000h-4FFFFh BK47, 46, 45, 44 SA8 0 1 0 1 X X X 64KByte 50000h-5FFFFh BK43, 42, 41,40 SA9 0 1 1 0 X X X 64KByte 60000h-6FFFFh BK39, 38, 37, 36 SA10 0 1 1 1 X X X 64KByte 70000h-7FFFFh BK35, 34, 33, 32 SA11 1 0 0 0 X X X 64KByte 80000h-8FFFFh BK31, 30, 29, 28 SA12 1 0 0 1 X X X 64KByte 90000h-9FFFFh BK27, 26, 25, 24 SA13 1 0 1 0 X X X 64KByte A0000h-AFFFFh BK23, 22, 21, 20 SA14 1 0 1 1 X X X 64KByte B0000h-BFFFFh BK19, 18, 17, 16 SA15 1 1 0 0 X X X 64KByte C0000h-CFFFFh BK15, 14, 13, 12 SA16 1 1 0 1 X X X 64KByte D0000h-DFFFFh BK11, 10, 9, 8 SA17 1 1 1 0 X X X 64KByte E0000h-EFFFFh BK7, 6, 5, 4 SA18 1 1 1 1 X X X 64KByte F0000h-FFFFFh BK3, 2, 1, 0 例 5: LDA #0Eh STA FSAHR STZ FSAMR STZ FSALR LDA #00010001b STA PFCR JSR 2F10h ; 清除 E0000h~EFFFFh (64Kbyte) ; 選擇 Sector Erase,選擇 Command 2 模式 ; 呼叫 Monitor Erase Subroutine 上面例 5 會清除 BK7~4,共 64Kbyte 的區域,因為 Flash 本身的限制您無法只清除 BK7。 RAiO TECHNOLOGY INC. 16/16 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 (3) Flash Programming: 使用到暫存器 PFBHR, PFBLR, PFAHR, PFALR, PFDR, PFCR 例 6: LDA #00000001b STA PFCR LDA #00h STA PFBHR LDA #63 STA PFBLR LDA #80h STA PFAHR LDA #00h STA PFALR LDA #66h STA PFDR JSR 2F00h ; 選擇 Command 2 模式 ; 選擇 Bank #63 ; 設定要 Program(寫入)的 Address = 8000h ; 設定要 Program(寫入)的 Data = 66h ; 呼叫 Monitor Program Subroutine 上面例 6 會寫入 66h 到 Bank63 的第一個 Byte,也就是 Physical Address 的 00000h。 例 7: LDA #00000001b STA PFCR LDA #00h STA PFBHR LDA #62 STA PFBLR LDA #A0h STA PFAHR LDA #00h STA PFALR LDA #55h STA PFDR JSR 2F00h ; 選擇 Command 2 模式 ; 選擇 Bank #63 ; 設定要 Program(寫入)的 Address = A000h ; 設定要 Program(寫入)的 Data = 55h ; 呼叫 Monitor Program Subroutine 上面例 7 會寫入 55h 到 Bank62 的第 8192 個 Byte,也就是 Physical Address 的 06000h。請參考上面 Sector Address Table 表。 RAiO TECHNOLOGY INC. 17/17 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 B. RICE-2000 應 用 1. 用 RICE-2000 的單步執行速度為何很慢 ? 答: 這只會發生在對 RA8911/8917 開發時才會出現,主因為每次單步執行後都必須將結果 Upload 到 RICE-2000,但是 RA8911/8917A89 包含了內建的 4Kbyte SRAM,造成 Upload 時間較久,建議您使用 Pentium-4 2.0Ghz 以上的 PC 機種來進行程式開發,並關掉一些不重要的隱藏程式。 2. 用 RICE-2000 對 Flash Download 的速度太慢 ? 答: Flash 的品牌眾多,同時 Erase 或 Program 時所花的時間也長短不一,遇到 Erase 失敗 RICE-2000 會再進 行幾次,因為 Flash 的特性並非 Erase Command 一執行就保證成功,通常 Chip Erase 都會花比較久的時間, 當然如果 4Mbyte 的 Flash 要全部 Program,花的時間就更久,這是 Flash 的特性與 RICE-2000 的 Performance 無關,如果是小部份的 Sector Erase 或 Program 您會發現所花的時間很短。 3. RA89 系列開發環境是否提供 C-Compiler ? 答: 瑞佑科技在 2003 年 5 月已完成初版的 C-Compiler 開發環境,搭配 IAR 的高效率組譯器,讓轉出的程式使 用空間最佳化。 4. RICE-2000 可用於那些 RA89 系列的開發 ? 答: RICE-2000 的 About 點選後會列出可適用的 RA89 系列 MCU。 5. RICE-2000 提供的 Break 功能有那些 ? 答: RICE-2000 在 Debug 時提供了(1) Break to Cursor 執行到游標位址時停止執行 (2) Accumulator Break 執行到累加器內容與設定值相同時停止執行 (3) 可設次數的二個 Break 中斷點 執行到 Break 中斷點的 次數與設定值相同時停止執行。 6. RICE-2000 能否再在 Windows 2000 下執行 ? 答: 可以,目前 RICE-2000 可在 Win98/Win98SE/WinMe/Win2000 環境下運行。 7. 是否有程式可以將編譯好的 Hex File 直接下載到 Flash 內,而不要透過 RICE-2000? 答: 可以使用本公司提供的 Download.exe 將.rao 檔直接 Download 到 Flash 內,而不要透過 RICE-2000。 8. Download.exe 如何將.rao 檔存入第二個 Flash 內 ? 答: 本公司目前針對 RA8906 或 RA8900 提供的 Download.exe 能將.rao 檔下載到單一 Flash 內,新的版本可支 RAiO TECHNOLOGY INC. 18/18 www.raio.com.tw RA89 MCU Series Q & A 問答手冊 Revision 0220/2004 援 RA8902/8911/8917,同時下載時會自行載入 Flash 1 或 Flash 2,不需要另外選擇。 9. RICE2000 能否進入 Monitor 的 Program/Erase 的 Utility? 答: 不能,在 Debug 的時候遇到進入 Monitor 的 Program/Erase 的程式時必須使用 ”Step”,不能使用 ”Step Into”,否則會發生 ”Source Code Not Match” 的錯誤訊息。 10. RICE2000 一段時間後無法連線? 答: 那是因為 RICE2000 與 RA89xx 一段時間沒有 Link 往來,Monitor 會讓 RA89 進入 Sleeping Mode,只要 按 ”Reset” 既可恢復連線。 11. 如何由 RICE2000 得知 Flash 的 Device ID? 答: RICE2000 第 5.1--1835 版以上才有提供此功能,ICE 連線後選擇 ICON RAiO TECHNOLOGY INC. 19/19 即可得到 Flash ID 的訊息。 www.raio.com.tw