1 /**************************************************************************//**
\r
3 * @brief Board Control register definitions
\r
5 ******************************************************************************
\r
7 * <b>(C) Copyright 2014 Silicon Labs, http://www.silabs.com</b>
\r
8 *******************************************************************************
\r
10 * This file is licensed under the Silabs License Agreement. See the file
\r
11 * "Silabs_License_Agreement.txt" for details. Before using this software for
\r
12 * any purpose, you must agree to the terms of that agreement.
\r
14 ******************************************************************************/
\r
18 #ifndef __BSP_DK_BCREG_3200_H
\r
19 #define __BSP_DK_BCREG_3200_H
\r
23 /***************************************************************************//**
\r
26 ******************************************************************************/
\r
28 /***************************************************************************//**
\r
29 * @addtogroup BSP_DK API for DK's
\r
31 ******************************************************************************/
\r
37 /**************************************************************************//**
\r
38 * Defines FPGA register bank for Energy Micro Development Kit (DK) board,
\r
39 * i.e. board control registers
\r
40 *****************************************************************************/
\r
41 #define BC_FLASH_BASE 0x80000000 /**< FLASH memory base address */
\r
42 #define BC_SRAM_BASE 0x84000000 /**< SRAM base address */
\r
43 #define BC_SSD2119_BASE 0x88000000 /**< TFT Controller base address */
\r
44 #define BC_REGISTER_BASE 0x8c000000 /**< Board Controller registers base address */
\r
46 #define BC_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x00)) /**< CFG */
\r
47 #define BC_EM ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x01)) /**< EM */
\r
48 #define BC_MAGIC ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x02)) /**< MAGIC */
\r
49 #define BC_LED ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x03)) /**< LEDs */
\r
50 #define BC_PUSHBUTTON ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x04)) /**< Push Buttons */
\r
51 #define BC_DIPSWITCH ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x05)) /**< Dip switches */
\r
52 #define BC_JOYSTICK ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x06)) /**< Joystick */
\r
53 #define BC_AEM ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x07)) /**< AEM push button status */
\r
54 #define BC_DISPLAY_CTRL ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x08)) /**< Display Control */
\r
55 #define BC_EBI_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x09)) /**< EBI config */
\r
56 #define BC_BUS_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0a)) /**< BUS config */
\r
57 #define BC_PERCTRL ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0c)) /**< Peripheral Control */
\r
58 #define BC_AEMSTATE ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0d)) /**< AEM state of push button switch */
\r
59 #define BC_SPI_CFG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0e)) /**< SPI config */
\r
60 #define BC_RESET ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x0f)) /**< Reset */
\r
61 #define BC_ADC_START ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x10)) /**< ADC start */
\r
62 #define BC_ADC_STATUS ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x11)) /**< ADC status */
\r
63 #define BC_ADC_DATA ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x12)) /**< ADC data */
\r
64 #define BC_HW_VERSION ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x14)) /**< HW version */
\r
65 #define BC_FW_BUILDNO ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x15)) /**< FW build number */
\r
66 #define BC_FW_VERSION ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x16)) /**< FW version */
\r
67 #define BC_SCRATCH_COMMON ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x17)) /**< Scratch common */
\r
68 #define BC_SCRATCH_EFM0 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x18)) /**< Scratch EFM0 */
\r
69 #define BC_SCRATCH_EFM1 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x19)) /**< Scratch EFM1 */
\r
70 #define BC_SCRATCH_EFM2 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1A)) /**< Scratch EFM2 */
\r
71 #define BC_SCRATCH_EFM3 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1B)) /**< Scratch EFM3 */
\r
72 #define BC_SCRATCH_BC0 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1C)) /**< Scratch BC0 */
\r
73 #define BC_SCRATCH_BC1 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1D)) /**< Scratch BC1 */
\r
74 #define BC_SCRATCH_BC2 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1E)) /**< Scratch BC2 */
\r
75 #define BC_SCRATCH_BC3 ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x1f)) /**< Scratch BC3 */
\r
76 #define BC_INTFLAG ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x20)) /**< Interrupt flag */
\r
77 #define BC_INTEN ((volatile uint16_t *)(BC_REGISTER_BASE + sizeof(uint16_t) * 0x21)) /**< Interrupt enable */
\r
79 /**************************************************************************//**
\r
80 * Defines bit fields for board control registers
\r
81 *****************************************************************************/
\r
83 #define BC_CFG_SPI (0) /**< SPI mode */
\r
84 #define BC_CFG_EBI (1) /**< EBI mode */
\r
86 #define BC_EM_EM0 (0) /**< Indicate EM0 */
\r
87 #define BC_EM_EM1 (1) /**< Indicate EM1 */
\r
88 #define BC_EM_EM2 (2) /**< Indicate EM2 */
\r
89 #define BC_EM_EM3 (3) /**< Indicate EM3 */
\r
90 #define BC_EM_EM4 (4) /**< Indicate EM4 */
\r
92 #define BC_MAGIC_VALUE (0xef32) /**< Magic */
\r
94 #define BC_PUSHBUTTON_MASK (0x000f) /**< Push button mask */
\r
95 #define BC_PUSHBUTTON_SW1 (1 << 0) /**< Push button SW1 */
\r
96 #define BC_PUSHBUTTON_SW2 (1 << 1) /**< Push button SW2 */
\r
97 #define BC_PUSHBUTTON_SW3 (1 << 2) /**< Push button SW3 */
\r
98 #define BC_PUSHBUTTON_SW4 (1 << 3) /**< Push button SW4 */
\r
100 #define BC_DIPSWITCH_MASK (0x00ff) /**< Dip switch mask */
\r
102 #define BC_JOYSTICK_MASK (0x001f) /**< Joystick mask */
\r
103 #define BC_JOYSTICK_DOWN (1 << 0) /**< Joystick down */
\r
104 #define BC_JOYSTICK_RIGHT (1 << 1) /**< Joystick right */
\r
105 #define BC_JOYSTICK_UP (1 << 2) /**< Joystick up */
\r
106 #define BC_JOYSTICK_LEFT (1 << 3) /**< Joystick left */
\r
107 #define BC_JOYSTICK_CENTER (1 << 4) /**< Joystick center button */
\r
109 #define BC_DISPCTRL_RESET (1 << 0) /**< Reset */
\r
110 #define BC_DISPCTRL_POWER_ENABLE (1 << 1) /**< Display Control Power Enable */
\r
112 #define BC_EBI_CFG_MASK (0x0003) /**< EBI Config */
\r
113 #define BC_EBI_CFG_16X16 (0) /**< 16x16 address/data mode */
\r
114 #define BC_EBI_CFG_8X8 (1) /**< 8x8 address/data mode */
\r
115 #define BC_EBI_CFG_24X8 (2) /**< 24x8 address/data mode */
\r
117 #define BC_BUS_CFG_MASK (0x0003) /**< Bus config */
\r
118 #define BC_BUS_CFG_FSMC (0) /**< Kit Board Controller owns bus */
\r
119 #define BC_BUS_CFG_EBI (1) /**< EBI drives bus */
\r
120 #define BC_BUS_CFG_SPI (2) /**< SPI drives bus */
\r
122 #define BC_PERCTRL_ACCEL (1 << 0) /**< Accelerometer enable */
\r
123 #define BC_PERCTRL_AMBIENT (1 << 1) /**< Ambient light sensor enable */
\r
124 #define BC_PERCTRL_POTMETER (1 << 2) /**< Potentiometer enable */
\r
125 #define BC_PERCTRL_RS232A (1 << 3) /**< RS232A enable */
\r
126 #define BC_PERCTRL_RS232B (1 << 4) /**< RS232B enable */
\r
127 #define BC_PERCTRL_SPI (1 << 5) /**< SPI enable */
\r
128 #define BC_PERCTRL_I2C (1 << 6) /**< I2C enable */
\r
129 #define BC_PERCTRL_IRDA (1 << 7) /**< IRDA enable */
\r
130 #define BC_PERCTRL_ANALOG_SE (1 << 8) /**< Analog SE enable */
\r
131 #define BC_PERCTRL_ANALOG_DIFF (1 << 9) /**< Analog Diff enable */
\r
132 #define BC_PERCTRL_AUDIO_OUT (1 << 10) /**< Audio Out enable */
\r
133 #define BC_PERCTRL_AUDIO_IN (1 << 11) /**< Audio In enable */
\r
134 #define BC_PERCTRL_ACCEL_GSEL (1 << 12) /**< Accel Gsel enable */
\r
135 #define BC_PERCTRL_ACCEL_SELFTEST (1 << 13) /**< Accel Self test enable */
\r
136 #define BC_PERCTRL_RS232_SHUTDOWN (1 << 14) /**< RS232 shutdown */
\r
137 #define BC_PERCTRL_IRDA_SHUTDOWN (1 << 15) /**< IRDA shutdown */
\r
139 #define BC_AEMSTATE_BC (0) /**< AEM button state, BC controls buttons */
\r
140 #define BC_AEMSTATE_EFM (1) /**< AEM button state, EFM32 controls buttons */
\r
142 #define BC_SPI_CFG_FLASH (0) /**< SPI Flash config */
\r
143 #define BC_SPI_CFG_MICROSD (1) /**< SPI MicroSD config */
\r
145 #define BC_RESET_FLASH (1 << 0) /**< Reset Flash */
\r
146 #define BC_RESET_EFM (1 << 1) /**< Reset EFM */
\r
148 #define BC_ADC_START_MASK (0x00ff) /**< ADC Start mask */
\r
150 #define BC_ADC_STATUS_DONE (0) /**< ADC Status Done */
\r
151 #define BC_ADC_STATUS_BUSY (1) /**< ADC Status Busy */
\r
153 #define BC_HW_VERSION_PCB_MASK (0x07f0) /**< PCB Version mask */
\r
154 #define BC_HW_VERSION_PCB_SHIFT (4) /**< PCB Version shift */
\r
155 #define BC_HW_VERSION_BOARD_MASK (0x000f) /**< Board version mask */
\r
156 #define BC_HW_VERSION_BOARD_SHIFT (0) /**< Board version shift */
\r
158 #define BC_HW_FW_VERSION_MAJOR_MASK (0xf000) /**< FW Version major mask */
\r
159 #define BC_HW_FW_VERSION_MAJOR_SHIFT (12) /**< FW version major shift */
\r
160 #define BC_HW_FW_VERSION_MINOR_MASK (0x0f00) /**< FW version minor mask */
\r
161 #define BC_HW_FW_VERSION_MINOR_SHIFT (8) /**< FW version minor shift */
\r
162 #define BC_HW_FW_VERSION_PATCHLEVEL_MASK (0x00ff) /**< FW Patchlevel mask */
\r
163 #define BC_HW_FW_VERSION_PATCHLEVEL_SHIFT (0) /**< FW Patchlevel shift */
\r
165 #define BC_INTEN_MASK (0x000f) /**< Interrupt enable mask */
\r
166 #define BC_INTEN_PB (1 << 0) /**< Push Button Interrupt enable */
\r
167 #define BC_INTEN_DIP (1 << 1) /**< DIP Switch Interrupt enable */
\r
168 #define BC_INTEN_JOYSTICK (1 << 2) /**< Joystick Interrupt enable */
\r
169 #define BC_INTEN_AEM (1 << 3) /**< AEM Interrupt enable */
\r
171 #define BC_INTFLAG_MASK (0x000f) /**< Interrupt flag mask */
\r
172 #define BC_INTFLAG_PB (1 << 0) /**< Push Button interrupt triggered */
\r
173 #define BC_INTFLAG_DIP (1 << 1) /**< DIP interrupt triggered */
\r
174 #define BC_INTFLAG_JOYSTICK (1 << 2) /**< Joystick interrupt triggered */
\r
175 #define BC_INTFLAG_AEM (1 << 3) /**< AEM interrupt triggered */
\r
181 /** @} (end group BSP_DK) */
\r
182 /** @} (end group BSP) */
\r
184 #endif /* __BSP_DK_BCREG_3200_H */
\r