第2章 存儲(chǔ)器與總線(xiàn)架構(gòu)_第1頁(yè)
第2章 存儲(chǔ)器與總線(xiàn)架構(gòu)_第2頁(yè)
第2章 存儲(chǔ)器與總線(xiàn)架構(gòu)_第3頁(yè)
第2章 存儲(chǔ)器與總線(xiàn)架構(gòu)_第4頁(yè)
第2章 存儲(chǔ)器與總線(xiàn)架構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第2章 存儲(chǔ)器與總線(xiàn)構(gòu)架一、系統(tǒng)構(gòu)架1、STM32系統(tǒng)包含的基本單元l四個(gè)驅(qū)動(dòng)單元:Cortex-M3內(nèi)核ICode總線(xiàn)(I-bus)、DCode 總線(xiàn)(D-bus)和系統(tǒng)總線(xiàn)(S-bus),GP-DMA(通用DMA) l三個(gè)被動(dòng)單元:內(nèi)部SRAM,內(nèi)部閃存FLASH存儲(chǔ)器,AHB到APB的橋(AHB2APBx),它連接所有的APB設(shè)備2、系統(tǒng)結(jié)構(gòu)如下圖所示lICode總線(xiàn):該總線(xiàn)將Cortex-M3內(nèi)核的指令總線(xiàn)與Flash指令接口相連接,指令預(yù)取在此總線(xiàn)上完成。lDCode總線(xiàn):該總線(xiàn)將Cortex-M3內(nèi)核的DCode總線(xiàn)與閃存存儲(chǔ)器的數(shù)據(jù)接口相連接(常量加載和調(diào)試訪(fǎng)問(wèn))。l系統(tǒng)總線(xiàn):此

2、總線(xiàn)連接Cortex-M3內(nèi)核的系統(tǒng)總線(xiàn)(外設(shè)總線(xiàn))到總線(xiàn)矩陣,總線(xiàn)矩陣協(xié)調(diào)著內(nèi)核和DMA間的訪(fǎng)問(wèn)。lDMA總線(xiàn):此總線(xiàn)將DMA的AHB主控接口與總線(xiàn)矩陣相聯(lián),總線(xiàn)矩陣協(xié)調(diào)著CPU的DCode和DMA到SRAM、閃存和外設(shè)的訪(fǎng)問(wèn)。 l總線(xiàn)矩陣:此總線(xiàn)矩陣協(xié)調(diào)內(nèi)核系統(tǒng)總線(xiàn)和DMA主控總線(xiàn)之間的訪(fǎng)問(wèn)仲裁。此總線(xiàn)矩陣由3個(gè)驅(qū)動(dòng)部件(CPU的DCode、系統(tǒng)總線(xiàn)和DMA總線(xiàn))和3個(gè)被動(dòng)部件(閃存存儲(chǔ)器接口、SRAM和AHB2APB橋)構(gòu)成。AHB外設(shè)通過(guò)總線(xiàn)矩陣與系統(tǒng)總線(xiàn)相連,允許DMA訪(fǎng)問(wèn)。lAHB/APB橋(APB):兩個(gè)AHB/APB 橋在A(yíng)HB和2個(gè)APB總線(xiàn)間提供同步連接。APB1操作速度限

3、于36MHz,APB2工作在全速狀態(tài)(最高72MHz)。二、存儲(chǔ)器組織1、存儲(chǔ)器的組織方法l程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、寄存器和輸入輸出端口被組織在同一個(gè)4GB的線(xiàn)性地址空間內(nèi)。l數(shù)據(jù)字節(jié)以小端格式存放在存儲(chǔ)器中。一個(gè)字中最低地址字節(jié)被認(rèn)為是該字的最低位字節(jié),而最高地址字節(jié)是最高位字節(jié)。l可訪(fǎng)問(wèn)的存儲(chǔ)器空間被分成8個(gè)512MB的主要塊,其他所有沒(méi)有分配給片上存儲(chǔ)器和外設(shè)的存儲(chǔ)器空間都是保留的地址空間2、存儲(chǔ)器映像 (續(xù)圖) 3、外設(shè)存儲(chǔ)器映像 起始地址外設(shè)總線(xiàn)寄存器映像0 x4002 2400 - 0 x4002 3FFF 保留0 x4002 2000 - 0 x4002 23FF 閃存存儲(chǔ)器接口

4、0 x4002 1400 - 0 x4002 1FFF 保留AHB 0 x4002 1000 - 0 x4002 13FF 復(fù)位和時(shí)鐘控制0 x4002 0400 - 0 x4002 0FFF 保留0 x4002 0000 - 0 x4002 03FF DMA 0 x4001 3C00 - 0 x4001 3FFF 保留0 x4001 3800 - 0 x4001 3BFF USART1 0 x4001 3400 - 0 x4001 37FF 保留0 x4001 3000 - 0 x4001 33FF SPI1 0 x4001 2C00 - 0 x4001 2FFF TIM1時(shí)鐘0 x4001

