RTEMS 7.0-rc1
Loading...
Searching...
No Matches
stm32f4xxxx_flash.h
1/* SPDX-License-Identifier: GPL-2.0+-with-RTEMS-exception */
2
3/*
4 * Copyright (c) 2013 Chris Nott. All rights reserved.
5 *
6 * Virtual Logic
7 * 21-25 King St.
8 * Rockdale NSW 2216
9 * Australia
10 * <rtems@vl.com.au>
11 *
12 * The license and distribution terms for this file may be
13 * found in the file LICENSE in this distribution or at
14 * http://www.rtems.org/license/LICENSE.
15 */
16
17#ifndef LIBBSP_ARM_STM32F4_STM32F4XXXX_FLASH_H
18#define LIBBSP_ARM_STM32F4_STM32F4XXXX_FLASH_H
19
20#include <bsp/utility.h>
21
23
24 uint32_t acr; // Access and control register
25#define STM32F4_FLASH_ACR_DCRST BSP_BIT32(12) // Data cache reset
26#define STM32F4_FLASH_ACR_ICRST BSP_BIT32(11) // Instruction cache reset
27#define STM32F4_FLASH_ACR_DCEN BSP_BIT32(10) // Data cache enable
28#define STM32F4_FLASH_ACR_ICEN BSP_BIT32(9) // Instruction cache enable
29#define STM32F4_FLASH_ACR_PRFTEN BSP_BIT32(8) // Prefetch enable
30#define STM32F4_FLASH_ACR_LATENCY(val) BSP_FLD32(val, 0, 2) // Flash access latency
31#define STM32F4_FLASH_ACR_LATENCY_GET(reg) BSP_FLD32GET(reg, 0, 2)
32#define STM32F4_FLASH_ACR_LATENCY_SET(reg, val) BSP_FLD32SET(reg, val, 0, 2)
33
34 uint32_t keyr; // Key register
35#define STM32F4_FLASH_KEYR_KEY1 0x45670123
36#define STM32F4_FLASH_KEYR_KEY2 0xCDEF89AB
37
38 uint32_t optkeyr; // Option key register
39#define STM32F4_FLASH_OPTKEYR_OPTKEY1 0x08192A3B
40#define STM32F4_FLASH_OPTKEYR_OPTKEY2 0x4C5D6E7F
41
42 uint32_t sr; // Status register
43#define STM32F4_FLASH_SR_BSY BSP_BIT32(16) // Busy
44#define STM32F4_FLASH_SR_PGSERR BSP_BIT32(7) // Programming sequence error
45#define STM32F4_FLASH_SR_PGPERR BSP_BIT32(6) // Programming parallelism error
46#define STM32F4_FLASH_SR_PGAERR BSP_BIT32(5) // Programming alignment error
47#define STM32F4_FLASH_SR_WRPERR BSP_BIT32(4) // Write protection error
48#define STM32F4_FLASH_SR_OPERR BSP_BIT32(1) // Operation error
49#define STM32F4_FLASH_SR_EOP BSP_BIT32(0) // End of operation
50
51 uint32_t cr; // Control register
52#define STM32F4_FLASH_CR_LOCK BSP_BIT32(31) // Lock
53#define STM32F4_FLASH_CR_ERRIE BSP_BIT32(25) // Error interrupt enable
54#define STM32F4_FLASH_CR_EOPIE BSP_BIT32(24) // End of operation interrupt enable
55#define STM32F4_FLASH_CR_STRT BSP_BIT32(16) // Start
56#define STM32F4_FLASH_CR_PSIZE(val) BSP_FLD32(val, 8, 9) // Program size
57#define STM32F4_FLASH_CR_PSIZE_GET(reg) BSP_FLD32GET(reg, 8, 9)
58#define STM32F4_FLASH_CR_PSIZE_SET(reg, val) BSP_FLD32SET(reg, val, 8, 9)
59#define STM32F4_FLASH_CR_SNB BSP_FLD32(val, 3, 6) // Sector number
60#define STM32F4_FLASH_CR_SNB_GET(reg) BSP_FLD32GET(reg, 3, 6)
61#define STM32F4_FLASH_CR_SNB_SET(reg, val) BSP_FLD32SET(reg, val, 3, 6)
62#define STM32F4_FLASH_CR_MER BSP_BIT32(2) // Mass erase
63#define STM32F4_FLASH_CR_SER BSP_BIT32(1) // Sector erase
64#define STM32F4_FLASH_CR_PG BSP_BIT32(0) // Programming
65
66 uint32_t optcr; // Option control register
67#define STM32F4_FLASH_OPTCR_NWRP(val) BSP_FLD32(val, 16, 27) // Not write protect
68#define STM32F4_FLASH_OPTCR_NWRP_GET(reg) BSP_FLD32GET(reg, 16, 27)
69#define STM32F4_FLASH_OPTCR_NWRP_SET(reg, val) BSP_FLD32SET(reg, val, 16, 27)
70#define STM32F4_FLASH_OPTCR_RDP(val) BSP_FLD32(val, 8, 15) // Read protect
71#define STM32F4_FLASH_OPTCR_RDP_GET(reg) BSP_FLD32GET(reg, 8, 15)
72#define STM32F4_FLASH_OPTCR_RDP_SET(reg, val) BSP_FLD32SET(reg, val, 8, 15)
73#define STM32F4_FLASH_OPTCR_USER(val) BSP_FLD32(val, 5, 7) // User option bytes
74#define STM32F4_FLASH_OPTCR_USER_GET(reg) BSP_FLD32GET(reg, 5, 7)
75#define STM32F4_FLASH_OPTCR_USER_SET(reg, val) BSP_FLD32SET(reg, val, 5, 7)
76#define STM32F4_FLASH_OPTCR_BOR_LEVEL(val) BSP_FLD32(val, 2, 3) // BOR reset level
77#define STM32F4_FLASH_OPTCR_BOR_LEVEL_GET(reg) BSP_FLD32GET(reg, 2, 3)
78#define STM32F4_FLASH_OPTCR_BOR_LEVEL_SET(reg, val) BSP_FLD32SET(reg, val, 2, 3)
79#define STM32F4_FLASH_CR_OPTSTRT BSP_BIT32(1) // Option start
80#define STM32F4_FLASH_CR_OPTLOCK BSP_BIT32(0) // Option lock
81
82} __attribute__ ((packed));
83typedef struct stm32f4_flash_s stm32f4_flash;
84
85#endif /* LIBBSP_ARM_STM32F4_STM32F4XXXX_FLASH_H */
This header file provides utility macros for BSPs.
Definition: xnandpsu_onfi.h:185
Definition: stm32f4xxxx_flash.h:22