RA89 Series MCU Q & A 問答手冊

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