5、 2800 - 0 x4001 2BFF ADC2 APB10 x4001 2400 - 0 x4001 27FF ADC1 0 x4001 2000 - 0 x4001 1FFF 保留0 x4001 1800 - 0 x4001 1BFF GPIO端口E 0 x4001 1400 - 0 x4001 17FF GPIO端口D 0 x4001 1000 - 0 x4001 13FF GPIO端口C 0X4001 0C00 - 0 x4001 0FFF GPIO端口B 0 x4001 0800 - 0 x4001 0BFF GPIO端口A(yíng) 0 x4001 0400 - 0 x4001 07FF

6、EXTI 0 x4001 0000 - 0 x4001 03FF AFIO 0 x4000 8000 - 0 x4000 77FF 保留0 x4000 7000 - 0 x4000 73FF 電源控制0 x4000 6C00 - 0 x4000 6FFF 后備寄存器(BKP) APB10 x4000 6800 - 0 x4000 6BFF 保留0 x4000 6400 - 0 x4000 67FF bxCAN 0 x4000 6000 - 0 x4000 63FF USB的SRAM 256x16 位0 x4000 5C00 - 0 x4000 5FFF USB寄存器0 x4000 5800 -

7、 0 x4000 5BFF I2C2 0 x4000 5400 - 0 x4000 57FF I2C1 0 x4000 5000 - 0 x4000 4FFF 保留0 x4000 4800 - 0 x4000 4BFF USART3 0 x4000 4400 - 0 x4000 47FF USART2 0 x4000 4000 - 0 x4000 3FFF 保留0 x4000 3800 - 0 x4000 3BFF SPI2 0 x4000 3400 - 0 x4000 37FF 保留APB10 x4000 3000 - 0 x4000 33FF 獨(dú)立看門(mén)狗(IWDG) 0 x4000 2C0

8、0 - 0 x4000 2FFF 窗口看門(mén)狗(WWDG) 0 x4000 2800 - 0 x4000 2BFF RTC 0 x4000 2400 - 0 x4000 0FFF 保留0 x4000 0800 - 0 x4000 0BFF TIM4定時(shí)器0 x4000 0400 - 0 x4000 07FF TIM3定時(shí)器0 x4000 0000 - 0 x4000 03FF TIM2定時(shí)器4、STM32F10X中各接口部件中的寄存器 STM32F103系列微控制器嵌入的各種接口部件都有三大類(lèi)寄存器:控制寄存器、數(shù)據(jù)寄存器和狀態(tài)寄存器,每一類(lèi)寄存器都包含了多個(gè)寄存器,它們?cè)谙嗤幕刂废戮哂胁煌?/p>

9、的偏移地址。例:TIM2定時(shí)器的基地址是:0 x4000 0000 控制寄存器1的偏移地址是:00H 控制寄存器2的偏移地址是:04H 從模式控制寄存器的偏移地址是:08H DMA/中斷使能寄存器的偏移地址是:0CH等由上表述可得到它們的物理地址是: 控制寄存器1的物理地址是: 0 x4000 0000 控制寄存器2的物理地址是: 0 x4000 0004 從模式控制寄存器的物理地址是: 0 x4000 0008 DMA/中斷使能寄存器的物理地址是: 0 x4000 000C等因此對(duì)這些寄存器的操作實(shí)際上就是對(duì)其物理地址中內(nèi)容的操作5、嵌入式SRAM STM32F10 x內(nèi)置20K字節(jié)的靜態(tài)S

10、RAM,它可以以字節(jié)、半字(16位)或全字(32位)訪(fǎng)問(wèn),SRAM的起始地址是0 x2000 00006、嵌入式閃存高性能的閃存模塊有以下的主要特性:l128K字節(jié)閃存l擦寫(xiě)次數(shù):100萬(wàn)次存儲(chǔ)器結(jié)構(gòu):閃存存儲(chǔ)器有主存儲(chǔ)塊和信息塊組成(1)主存儲(chǔ)塊為16Kx64位,每個(gè)主存儲(chǔ)塊又劃分為128個(gè)1K字節(jié)的頁(yè)。(2)信息塊為320 x64位,每個(gè)信息塊又劃分為一個(gè)2K字節(jié)和一個(gè)0.5K字節(jié)的頁(yè)三、啟動(dòng)配置 啟動(dòng)模式選擇管腳啟動(dòng)模式說(shuō)明BOOT1BOOT0 x0用戶(hù)Flash用戶(hù)閃存被選為啟動(dòng)區(qū)域01系統(tǒng)存儲(chǔ)器系統(tǒng)存儲(chǔ)器被選為啟動(dòng)區(qū)域11內(nèi)嵌SRAM內(nèi)嵌 SRAM被選為啟動(dòng)區(qū)域 在STM32F10

