存儲器與總線架構(gòu)_第1頁
存儲器與總線架構(gòu)_第2頁
存儲器與總線架構(gòu)_第3頁
存儲器與總線架構(gòu)_第4頁
存儲器與總線架構(gòu)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、關(guān)于存儲器與總線架構(gòu)第1頁,共37頁,2022年,5月20日,21點29分,星期三一、系統(tǒng)構(gòu)架1、STM32系統(tǒng)包含的基本單元四個驅(qū)動單元:Cortex-M3內(nèi)核ICode總線(I-bus)、DCode 總線(D-bus)和系統(tǒng)總線(S-bus),GP-DMA(通用DMA) 三個被動單元:內(nèi)部SRAM,內(nèi)部閃存FLASH存儲器,AHB到APB的橋(AHB2APBx),它連接所有的APB設(shè)備第2頁,共37頁,2022年,5月20日,21點29分,星期三2、系統(tǒng)結(jié)構(gòu)如下圖所示第3頁,共37頁,2022年,5月20日,21點29分,星期三ICode總線:該總線將Cortex-M3內(nèi)核的指令總線與Fl

2、ash指令接口相連接,指令預(yù)取在此總線上完成。DCode總線:該總線將Cortex-M3內(nèi)核的DCode總線與閃存存儲器的數(shù)據(jù)接口相連接(常量加載和調(diào)試訪問)。系統(tǒng)總線:此總線連接Cortex-M3內(nèi)核的系統(tǒng)總線(外設(shè)總線)到總線矩陣,總線矩陣協(xié)調(diào)著內(nèi)核和DMA間的訪問。DMA總線:此總線將DMA的AHB主控接口與總線矩陣相聯(lián),總線矩陣協(xié)調(diào)著CPU的DCode和DMA到SRAM、閃存和外設(shè)的訪問。 第4頁,共37頁,2022年,5月20日,21點29分,星期三總線矩陣:此總線矩陣協(xié)調(diào)內(nèi)核系統(tǒng)總線和DMA主控總線之間的訪問仲裁。此總線矩陣由3個驅(qū)動部件(CPU的DCode、系統(tǒng)總線和DMA總線)

3、和3個被動部件(閃存存儲器接口、SRAM和AHB2APB橋)構(gòu)成。AHB外設(shè)通過總線矩陣與系統(tǒng)總線相連,允許DMA訪問。AHB/APB橋(APB):兩個AHB/APB 橋在AHB和2個APB總線間提供同步連接。APB1操作速度限于36MHz,APB2工作在全速狀態(tài)(最高72MHz)。第5頁,共37頁,2022年,5月20日,21點29分,星期三二、存儲器組織1、存儲器的組織方法程序存儲器、數(shù)據(jù)存儲器、寄存器和輸入輸出端口被組織在同一個4GB的線性地址空間內(nèi)。數(shù)據(jù)字節(jié)以小端格式存放在存儲器中。一個字中最低地址字節(jié)被認(rèn)為是該字的最低位字節(jié),而最高地址字節(jié)是最高位字節(jié)??稍L問的存儲器空間被分成8個5

4、12MB的主要塊,其他所有沒有分配給片上存儲器和外設(shè)的存儲器空間都是保留的地址空間第6頁,共37頁,2022年,5月20日,21點29分,星期三2、存儲器映像 第7頁,共37頁,2022年,5月20日,21點29分,星期三(續(xù)圖) 第8頁,共37頁,2022年,5月20日,21點29分,星期三3、外設(shè)存儲器映像 起始地址外設(shè)總線寄存器映像0 x4002 2400 - 0 x4002 3FFF 保留0 x4002 2000 - 0 x4002 23FF 閃存存儲器接口0 x4002 1400 - 0 x4002 1FFF 保留AHB 0 x4002 1000 - 0 x4002 13FF 復(fù)位和

5、時鐘控制0 x4002 0400 - 0 x4002 0FFF 保留0 x4002 0000 - 0 x4002 03FF DMA 第9頁,共37頁,2022年,5月20日,21點29分,星期三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時鐘0 x4001 2800 - 0 x4001 2BFF ADC2 APB10 x4

