board.h 5.6 KB
Newer Older
O
onelife.real 已提交
1 2 3
/***************************************************************************//**
 * @file 	board.h
 * @brief 	Board support of RT-Thread RTOS for EFM32
O
onelife.real@gmail.com 已提交
4
 * 	COPYRIGHT (C) 2011, RT-Thread Development Team
O
onelife.real 已提交
5 6
 * @author 	onelife
 * @version 	0.4 beta
O
onelife.real 已提交
7
 *******************************************************************************
O
onelife.real 已提交
8
 * @section License
O
onelife.real 已提交
9 10 11
 * The license and distribution terms for this file may be found in the file 
 * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
 *******************************************************************************
O
onelife.real 已提交
12 13 14
 * @section Change Logs
 * Date			Author		Notes
 * 2010-12-21	onelife		Initial creation for EFM32
O
onelife.real 已提交
15
 * 2011-05-06	onelife		Add EFM32 development kit and SPI Flash support
O
onelife.real 已提交
16 17 18
 * 2011-07-12	onelife		Add prototype for SWO output enable and interrupt 
 *  context check functions 
 ******************************************************************************/
O
onelife.real 已提交
19 20 21 22 23
#ifndef __BOARD_H__
#define __BOARD_H__

#if defined(EFM32G890F128)
#elif defined(EFM32G290F128)
O
onelife.real@gmail.com 已提交
24
#elif defined(EFM32G230F128)
O
onelife.real 已提交
25 26 27 28
#else
#error Unknown MCU type 
#endif

O
onelife.real 已提交
29
/* Includes ------------------------------------------------------------------*/
O
onelife.real 已提交
30 31 32 33 34
#include <efm32.h>
#include <efm32_chip.h>
#include <efm32_cmu.h>
#include <efm32_rmu.h>
#include <efm32_dma.h>
O
onelife.real@gmail.com 已提交
35
#include <efm32_rtc.h>
O
onelife.real 已提交
36 37
#include <efm32_timer.h>
#include <efm32_gpio.h>
O
onelife.real@gmail.com 已提交
38 39
#include <efm32_acmp.h>
#include <efm32_adc.h>
O
onelife.real 已提交
40 41 42 43 44
#include <efm32_usart.h>
#include <efm32_i2c.h>

#include <rtthread.h>

O
onelife.real 已提交
45 46 47 48
#if defined(EFM32_G290_DK)
#include <dvk.h>
#endif

O
onelife.real 已提交
49 50 51 52
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
extern volatile rt_uint32_t rt_system_status;
O
onelife.real 已提交
53

O
onelife.real 已提交
54 55
/* Exported macro ------------------------------------------------------------*/
#ifdef EFM32_DEBUG
O
onelife.real 已提交
56 57
#define DEBUG_EFM
#define DEBUG_EFM_USER
O
onelife.real 已提交
58 59
#define EFM32_SWO_ENABLE
#endif
O
onelife.real 已提交
60

O
onelife.real 已提交
61 62
#define EFM32_NO_DATA				(0)
#define EFM32_NO_POINTER			(RT_NULL)
O
onelife.real 已提交
63 64
#define EFM32_NO_OFFSET				(-1)
#define EFM32_NO_DMA				(-1)
O
onelife.real 已提交
65

O
onelife.real 已提交
66 67 68 69 70 71 72 73 74 75 76 77 78
/* SECTION: SPI Flash */
#if defined(EFM32_USING_SFLASH)
#define USART_0_AUTOCS 				(0)
#define SFLASH_CS_PORT 				(gpioPortC)
#define SFLASH_CS_PIN 				(8)
#endif

/* SECTION: Micro SD */
#if defined(EFM32_USING_SPISD)
#define USART_0_AUTOCS 				(1)
#define SD_CS_PORT 					(gpioPortC)
#define SD_CS_PIN 					(8)
#endif
O
onelife.real 已提交
79

O
onelife.real 已提交
80 81 82 83 84 85 86
/* SECTION: Ethernet */
#if defined(EFM32_USING_ETHERNET)
#define USART_2_AUTOCS 				(0)
#define ETH_CS_PORT 				(gpioPortB)
#define ETH_CS_PIN 					(6)
#endif

O
onelife.real 已提交
87
/* SECTION: SYSTEM */
O
onelife.real 已提交
88
#define EFM32_SRAM_END 				(SRAM_BASE + SRAM_SIZE)
O
onelife.real 已提交
89 90
#define EFM32_BASE_PRI_DEFAULT 		(0x0UL << 5)
#define EFM32_IRQ_PRI_DEFAULT 		(0x4UL << 5)
O
onelife.real@gmail.com 已提交
91
#if (defined(EFM32_G890_STK) || defined(EFM32_G290_DK))
O
onelife.real 已提交
92
#define EFM32_HFXO_FREQUENCY 		(32000000)
O
onelife.real@gmail.com 已提交
93
#else
O
onelife.real 已提交
94
#define EFM32_HFXO_FREQUENCY		(00000000)
O
onelife.real@gmail.com 已提交
95
#endif
O
onelife.real 已提交
96

O
onelife.real 已提交
97
/* SECTION: USART */
O
onelife.real 已提交
98
#define USART_RX_BUFFER_SIZE		(64)
O
onelife.real 已提交
99

