From 9c0ca88c2ef9702be6cfa13a3a1b085e733580af Mon Sep 17 00:00:00 2001 From: Frantisek Burian Date: Wed, 5 Feb 2014 23:48:33 +0100 Subject: [PATCH] [F0] Update CRCto be compatible wih RM0091 Rev. 5 --- .../libopencm3/stm32/common/crc_common_all.h | 20 +++++++++++++++++-- include/libopencm3/stm32/f0/crc.h | 17 ++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/include/libopencm3/stm32/common/crc_common_all.h b/include/libopencm3/stm32/common/crc_common_all.h index 99af39a9..7dfeca52 100644 --- a/include/libopencm3/stm32/common/crc_common_all.h +++ b/include/libopencm3/stm32/common/crc_common_all.h @@ -37,7 +37,13 @@ specific memorymap.h header before including this header file.*/ #include -/* --- CRC registers ------------------------------------------------------- */ +/*****************************************************************************/ +/* Module definitions */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* Register definitions */ +/*****************************************************************************/ /* Data register (CRC_DR) */ #define CRC_DR MMIO32(CRC_BASE + 0x00) @@ -48,6 +54,10 @@ specific memorymap.h header before including this header file.*/ /* Control register (CRC_CR) */ #define CRC_CR MMIO32(CRC_BASE + 0x08) +/*****************************************************************************/ +/* Register values */ +/*****************************************************************************/ + /* --- CRC_DR values ------------------------------------------------------- */ /* Bits [31:0]: Data register */ @@ -65,7 +75,13 @@ specific memorymap.h header before including this header file.*/ /* RESET bit */ #define CRC_CR_RESET (1 << 0) -/* --- CRC function prototypes --------------------------------------------- */ +/*****************************************************************************/ +/* API definitions */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* API Functions */ +/*****************************************************************************/ BEGIN_DECLS diff --git a/include/libopencm3/stm32/f0/crc.h b/include/libopencm3/stm32/f0/crc.h index 4c1ee9bb..efa1380c 100644 --- a/include/libopencm3/stm32/f0/crc.h +++ b/include/libopencm3/stm32/f0/crc.h @@ -45,11 +45,18 @@ /* Register definitions */ /*****************************************************************************/ +/* Initial CRC Value */ +#define CRC_INIT MMIO32(CRC_BASE + 0x10) + +/* CRC Polynomial */ +#define CRC_POL MMIO32(CRC_BASE + 0x14) + /*****************************************************************************/ /* Register values */ /*****************************************************************************/ #define CRC_CR_REV_OUT (1 << 7) + #define CRC_CR_REV_IN_SHIFT 5 #define CRC_CR_REV_IN (3 << CRC_CR_REV_IN_SHIFT) #define CRC_CR_REV_IN_NONE (0 << CRC_CR_REV_IN_SHIFT) @@ -57,6 +64,16 @@ #define CRC_CR_REV_IN_HALF (2 << CRC_CR_REV_IN_SHIFT) #define CRC_CR_REV_IN_WORD (3 << CRC_CR_REV_IN_SHIFT) +#define CRC_CR_POLYSIZE_SHIFT 3 +#define CRC_CR_POLYSIZE (3 << CRC_CR_POLYSIZE_SHIFT) +#define CRC_CR_POLYSIZE_32BIT (0 << CRC_CR_POLYSIZE_SHIFT) +#define CRC_CR_POLYSIZE_16BIT (1 << CRC_CR_POLYSIZE_SHIFT) +#define CRC_CR_POLYSIZE_8BIT (2 << CRC_CR_POLYSIZE_SHIFT) +#define CRC_CR_POLYSIZE_7BIT (3 << CRC_CR_POLYSIZE_SHIFT) + +/* Default polynomial */ +#define CRC_POL_DEFAULT 0x04C11DB7 + /*****************************************************************************/ /* API definitions */ /*****************************************************************************/