6、001 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 第10頁,共37頁,2022年,5月20日,21點29分,星期三0 x4001 0800 - 0 x4001 0BFF GPIO端口A 0 x4001 0400 - 0 x4001 07FF EX

7、TI 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 - 0

8、 x4000 5BFF I2C2 0 x4000 5400 - 0 x4000 57FF I2C1 第11頁,共37頁,2022年,5月20日,21點29分,星期三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 x400

9、0 33FF 獨立看門狗(IWDG) 0 x4000 2C00 - 0 x4000 2FFF 窗口看門狗(WWDG) 0 x4000 2800 - 0 x4000 2BFF RTC 0 x4000 2400 - 0 x4000 0FFF 保留0 x4000 0800 - 0 x4000 0BFF TIM4定時器0 x4000 0400 - 0 x4000 07FF TIM3定時器0 x4000 0000 - 0 x4000 03FF TIM2定時器第12頁,共37頁,2022年,5月20日,21點29分,星期三4、STM32F10X中各接口部件中的寄存器 STM32F103系列微控制器嵌入的各

10、種接口部件都有三大類寄存器:控制寄存器、數(shù)據(jù)寄存器和狀態(tài)寄存器,每一類寄存器都包含了多個寄存器,它們在相同的基地址下具有不同的偏移地址。例:TIM2定時器的基地址是:0 x4000 0000 控制寄存器1的偏移地址是:00H 控制寄存器2的偏移地址是:04H 從模式控制寄存器的偏移地址是:08H DMA/中斷使能寄存器的偏移地址是:0CH等第13頁,共37頁,2022年,5月20日,21點29分,星期三由上表述可得到它們的物理地址是: 控制寄存器1的物理地址是: 0 x4000 0000 控制寄存器2的物理地址是: 0 x4000 0004 從模式控制寄存器的物理地址是: 0 x4000 00

11、08 DMA/中斷使能寄存器的物理地址是: 0 x4000 000C等因此對這些寄存器的操作實際上就是對其物理地址中內(nèi)容的操作第14頁,共37頁,2022年,5月20日,21點29分,星期三5、嵌入式SRAM STM32F10 x內(nèi)置20K字節(jié)的靜態(tài)SRAM,它可以以字節(jié)、半字(16位)或全字(32位)訪問,SRAM的起始地址是0 x2000 0000第15頁,共37頁,2022年,5月20日,21點29分,星期三6、嵌入式閃存高性能的閃存模塊有以下的主要特性:128K字節(jié)閃存擦寫次數(shù):100萬次存儲器結(jié)構(gòu):閃存存儲器有主存儲塊和信息塊組成(1)主存儲塊為16Kx64位,每個主存儲塊又劃分為1

12、28個1K字節(jié)的頁。(2)信息塊為320 x64位,每個信息塊又劃分為一個2K字節(jié)和一個0.5K字節(jié)的頁第16頁,共37頁,2022年,5月20日,21點29分,星期三三、啟動配置 啟動模式選擇管腳啟動模式說明BOOT1BOOT0 x0用戶Flash用戶閃存被選為啟動區(qū)域01系統(tǒng)存儲器系統(tǒng)存儲器被選為啟動區(qū)域11內(nèi)嵌SRAM內(nèi)嵌 SRAM被選為啟動區(qū)域 在STM32F10 x里,可以通過BOOT1:0引腳選擇三種不同啟動模式第17頁,共37頁,2022年,5月20日,21點29分,星期三四、STM32F10X提供的固件庫 固件庫包括了程序、數(shù)據(jù)結(jié)構(gòu)和覆蓋所有外部特性的宏單元,還包括設(shè)備驅(qū)動的描

