board.h 5.3 KB
Newer Older
O
onelife.real 已提交
1 2 3
/******************************************************************//**
 * @file 		drv_dma.h
 * @brief 	USART driver of RT-Thread RTOS for EFM32
O
onelife.real@gmail.com 已提交
4
 * 	COPYRIGHT (C) 2011, RT-Thread Development Team
O
onelife.real 已提交
5 6 7 8 9 10 11 12 13 14
 * @author 	onelife
 * @version 	0.4 beta
 **********************************************************************
 * @section License
 * 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
 **********************************************************************
 * @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 19 20 21
 *********************************************************************/
#ifndef __BOARD_H__
#define __BOARD_H__

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

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

#include <rtthread.h>

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

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

/* Exported macro -------------------------------------------------------------*/
#define DEBUG_EFM
#define DEBUG_EFM_USER

O
onelife.real 已提交
56 57 58
#define EFM32_NO_DATA				(0)
#define EFM32_NO_OFFSET				(-1)
#define EFM32_NO_POINTER			(RT_NULL)
O
onelife.real 已提交
59

O
onelife.real 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72
/* 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 已提交
73

O
onelife.real 已提交
74 75 76 77 78 79 80
/* 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 已提交
81 82
/* SECTION: SYSTEM */
#define EFM32_SRAM_END 				(RAM_MEM_BASE + SRAM_SIZE)
O
onelife.real 已提交
83 84
#define EFM32_BASE_PRI_DEFAULT 		(0x0UL << 5)
#define EFM32_IRQ_PRI_DEFAULT 		(0x4UL << 5)
O
onelife.real@gmail.com 已提交
85
#if (defined(EFM32_G890_STK) || defined(EFM32_G290_DK))
O
onelife.real 已提交
86
#define EFM32_HFXO_FREQUENCY 		(32000000)
O
onelife.real@gmail.com 已提交
87
#else
O
onelife.real 已提交
88
#define EFM32_HFXO_FREQUENCY		(00000000)
O
onelife.real@gmail.com 已提交
89
#endif
O
onelife.real 已提交
90

O
onelife.real 已提交
91
/* SECTION: USART */
O
onelife.real 已提交
92
#define USART_RX_BUFFER_SIZE		(64)
O
onelife.real 已提交
93

O
onelife.real 已提交
94 95 96 97
/* SUBSECTION: UART */
#define UART_BAUDRATE				(115200)

/* SUBSECTION: SPI */
O
onelife.real 已提交
98
#define SPI_BAUDRATE				(4000000)
O
onelife.real 已提交
99

O
onelife.real 已提交
100 101 102 103 104 105 106 107 108 109 110
#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 */
#define SPI_AUTOCS_ENABLE 			((USART_2_AUTOCS << 2) | (USART_1_AUTOCS << 1) | (USART_0_AUTOCS << 0))
O
onelife.real 已提交
111

O
onelife.real 已提交
112
/* SECTION: I2C */
O
onelife.real 已提交
113 114
#define IIC_RX_BUFFER_SIZE			(32)

O
onelife.real 已提交
115 116
/* SECTION: ADC */

O
onelife.real 已提交
117 118
#define ADC_CALI_REF				adcRef2V5
#define ADC_CALI_CH 				adcSingleInpCh5
O
onelife.real 已提交
119
#define ADC_CONVERT_FREQUENCY 		(7000000)
O
onelife.real 已提交
120 121

#if (RT_CONSOLE_DEVICE == 0x0UL)
O
onelife.real 已提交
122
#define CONSOLE_DEVICE 				RT_USART0_NAME
O
onelife.real 已提交
123
#elif (RT_CONSOLE_DEVICE == 0x1UL)
O
onelife.real 已提交
124
#define CONSOLE_DEVICE 				RT_USART1_NAME
O
onelife.real 已提交
125
#elif (RT_CONSOLE_DEVICE == 0x2UL)
O
onelife.real 已提交
126
#define CONSOLE_DEVICE 				RT_USART2_NAME
O
onelife.real 已提交
127
#else
O
onelife.real 已提交
128 129 130
#define CONSOLE_DEVICE 				"no"
#endif

O
onelife.real 已提交
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

/* 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 已提交
154

O
onelife.real@gmail.com 已提交
155 156 157 158 159 160 161 162
/*! 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 已提交
163 164 165 166 167 168

/* Exported functions --------------------------------------------------------- */
void rt_hw_board_init(void);
void rt_hw_driver_init(void);

#endif /*__BOARD_H__ */