/***************************************************************************//** * @file board.h * @brief Board support of RT-Thread RTOS for EFM32 * COPYRIGHT (C) 2011, RT-Thread Development Team * @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 * 2011-05-06 onelife Add EFM32 development kit and SPI Flash support * 2011-07-12 onelife Add prototype for SWO output enable and interrupt * context check functions ******************************************************************************/ #ifndef __BOARD_H__ #define __BOARD_H__ #if defined(EFM32G890F128) #elif defined(EFM32G290F128) #elif defined(EFM32G230F128) #else #error Unknown MCU type #endif /* Includes ------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #if defined(EFM32_G290_DK) #include #endif /* Exported types ------------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/ /* Exported variables --------------------------------------------------------*/ extern volatile rt_uint32_t rt_system_status; /* Exported macro ------------------------------------------------------------*/ #ifdef EFM32_DEBUG #define DEBUG_EFM #define DEBUG_EFM_USER #define EFM32_SWO_ENABLE #endif #define EFM32_NO_DATA (0) #define EFM32_NO_POINTER (RT_NULL) #define EFM32_NO_OFFSET (-1) #define EFM32_NO_DMA (-1) /* 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 /* SECTION: Ethernet */ #if defined(EFM32_USING_ETHERNET) #define USART_2_AUTOCS (0) #define ETH_CS_PORT (gpioPortB) #define ETH_CS_PIN (6) #endif /* SECTION: SYSTEM */ #define EFM32_SRAM_END (SRAM_BASE + SRAM_SIZE) #define EFM32_BASE_PRI_DEFAULT (0x0UL << 5) #define EFM32_IRQ_PRI_DEFAULT (0x4UL << 5) #if (defined(EFM32_G890_STK) || defined(EFM32_G290_DK)) #define EFM32_HFXO_FREQUENCY (32000000) #else #define EFM32_HFXO_FREQUENCY (00000000) #endif /* SECTION: USART */ #define USART_RX_BUFFER_SIZE (64) /* SUBSECTION: UART */ #define UART_BAUDRATE (115200) /* SUBSECTION: SPI */ /* Max SPI clock: HFPERCLK/2 for master, HFPERCLK/8 for slave */ #define SPI_BAUDRATE (4000000) #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)) /* SECTION: I2C */ #define IIC_RX_BUFFER_SIZE (32) /* SECTION: ADC */ #define ADC_CALI_REF adcRef2V5 #define ADC_CALI_CH adcSingleInpCh5 #define ADC_CONVERT_FREQUENCY (7000000) #if (RT_CONSOLE_DEVICE == 0x0UL) #define CONSOLE_DEVICE RT_USART0_NAME #elif (RT_CONSOLE_DEVICE == 0x1UL) #define CONSOLE_DEVICE RT_USART1_NAME #elif (RT_CONSOLE_DEVICE == 0x2UL) #define CONSOLE_DEVICE RT_USART2_NAME #else #define CONSOLE_DEVICE "no" #endif /* 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 /*! 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 */ /* Exported functions ------------------------------------------------------- */ void rt_hw_board_init(void); void rt_hw_driver_init(void); rt_uint32_t rt_hw_interrupt_check(void); #endif /*__BOARD_H__ */