13、述以及每個外圍模塊的實例。 為了方便用戶的編程,STM32F10X對接口部件中寄存器的操作轉(zhuǎn)變成了對固件庫的操作。即只要調(diào)用固件庫中的相關(guān)函數(shù),就可以完成對接口寄存器的操作。 STM32F10X中固件庫中的函數(shù)是以接口部件來分類的。第18頁,共37頁,2022年,5月20日,21點29分,星期三1、STM32固件庫的定義規(guī)則STM32固件庫中使用的縮寫詞: 縮寫外圍模塊/單元縮寫外圍模塊/單元ADC模/數(shù)轉(zhuǎn)換PWR電源控制BKP備份寄存器RCC復(fù)位和時鐘控制CAN控制器區(qū)域網(wǎng)絡(luò)RTC實時時鐘DMA直接存儲器存取控制SPI串行外圍接口EXTI外部中斷控制器SysTick系統(tǒng)tick定時器FLAS

14、HFlash存儲器TIM通用定時器GPIO通用I/OTIM1先進(jìn)的控制定時器I2CI2C接口USART通用同步異步接收傳送器IWDG獨立看門狗WWDG窗口看門狗NVIC嵌套向量中斷控制器第19頁,共37頁,2022年,5月20日,21點29分,星期三(1)固件庫的命名規(guī)則 PPP表示外圍模塊的縮寫 系統(tǒng)文件名和源/頭文件名以“stm32f10 x_”的形式表示,例如stm32f10 x_conf.h。 在單一文件中使用的常量在該文件中定義,在多個文件中使用的常量定義在頭文件中,所有的常量以大寫字母表示。 寄存器當(dāng)作常量看待。同樣以大寫字母表示。第20頁,共37頁,2022年,5月20日,21點

15、29分,星期三 外圍模塊功能函數(shù)的名字需要有相應(yīng)的外圍模塊縮寫加下劃線這樣的前綴。每個單詞的首寫字符需要大寫。例SPI_SendData 使用PPP_InitTypeDef中指定的參數(shù)初始化PPP外圍模塊的函數(shù),被命名為PPP_Init。 復(fù)位PPP外圍模塊寄存器為默認(rèn)值的函數(shù),命名為PPP_DeInit。 將PPP_InitTypeDef結(jié)構(gòu)體中的每個成員設(shè)置為復(fù)位值的函數(shù),命名為PPP_StructInit。第21頁,共37頁,2022年,5月20日,21點29分,星期三 用來使能或禁止指定的PPP外圍模塊的函數(shù),命名為PPP_Cmd 用來使能或禁止指定的PPP外圍模塊的某個中斷資源的函數(shù)

16、,命名為PPP_ITConfig 用來使能或禁止指定的PPP外圍模塊的DMA接口的函數(shù),被命名為PPP_DMAConfig。 用來設(shè)置某個外圍模塊的函數(shù),總是以“Config”結(jié)尾。第22頁,共37頁,2022年,5月20日,21點29分,星期三 用來檢測指定PPP的標(biāo)志是否被置位或清0的函數(shù),命名為PPP_GetFlagStatus。 用來清除某個PPP的標(biāo)志的函數(shù),命名為PPP_ClearFlag 用來檢驗指定PPP的中斷是否發(fā)生的函數(shù),命名為PPP_GetITPendingBit 用來清除某個PPP中斷掛起位的函數(shù),命名為PPP_ClearITPendingBit第23頁,共37頁,20

17、22年,5月20日,21點29分,星期三(2)代碼標(biāo)準(zhǔn) 變量定義了18個變量類型,在頭文件stm32f10 x_type.h中Typedef signed long s32;Typedef 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 unsig

18、ned char u8;第24頁,共37頁,2022年,5月20日,21點29分,星期三Typedef unsigned long const uc32;Typedef unsigned short const uc16;Typedef unsigned char const uc8;Typedef volatile unsigned long vu32;Typedef volatile unsigned short vu16;Typedef volatile unsigned char vu8;Typedef volatile unsigned long const vuc32;Typede

