X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Fcortex-m3%2Fio%2Fsam3_flash.h;h=74257a8d2de75c863952cb21ccc0f154af81154f;hb=95b25b13940705f84296f03923e75fa70cce96a1;hp=03cca342d223b312afcd2e31e24e194f956bac1d;hpb=1ae40c676a839d7f523d62da03687af22f877261;p=bertos.git diff --git a/bertos/cpu/cortex-m3/io/sam3_flash.h b/bertos/cpu/cortex-m3/io/sam3_flash.h index 03cca342..74257a8d 100644 --- a/bertos/cpu/cortex-m3/io/sam3_flash.h +++ b/bertos/cpu/cortex-m3/io/sam3_flash.h @@ -37,58 +37,64 @@ #define SAM3_FLASH_H /** - * EEFC registers. + * EEFC base register address. + */ +#define EEFC_BASE 0x400E0A00 + +/** + * EFC register offsets. */ /*\{*/ -#define EEFC_FMR_R (*((reg32_t *)0x400E0A00)) ///< Flash Mode Register -#define EEFC_FCR_R (*((reg32_t *)0x400E0A04)) ///< Flash Command Register -#define EEFC_FSR_R (*((reg32_t *)0x400E0A08)) ///< Flash Status Register -#define EEFC_FRR_R (*((reg32_t *)0x400E0A0C)) ///< Flash Result Register +#define EEFC_FMR_OFF 0x0 ///< Flash Mode Register +#define EEFC_FCR_OFF 0x4 ///< Flash Command Register +#define EEFC_FSR_OFF 0x8 ///< Flash Status Register +#define EEFC_FRR_OFF 0xC ///< Flash Result Register /*\}*/ /** - * EFC register addresses. + * EEFC registers. */ /*\{*/ -#define EEFC_FMR 0x400E0A00 ///< Flash Mode Register -#define EEFC_FCR 0x400E0A04 ///< Flash Command Register -#define EEFC_FSR 0x400E0A08 ///< Flash Status Register -#define EEFC_FRR 0x400E0A0C ///< Flash Result Register +#define EEFC_FMR (*((reg32_t *)(EEFC_BASE + EEFC_FMR_OFF))) ///< Flash Mode Register +#define EEFC_FCR (*((reg32_t *)(EEFC_BASE + EEFC_FCR_OFF))) ///< Flash Command Register +#define EEFC_FSR (*((reg32_t *)(EEFC_BASE + EEFC_FSR_OFF))) ///< Flash Status Register +#define EEFC_FRR (*((reg32_t *)(EEFC_BASE + EEFC_FRR_OFF))) ///< Flash Result Register /*\}*/ + /** * Defines for bit fields in EEFC_FMR register. */ /*\{*/ -#define EEFC_FMR_FRDY BV(0) ///< Ready Interrupt Enable -#define EEFC_FMR_FWS_S 8 -#define EEFC_FMR_FWS_M (0xf << EEFC_FMR_FWS_S) ///< Flash Wait State -#define EEFC_FMR_FWS(value) (EEFC_FMR_FWS_M & ((value) << EEFC_FMR_FWS_S)) -#define EEFC_FMR_FAM BV(24) ///< Flash Access Mode +#define EEFC_FMR_FRDY 0 ///< Ready Interrupt Enable +#define EEFC_FMR_FWS_SHIFT 8 +#define EEFC_FMR_FWS_MASK (0xf << EEFC_FMR_FWS_SHIFT) ///< Flash Wait State +#define EEFC_FMR_FWS(value) (EEFC_FMR_FWS_MASK & ((value) << EEFC_FMR_FWS_SHIFT)) +#define EEFC_FMR_FAM 24 ///< Flash Access Mode /*\}*/ /** * Defines for bit fields in EEFC_FCR register. */ /*\{*/ -#define EEFC_FCR_FCMD_M 0xff ///< Flash Command -#define EEFC_FCR_FCMD(value) (EEFC_FCR_FCMD_M & (value)) -#define EEFC_FCR_FARG_S 8 -#define EEFC_FCR_FARG_M (0xffff << EEFC_FCR_FARG_S) ///< Flash Command Argument -#define EEFC_FCR_FARG(value) (EEFC_FCR_FARG_M & ((value) << EEFC_FCR_FARG_S)) -#define EEFC_FCR_FKEY_S 24 -#define EEFC_FCR_FKEY_M (0xff << EEFC_FCR_FKEY_S) ///< Flash Writing Protection Key -#define EEFC_FCR_FKEY(value) (EEFC_FCR_FKEY_M & ((value) << EEFC_FCR_FKEY_S)) +#define EEFC_FCR_FCMD_MASK 0xff ///< Flash Command +#define EEFC_FCR_FCMD(value) (EEFC_FCR_FCMD_MASK & (value)) +#define EEFC_FCR_FARG_SHIFT 8 +#define EEFC_FCR_FARG_MASK (0xffff << EEFC_FCR_FARG_SHIFT) ///< Flash Command Argument +#define EEFC_FCR_FARG(value) (EEFC_FCR_FARG_MASK & ((value) << EEFC_FCR_FARG_SHIFT)) +#define EEFC_FCR_FKEY_SHIFT 24 +#define EEFC_FCR_FKEY_MASK (0xff << EEFC_FCR_FKEY_SHIFT) ///< Flash Writing Protection Key +#define EEFC_FCR_FKEY(value) (EEFC_FCR_FKEY_MASK & ((value) << EEFC_FCR_FKEY_SHIFT)) /*\}*/ /** * Defines for bit fields in EEFC_FSR register. */ /*\{*/ -#define EEFC_FSR_FRDY BV(0) ///< Flash Ready Status -#define EEFC_FSR_FCMDE BV(1) ///< Flash Command Error Status -#define EEFC_FSR_FLOCKE BV(2) ///< Flash Lock Error Status +#define EEFC_FSR_FRDY 0 ///< Flash Ready Status +#define EEFC_FSR_FCMDE 1 ///< Flash Command Error Status +#define EEFC_FSR_FLOCKE 2 ///< Flash Lock Error Status /*\}*/ #endif /* SAM3_FLASH_H */