11、x里,可以通過(guò)BOOT1:0引腳選擇三種不同啟動(dòng)模式四、STM32F10X提供的固件庫(kù) 固件庫(kù)包括了程序、數(shù)據(jù)結(jié)構(gòu)和覆蓋所有外部特性的宏單元,還包括設(shè)備驅(qū)動(dòng)的描述以及每個(gè)外圍模塊的實(shí)例。 為了方便用戶(hù)的編程,STM32F10X對(duì)接口部件中寄存器的操作轉(zhuǎn)變成了對(duì)固件庫(kù)的操作。即只要調(diào)用固件庫(kù)中的相關(guān)函數(shù),就可以完成對(duì)接口寄存器的操作。 STM32F10X中固件庫(kù)中的函數(shù)是以接口部件來(lái)分類(lèi)的。1、STM32固件庫(kù)的定義規(guī)則STM32固件庫(kù)中使用的縮寫(xiě)詞: 縮寫(xiě)外圍模塊/單元縮寫(xiě)外圍模塊/單元ADC模/數(shù)轉(zhuǎn)換PWR電源控制BKP備份寄存器RCC復(fù)位和時(shí)鐘控制CAN控制器區(qū)域網(wǎng)絡(luò)RTC實(shí)時(shí)時(shí)鐘DMA直

12、接存儲(chǔ)器存取控制SPI串行外圍接口EXTI外部中斷控制器SysTick 系統(tǒng)tick定時(shí)器FLASHFlash存儲(chǔ)器TIM通用定時(shí)器GPIO通用I/OTIM1先進(jìn)的控制定時(shí)器I2CI2C接口USART通用同步異步接收傳送器IWDG獨(dú)立看門(mén)狗WWDG窗口看門(mén)狗NVIC嵌套向量中斷控制器(1)固件庫(kù)的命名規(guī)則l PPP表示外圍模塊的縮寫(xiě)l 系統(tǒng)文件名和源/頭文件名以“stm32f10 x_”的形式表示,例如stm32f10 x_conf.h。l 在單一文件中使用的常量在該文件中定義,在多個(gè)文件中使用的常量定義在頭文件中,所有的常量以大寫(xiě)字母表示。l 寄存器當(dāng)作常量看待。同樣以大寫(xiě)字母表示。l 外圍

13、模塊功能函數(shù)的名字需要有相應(yīng)的外圍模塊縮寫(xiě)加下劃線(xiàn)這樣的前綴。每個(gè)單詞的首寫(xiě)字符需要大寫(xiě)。例SPI_SendDatal 使用PPP_InitTypeDef中指定的參數(shù)初始化PPP外圍模塊的函數(shù),被命名為PPP_Init。l 復(fù)位PPP外圍模塊寄存器為默認(rèn)值的函數(shù),命名為PPP_DeInit。l 將PPP_InitTypeDef結(jié)構(gòu)體中的每個(gè)成員設(shè)置為復(fù)位值的函數(shù),命名為PPP_StructInit。l 用來(lái)使能或禁止指定的PPP外圍模塊的函數(shù),命名為PPP_Cmd l 用來(lái)使能或禁止指定的PPP外圍模塊的某個(gè)中斷資源的函數(shù),命名為PPP_ITConfigl 用來(lái)使能或禁止指定的PPP外圍模塊的

14、DMA接口的函數(shù),被命名為PPP_DMAConfig。l 用來(lái)設(shè)置某個(gè)外圍模塊的函數(shù),總是以“Config”結(jié)尾。l 用來(lái)檢測(cè)指定PPP的標(biāo)志是否被置位或清0的函數(shù),命名為PPP_GetFlagStatus。l 用來(lái)清除某個(gè)PPP的標(biāo)志的函數(shù),命名為PPP_ClearFlagl 用來(lái)檢驗(yàn)指定PPP的中斷是否發(fā)生的函數(shù),命名為PPP_GetITPendingBitl 用來(lái)清除某個(gè)PPP中斷掛起位的函數(shù),命名為PPP_ClearITPendingBit(2)代碼標(biāo)準(zhǔn)l 變量定義了18個(gè)變量類(lèi)型,在頭文件stm32f10 x_type.h中Typedef signed long s32;Typede

15、f signed short s16;Typedef signed char s8;Typedef volatile signed long v32;Typedef volatile signed short v16;Typedef volatile signed char v8;Typedef unsigned long u32;Typedef unsigned short u16;Typedef unsigned char u8;Typedef unsigned long const uc32;Typedef unsigned short const uc16;Typedef unsign