19、f volatile unsigned short const vuc16;Typedef volatile unsigned char const vuc8;第25頁,共37頁,2022年,5月20日,21點29分,星期三 布爾(bool)類型布爾類型在頭文件stm32f10 x_type.h中定義Typedef enumFALSE = 0,TRUE = !FALSEbool; 標(biāo)志狀態(tài)(FunctionlState)類型標(biāo)志狀態(tài)類型在頭文件stm32f10 x_type.h中定義Typedef enumRESET = 0,SET = !RESETFlagStatus;第26頁,共37頁,2

20、022年,5月20日,21點29分,星期三 功能狀態(tài)(FunctionlState)類型功能狀態(tài)類型在頭文件stm32f10 x_type.h中定義Typedef enumDISABLE = 0,ENABLE = !DISABLEFunctionlState; 錯誤狀態(tài)(FunctionlState)類型錯誤狀態(tài)類型在頭文件stm32f10 x_type.h中定義Typedef enumERROR = 0,SUCCESS = !ERRORErrorStatus;第27頁,共37頁,2022年,5月20日,21點29分,星期三(3)外圍模塊指向外圍模塊的指針,用來訪問外圍模塊控制寄存器。 外圍模

21、塊控制寄存器結(jié)構(gòu)stm32f10 x_map.h包含了所有外圍模塊結(jié)構(gòu)的定義。下面是一個SPI寄存器結(jié)構(gòu)的聲明Typedef structvu16CR1/* SPI 控制寄存器1 */u16RESERVED0 /* 保留0 */vu16CR2/* SPI 控制寄存器2 */u16RESERVED1 /* 保留1 */第28頁,共37頁,2022年,5月20日,21點29分,星期三vu16SR/* SPI 狀態(tài)寄存器 */u16RESERVED2/* 保留2 */vu16DR/* SPI 數(shù)據(jù)寄存器 */u16RESERVED3/* 保留3 */vu16CRCPR/* SPI CRC多項式寄存器

22、 */u16RESERVED4/* 保留4 */vu16RXCRCR/* SPI Rx CRC 寄存器 */ u16RESERVED5/* 保留5 */vu16TXCRCR/* SPI Tx CRC 寄存器 */ u16RESERVED6/* 保留6 */SPI_TypeDef 每個外圍模塊的寄存器名是該寄存器的縮寫,用大寫表示。RESERVEDi(i是正數(shù),作為保留域的下標(biāo))表示保留域。第29頁,共37頁,2022年,5月20日,21點29分,星期三 外圍模塊聲明所有外圍模塊在stm32f10 x_map.h中聲明。下面給出了SPI外圍模塊的聲明#ifndef EXT#Define EXT

23、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)第30頁,共37頁,2022年,5月20日,21點29分,星期三/* SPI2 外圍聲明 */#ifndef DEBUG#ifdef _SPI2 #define SPI2(SPI_TypeDef *)SPI2_BASE

24、)#endif /* _SPI2 */#else /* DEBUG */#ifdef _SPI2 EXT SPI_TypeDef *SPI2#endif/* _SPI2 */#endif/* DEBUG */第31頁,共37頁,2022年,5月20日,21點29分,星期三說明:(1)定義標(biāo)簽_SPI,用來在應(yīng)用程序中引入SPI外圍模塊庫(_SPI標(biāo)簽定義在stm32f10 x_conf.h中)。(2)定義label_SPIn,用來訪問SPIn的外圍寄存器(_SPIn標(biāo)簽定義在stm32f10 x_conf.h中)。(3)為了進(jìn)入調(diào)試模式,用戶必須在頭文件stm32f10 x_conf.h中定義標(biāo)簽DEBUG。這樣就構(gòu)成了一個指向SRAM中外圍模塊結(jié)構(gòu)體的指針,從而使調(diào)試變的簡單,并且所有寄存器的設(shè)置可以通過轉(zhuǎn)儲一個外圍變量來實現(xiàn)。第32頁,共37頁,2022年,5月20日,21點29分,星期三2、STM32固件庫的層次結(jié)構(gòu)(1)示例(Examples)文件夾Examples包含每個外設(shè)模塊的子文件夾,每個子文件夾提供了運行該外設(shè)所需要的最小文件集。 readme.txt:描述示例如

溫馨提示

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

評論

0/150

提交評論