libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
stm32/g4/memorymap.h
Go to the documentation of this file.
1/*
2 * This file is part of the libopencm3 project.
3 *
4 * This library is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this library. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef LIBOPENCM3_MEMORYMAP_H
19#define LIBOPENCM3_MEMORYMAP_H
20
22
23#define FLASH_BASE (0x08000000U)
24#define PERIPH_BASE (0x40000000U)
25#define INFO_BASE (0x1fff0000U)
26#define PERIPH_BASE_APB1 (0x40000000U)
27#define PERIPH_BASE_APB2 (0x40010000U)
28#define PERIPH_BASE_AHB1 (0x40020000U)
29#define PERIPH_BASE_IOPORT (0x48000000U)
30#define PERIPH_BASE_AHB2 (0x50000000U)
31#define FMC1_BANK_BASE (0x60000000U)
32#define FMC3_BANK_BASE (0x80000000U)
33#define QUADSPI_BANK_BASE (0x90000000U)
34
35
36/* APB1 */
37#define TIM2_BASE (PERIPH_BASE_APB1 + 0x0000)
38#define TIM3_BASE (PERIPH_BASE_APB1 + 0x0400)
39#define TIM4_BASE (PERIPH_BASE_APB1 + 0x0800)
40#define TIM5_BASE (PERIPH_BASE_APB1 + 0x0c00)
41#define TIM6_BASE (PERIPH_BASE_APB1 + 0x1000)
42#define TIM7_BASE (PERIPH_BASE_APB1 + 0x1400)
43#define CRS_BASE (PERIPH_BASE_APB1 + 0x2000)
44#define TAMP_BASE (PERIPH_BASE_APB1 + 0x2400)
45#define RTC_BASE (PERIPH_BASE_APB1 + 0x2800)
46#define WWDG_BASE (PERIPH_BASE_APB1 + 0x2c00)
47#define IWDG_BASE (PERIPH_BASE_APB1 + 0x3000)
48#define SPI2_BASE (PERIPH_BASE_APB1 + 0x3800)
49#define SPI3_BASE (PERIPH_BASE_APB1 + 0x3c00)
50#define USART2_BASE (PERIPH_BASE_APB1 + 0x4400)
51#define USART3_BASE (PERIPH_BASE_APB1 + 0x4800)
52#define UART4_BASE (PERIPH_BASE_APB1 + 0x4C00)
53#define UART5_BASE (PERIPH_BASE_APB1 + 0x5000)
54#define I2C1_BASE (PERIPH_BASE_APB1 + 0x5400)
55#define I2C2_BASE (PERIPH_BASE_APB1 + 0x5800)
56#define USB_DEV_FS_BASE (PERIPH_BASE_APB1 + 0x5c00)
57#define USB_PMA_BASE (PERIPH_BASE_APB1 + 0x6000)
58#define FDCAN1_BASE (PERIPH_BASE_APB1 + 0x6400)
59#define FDCAN2_BASE (PERIPH_BASE_APB1 + 0x6800)
60#define FDCAN3_BASE (PERIPH_BASE_APB1 + 0x6c00)
61#define POWER_CONTROL_BASE (PERIPH_BASE_APB1 + 0x7000)
62#define I2C3_BASE (PERIPH_BASE_APB1 + 0x7800)
63#define LPTIM1_BASE (PERIPH_BASE_APB1 + 0x7c00)
64#define LPUART1_BASE (PERIPH_BASE_APB1 + 0x8000)
65#define I2C4_BASE (PERIPH_BASE_APB1 + 0x8400)
66#define UCPD1_BASE (PERIPH_BASE_APB1 + 0xA000)
67#define FDCAN1_RAM_BASE (PERIPH_BASE_APB1 + 0xA400)
68#define FDCAN2_RAM_BASE (PERIPH_BASE_APB1 + 0xA800)
69#define FDCAN3_RAM_BASE (PERIPH_BASE_APB1 + 0xAc00)
70
71/* APB2 */
72#define SYSCFG_BASE (PERIPH_BASE_APB2 + 0x0000)
73#define VREFBUF_BASE (PERIPH_BASE_APB2 + 0x0030)
74#define COMP_BASE (PERIPH_BASE_APB2 + 0x0200)
75#define OPAMP_BASE (PERIPH_BASE_APB2 + 0x0300)
76#define EXTI_BASE (PERIPH_BASE_APB2 + 0x0400)
77#define TIM1_BASE (PERIPH_BASE_APB2 + 0x2c00)
78#define SPI1_BASE (PERIPH_BASE_APB2 + 0x3000)
79#define TIM8_BASE (PERIPH_BASE_APB2 + 0x3400)
80#define USART1_BASE (PERIPH_BASE_APB2 + 0x3800)
81#define SPI4_BASE (PERIPH_BASE_APB2 + 0x3c00)
82#define TIM15_BASE (PERIPH_BASE_APB2 + 0x4000)
83#define TIM16_BASE (PERIPH_BASE_APB2 + 0x4400)
84#define TIM17_BASE (PERIPH_BASE_APB2 + 0x4800)
85#define TIM20_BASE (PERIPH_BASE_APB2 + 0x5000)
86#define SAI1_BASE (PERIPH_BASE_APB2 + 0x5400)
87#define HRTIM_BASE (PERIPH_BASE_APB2 + 0x6800)
88
89/* AHB1 */
90#define DMA1_BASE (PERIPH_BASE_AHB1 + 0x0000)
91#define DMA2_BASE (PERIPH_BASE_AHB1 + 0x0400)
92#define DMAMUX_BASE (PERIPH_BASE_AHB1 + 0x0800)
93#define CORDIC_BASE (PERIPH_BASE_AHB1 + 0x0c00)
94#define RCC_BASE (PERIPH_BASE_AHB1 + 0x1000)
95#define FMAC_BASE (PERIPH_BASE_AHB1 + 0x1400)
96#define FLASH_MEM_INTERFACE_BASE (PERIPH_BASE_AHB1 + 0x2000)
97#define CRC_BASE (PERIPH_BASE_AHB1 + 0x3000)
98
99/* IO */
100#define GPIO_PORT_A_BASE (PERIPH_BASE_IOPORT + 0x0000)
101#define GPIO_PORT_B_BASE (PERIPH_BASE_IOPORT + 0x0400)
102#define GPIO_PORT_C_BASE (PERIPH_BASE_IOPORT + 0x0800)
103#define GPIO_PORT_D_BASE (PERIPH_BASE_IOPORT + 0x0c00)
104#define GPIO_PORT_E_BASE (PERIPH_BASE_IOPORT + 0x1000)
105#define GPIO_PORT_F_BASE (PERIPH_BASE_IOPORT + 0x1400)
106#define GPIO_PORT_G_BASE (PERIPH_BASE_IOPORT + 0x1800)
107
108/* AHB2 */
109#define ADC1_BASE (PERIPH_BASE_AHB2 + 0x0000)
110#define ADC2_BASE (ADC1_BASE + 0x0100)
111#define ADC3_BASE (PERIPH_BASE_AHB2 + 0x0400)
112#define ADC4_BASE (ADC3_BASE + 0x0100)
113#define ADC5_BASE (ADC3_BASE + 0x0200)
114#define DAC1_BASE (PERIPH_BASE_AHB2 + 0x0800)
115#define DAC2_BASE (PERIPH_BASE_AHB2 + 0x0c00)
116#define DAC3_BASE (PERIPH_BASE_AHB2 + 0x1000)
117#define DAC4_BASE (PERIPH_BASE_AHB2 + 0x1400)
118#define AES_BASE (PERIPH_BASE_AHB2 + 0x60000)
119#define RNG_BASE (PERIPH_BASE_AHB2 + 0x60800)
120
121#define FMC_BASE (0xa0000000U)
122#define QUADSPI_BASE (0xa0001000U)
123
124/* Private peripherals */
125#define DBGMCU_BASE (PPBI_BASE + 0x42000)
126
127/* Device Electronic Signature */
128#define DESIG_FLASH_SIZE_BASE (INFO_BASE + 0x75e0)
129#define DESIG_UNIQUE_ID_BASE (INFO_BASE + 0x7590)
130#define DESIG_UNIQUE_ID0 MMIO32(DESIG_UNIQUE_ID_BASE)
131#define DESIG_UNIQUE_ID1 MMIO32(DESIG_UNIQUE_ID_BASE + 4)
132#define DESIG_UNIQUE_ID2 MMIO32(DESIG_UNIQUE_ID_BASE + 8)
133#define DESIG_PACKAGE MMIO16((INFO_BASE + 0x7500))
134
135/* ST provided factory calibration values @ 3.0V */
136#define ST_VREFINT_CAL MMIO16((INFO_BASE + 0x75aa))
137#define ST_TSENSE_CAL1_30C MMIO16((INFO_BASE + 0x75a8))
138#define ST_TSENSE_CAL2_110C MMIO16((INFO_BASE + 0x75ca))
139
140#endif