16、ed char const uc8;Typedef volatile unsigned long vu32;Typedef volatile unsigned short vu16;Typedef volatile unsigned char vu8;Typedef volatile unsigned long const vuc32;Typedef volatile unsigned short const vuc16;Typedef volatile unsigned char const vuc8;l 布爾(bool)類(lèi)型布爾類(lèi)型在頭文件stm32f10 x_type.h中定義Typed

17、ef enumFALSE = 0,TRUE = !FALSEbool;l 標(biāo)志狀態(tài)(FunctionlState)類(lèi)型標(biāo)志狀態(tài)類(lèi)型在頭文件stm32f10 x_type.h中定義Typedef enumRESET = 0,SET = !RESETFlagStatus;l 功能狀態(tài)(FunctionlState)類(lèi)型功能狀態(tài)類(lèi)型在頭文件stm32f10 x_type.h中定義Typedef enumDISABLE = 0,ENABLE = !DISABLEFunctionlState;l 錯(cuò)誤狀態(tài)(FunctionlState)類(lèi)型錯(cuò)誤狀態(tài)類(lèi)型在頭文件stm32f10 x_type.h中定義Ty

18、pedef enumERROR = 0,SUCCESS = !ERRORErrorStatus;(3)外圍模塊指向外圍模塊的指針,用來(lái)訪(fǎng)問(wèn)外圍模塊控制寄存器。l 外圍模塊控制寄存器結(jié)構(gòu)stm32f10 x_map.h包含了所有外圍模塊結(jié)構(gòu)的定義。下面是一個(gè)SPI寄存器結(jié)構(gòu)的聲明Typedef structvu16CR1/* SPI 控制寄存器1 */u16RESERVED0 /* 保留0 */vu16CR2/* SPI 控制寄存器2 */u16RESERVED1 /* 保留1 */vu16SR/* SPI 狀態(tài)寄存器 */u16RESERVED2/* 保留2 */vu16DR/* SPI 數(shù)據(jù)

19、寄存器 */u16RESERVED3/* 保留3 */vu16CRCPR/* SPI CRC多項(xiàng)式寄存器 */u16RESERVED4/* 保留4 */vu16RXCRCR/* SPI Rx CRC 寄存器 */ u16RESERVED5/* 保留5 */vu16TXCRCR/* SPI Tx CRC 寄存器 */ u16RESERVED6/* 保留6 */SPI_TypeDef 每個(gè)外圍模塊的寄存器名是該寄存器的縮寫(xiě),用大寫(xiě)表示。RESERVEDi(i是正數(shù),作為保留域的下標(biāo))表示保留域。l 外圍模塊聲明所有外圍模塊在stm32f10 x_map.h中聲明。下面給出了SPI外圍模塊的聲明#i

20、fndef EXT#Define EXT extern#endif#define PERIPH_BASE(u32)0 x40000000)#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE (PERIPH_BASE + 0 x10000)/* SPI2 基地址的定義 */#define SPI2_BASE(APB1PERIPH_BASE + 0 x3800)/* SPI2 外圍聲明 */#ifndef DEBUG#ifdef _SPI2 #define SPI2(SPI_TypeDef *)SPI2_BASE)#endif /*

21、 _SPI2 */#else /* DEBUG */#ifdef _SPI2 EXT SPI_TypeDef *SPI2#endif/* _SPI2 */#endif/* DEBUG */說(shuō)明:(1)定義標(biāo)簽_SPI,用來(lái)在應(yīng)用程序中引入SPI外圍模塊庫(kù)(_SPI標(biāo)簽定義在stm32f10 x_conf.h中)。(2)定義label_SPIn,用來(lái)訪(fǎng)問(wèn)SPIn的外圍寄存器(_SPIn標(biāo)簽定義在stm32f10 x_conf.h中)。(3)為了進(jìn)入調(diào)試模式,用戶(hù)必須在頭文件stm32f10 x_conf.h中定義標(biāo)簽DEBUG。這樣就構(gòu)成了一個(gè)指向SRAM中外圍模塊結(jié)構(gòu)體的指針,從而使調(diào)試變的簡(jiǎn)單,并且所有寄存器的設(shè)置可以通過(guò)轉(zhuǎn)儲(chǔ)一個(gè)外圍變量來(lái)實(shí)現(xiàn)。2、STM32固件庫(kù)的層次結(jié)構(gòu)(1)示例(Examples)文件夾Examples包含每個(gè)外設(shè)模塊的子文件夾,每個(gè)子文件夾提供了運(yùn)行該外設(shè)所需要的最小文件集。l readme.txt:描述示例如何工作。l stm32f10 x_conf.h:頭文件,配置所使用的外圍模塊,并且包括各種DEFI

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論