3.3
存儲器映射
前文所述,寄存器與RAM、FLASH一樣都是芯片內部的一種存儲設備。那么,當我們需要訪問它們的時候,我們需要知道它們的存儲地址。
3.3.1
存儲器映射表
如下圖所示為RA6M5的存儲器映射表,可以看到RA6M5芯片內部的存儲器被映射到這一整塊4G(0 ~0xFFFF FFFF)的地址空間中。我們還可以看到,除了寄存器和SRAM、Flash的地址空間區(qū)域以外,還存在著其他類型的地址空間區(qū)域,比如QSPI area和OSPI area。Reserved area表示的是保留區(qū)域,尚未用到。
3.3.2
存儲器區(qū)域劃分
存儲器本身不具有地址信息,它的地址是由芯片廠商或用戶分配,給存儲器分配地址的過程就稱為存儲器映射。如果給存儲器再次分配一個地址就叫存儲器重映射。
對于RA6M5(176 pin)芯片,其內部線性地址空間劃分為如下區(qū)域:
表2:線性地址空間區(qū)域劃分
表格中的“0x4000_0000~0x4018_0000-1”區(qū)域,也就是“0x4000_0000~0x4017_FFFF”區(qū)域,它映射到了絕大部分外設模塊的寄存器。
3.3.3
外設基地址和外設寄存器地址
如下圖所示:
圖中①處為該外設的基地址,也就是IO端口的基地址。因為RA6M5的IO端口不止有一個,而是有16個端口(用PORTm表示,m=0~9,A,B),所以每一個端口都有一個基地址,每個端口的基地址都可以用圖中的公式來計算出來。
圖中②處為該外設寄存器的地址偏移,圖中的寄存器為PCNTR1/PODR/PDR寄存器,而“Offset address:0x000”表示的是該寄存器相對于基地址的偏移量。
舉例來說
當我們要讀取PORT1的PCNTR1/PODR/PDR寄存器的值時,我們要先計算出該寄存器的地址為:(0x40080000+0x0020*1),然后再把該地址值轉換為C語言的指針:(uint32_t*)(0x40080000+0x0020*1),最后再取值即可讀出該寄存器的值:*((uint32_t*)(0x40080000+0x0020*1))。
需要注意的是,每一種外設模塊下面都會有多個寄存器,每個寄存器都有特定的功能。對于一些功能相對復雜的外設來說,它們的寄存器數量可以達到十幾個甚至幾十個。以IOPORT1為例,它的基地址為:0x40080020,下表則展示了它部分的寄存器名稱、寄存器地址以及相對于基地址的偏移。
表3:IOPORT1寄存器及其地址
注解
注:由于基地址不同,上述表格未包含PmnPFS等這些也和IOPORT1有關的寄存器。
3.3.4
外設寄存器
下圖所示為外設寄存器的一般格式。
說明:
寄存器名稱。
外設模塊基地址及其寄存器偏移地址。
寄存器位表格。32位MCU的寄存器大小一般為32位(bit),占四個字節(jié)。“Bit position”為位號,指示該位處于該寄存器中的位置;“Bit field”為位域,一般不同的位域有不同的作用;“Value after reset”為復位值,指示該位的復位值。
位域功能說明。這部分為對每一個位域的功能的詳細說明。
-
mcu
+關注
關注
146文章
17751瀏覽量
358768 -
存儲器
+關注
關注
38文章
7617瀏覽量
166062 -
瑞薩電子
+關注
關注
37文章
2904瀏覽量
73054 -
映射
+關注
關注
0文章
48瀏覽量
16035 -
FSP
+關注
關注
0文章
40瀏覽量
7317
原文標題:存儲器映射——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(09)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
瑞薩e2studio(1)----瑞薩芯片之搭建FSP環(huán)境
【瑞薩RA2L1入門學習】RA2L1開發(fā)環(huán)境搭建
【瑞薩RA4系列開發(fā)板體驗】開發(fā)環(huán)境搭建和新手點燈指南
【瑞薩RA4系列開發(fā)板體驗】1、開發(fā)板要來了(1)
【野火啟明6M5開發(fā)板體驗】野火啟明開發(fā)板和瑞薩RA MCU介紹
【瑞薩RA4系列開發(fā)板體驗】體驗過程
【野火啟明6M5開發(fā)板體驗】開箱+認識開發(fā)板+資料
瑞薩推出SH7216系列32-位片上Flash存儲器MCU

評論