O
onelife.real 已提交
100 101 102 103
/* SUBSECTION: UART */
#define UART_BAUDRATE				(115200)

/* SUBSECTION: SPI */
O
onelife.real 已提交
104
/* Max SPI clock: HFPERCLK/2 for master, HFPERCLK/8 for slave */
O
onelife.real 已提交
105
#define SPI_BAUDRATE				(4000000)
O
onelife.real 已提交
106

O
onelife.real 已提交
107 108 109 110 111 112 113 114 115 116
#ifndef USART_0_AUTOCS
#define USART_0_AUTOCS 				(0)
#endif
#ifndef USART_1_AUTOCS
#define USART_1_AUTOCS 				(0)
#endif
#ifndef USART_2_AUTOCS
#define USART_2_AUTOCS 				(0)
#endif
/* Auto Slave Select */
O
onelife.real 已提交
117 118 119
#define SPI_AUTOCS_ENABLE 			((USART_2_AUTOCS << 2) | \
									(USART_1_AUTOCS << 1) | \
									(USART_0_AUTOCS << 0))
O
onelife.real 已提交
120

O
onelife.real 已提交
121
/* SECTION: I2C */
O
onelife.real 已提交
122 123
#define IIC_RX_BUFFER_SIZE			(32)

O
onelife.real 已提交
124
/* SECTION: ADC */
O
onelife.real 已提交
125 126
#define ADC_CALI_REF				adcRef2V5
#define ADC_CALI_CH 				adcSingleInpCh5
O
onelife.real 已提交
127
#define ADC_CONVERT_FREQUENCY 		(7000000)
O
onelife.real 已提交
128 129

#if (RT_CONSOLE_DEVICE == 0x0UL)
O
onelife.real 已提交
130
#define CONSOLE_DEVICE 				RT_USART0_NAME
O
onelife.real 已提交
131
#elif (RT_CONSOLE_DEVICE == 0x1UL)
O
onelife.real 已提交
132
#define CONSOLE_DEVICE 				RT_USART1_NAME
O
onelife.real 已提交
133
#elif (RT_CONSOLE_DEVICE == 0x2UL)
O
onelife.real 已提交
134
#define CONSOLE_DEVICE 				RT_USART2_NAME
O
onelife.real 已提交
135
#else
O
onelife.real 已提交
136 137 138
#define CONSOLE_DEVICE 				"no"
#endif

O
onelife.real 已提交
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161

/* The following defines should be consistent with those in diskio.h */
#define CTRL_SYNC						0
#define GET_SECTOR_COUNT				1
#define GET_SECTOR_SIZE					2
#define GET_BLOCK_SIZE					3
#define MMC_GET_TYPE					10
#define MMC_GET_CSD						11
#define MMC_GET_CID						12
#define MMC_GET_OCR						13
#define MMC_GET_SDSTAT					14
/* The above defines should be consistent with those in diskio.h */

/* I/O control options */
#define RT_DEVICE_CTRL_SD_SYNC 			CTRL_SYNC
#define RT_DEVICE_CTRL_SD_GET_SCOUNT 	GET_SECTOR_COUNT
#define RT_DEVICE_CTRL_SD_GET_SSIZE		GET_SECTOR_SIZE
#define RT_DEVICE_CTRL_SD_GET_BSIZE 	GET_BLOCK_SIZE
#define RT_DEVICE_CTRL_SD_GET_TYPE 		MMC_GET_TYPE
#define RT_DEVICE_CTRL_SD_GET_CSD		MMC_GET_CSD
#define RT_DEVICE_CTRL_SD_GET_CID 		MMC_GET_CID
#define RT_DEVICE_CTRL_SD_GET_OCR 		MMC_GET_OCR
#define RT_DEVICE_CTRL_SD_GET_SDSTAT	MMC_GET_SDSTAT
O
onelife.real 已提交
162

O
onelife.real@gmail.com 已提交
163 164 165 166 167 168 169 170
/*! fixme: move the following define to Rtdef.h */
#define RT_DEVICE_CTRL_USART_RBUFFER	(0xF1)		/*!< set USART rx buffer */
#define RT_DEVICE_CTRL_IIC_SETTING		(0xF2)		/*!< change IIC setting */
#define RT_DEVICE_CTRL_TIMER_PERIOD		(0xF3)		/*!< set Timer timeout period */
#define RT_DEVICE_CTRL_ADC_MODE			(0xF4)		/*!< change ADC mode */
#define RT_DEVICE_CTRL_ADC_RESULT		(0xF5)		/*!< get ADC result */
#define RT_DEVICE_CTRL_ACMP_INIT		(0xF6)		/*!< Initialize ACMP */
#define RT_DEVICE_CTRL_ACMP_OUTPUT		(0xF7)		/*!< get ACMP output */
O
onelife.real 已提交
171

O
onelife.real 已提交
172
/* Exported functions ------------------------------------------------------- */
O
onelife.real 已提交
173 174
void rt_hw_board_init(void);
void rt_hw_driver_init(void);
O
onelife.real 已提交
175
rt_uint32_t rt_hw_interrupt_check(void);
O
onelife.real 已提交
176 177

#endif /*__BOARD_H__ */