37#ifdef LIBOPENCM3_FLASH_H
39#ifndef LIBOPENCM3_FLASH_COMMON_F24_H
40#define LIBOPENCM3_FLASH_COMMON_F24_H
49#define FLASH_ACR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x00)
51#define FLASH_KEYR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x04)
53#define FLASH_OPTKEYR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x08)
55#define FLASH_SR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x0C)
57#define FLASH_CR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x10)
59#define FLASH_OPTCR MMIO32(FLASH_MEM_INTERFACE_BASE + 0x14)
61#define FLASH_OPTCR1 MMIO32(FLASH_MEM_INTERFACE_BASE + 0x18)
67#define FLASH_ACR_LATENCY(w) ((w) & FLASH_ACR_LATENCY_MASK)
68#define FLASH_ACR_LATENCY_0WS 0x00
69#define FLASH_ACR_LATENCY_1WS 0x01
70#define FLASH_ACR_LATENCY_2WS 0x02
71#define FLASH_ACR_LATENCY_3WS 0x03
72#define FLASH_ACR_LATENCY_4WS 0x04
73#define FLASH_ACR_LATENCY_5WS 0x05
74#define FLASH_ACR_LATENCY_6WS 0x06
75#define FLASH_ACR_LATENCY_7WS 0x07
77#define FLASH_ACR_LATENCY_SHIFT 0
78#define FLASH_ACR_LATENCY_MASK 0x0f
84#define FLASH_ACR_PRFTEN (1 << 8)
89#define FLASH_SR_BSY (1 << 16)
90#define FLASH_SR_PGPERR (1 << 6)
91#define FLASH_SR_PGAERR (1 << 5)
92#define FLASH_SR_WRPERR (1 << 4)
93#define FLASH_SR_OPERR (1 << 1)
94#define FLASH_SR_EOP (1 << 0)
98#define FLASH_CR_LOCK (1 << 31)
99#define FLASH_CR_ERRIE (1 << 25)
100#define FLASH_CR_EOPIE (1 << 24)
101#define FLASH_CR_STRT (1 << 16)
102#define FLASH_CR_MER (1 << 2)
103#define FLASH_CR_SER (1 << 1)
104#define FLASH_CR_PG (1 << 0)
105#define FLASH_CR_SNB_SHIFT 3
106#define FLASH_CR_SNB_MASK 0x1f
107#define FLASH_CR_PROGRAM_MASK 0x3
108#define FLASH_CR_PROGRAM_SHIFT 8
113#define FLASH_CR_PROGRAM_X8 0
114#define FLASH_CR_PROGRAM_X16 1
115#define FLASH_CR_PROGRAM_X32 2
116#define FLASH_CR_PROGRAM_X64 3
123#define FLASH_OPTCR_NRST_STDBY (1 << 7)
124#define FLASH_OPTCR_NRST_STOP (1 << 6)
125#define FLASH_OPTCR_OPTSTRT (1 << 1)
126#define FLASH_OPTCR_OPTLOCK (1 << 0)
127#define FLASH_OPTCR_BOR_LEVEL_3 (0x00 << 2)
128#define FLASH_OPTCR_BOR_LEVEL_2 (0x01 << 2)
129#define FLASH_OPTCR_BOR_LEVEL_1 (0x02 << 2)
130#define FLASH_OPTCR_BOR_OFF (0x03 << 2)
138#define FLASH_KEYR_KEY1 ((uint32_t)0x45670123)
139#define FLASH_KEYR_KEY2 ((uint32_t)0xcdef89ab)
141#define FLASH_OPTKEYR_KEY1 ((uint32_t)0x08192a3b)
142#define FLASH_OPTKEYR_KEY2 ((uint32_t)0x4c5d6e7f)
158void flash_program(uint32_t address,
const uint8_t *data, uint32_t len);
167#warning "flash_common_f24.h should not be included direcitly,"
168#warning "only via flash.h"
void flash_clear_pgperr_flag(void)
Clear programming parallelism error flag.
void flash_program_option_bytes(uint32_t data)
Program the Option Bytes.
void flash_lock_option_bytes(void)
Lock the Option Byte Access.
void flash_erase_all_sectors(uint32_t program_size)
Erase All FLASH.
void flash_program_word(uint32_t address, uint32_t data)
Program a 32 bit Word to FLASH.
void flash_clear_pgaerr_flag(void)
Clear the Programming Alignment Error Flag.
void flash_program_double_word(uint32_t address, uint64_t data)
Program a 64 bit Word to FLASH.
void flash_erase_sector(uint8_t sector, uint32_t program_size)
Erase a Sector of FLASH.
void flash_clear_wrperr_flag(void)
Clear the Write Protect Error Flag.
void flash_program(uint32_t address, const uint8_t *data, uint32_t len)
Program a Data Block to FLASH.
void flash_program_byte(uint32_t address, uint8_t data)
Program an 8 bit Byte to FLASH.
void flash_program_half_word(uint32_t address, uint16_t data)
Program a Half Word to FLASH.