2013-01-08 22:40:58 +08:00
|
|
|
/***************************************************************************//**
|
2021-03-27 15:16:57 +08:00
|
|
|
* @file drv_adc.h
|
|
|
|
* @brief ADC driver of RT-Thread RTOS for EFM32
|
2013-01-08 22:40:58 +08:00
|
|
|
* COPYRIGHT (C) 2012, RT-Thread Development Team
|
2021-03-27 15:16:57 +08:00
|
|
|
* @author onelife
|
2013-01-08 22:40:58 +08:00
|
|
|
* @version 1.0
|
|
|
|
*******************************************************************************
|
|
|
|
* @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
|
2021-03-27 15:16:57 +08:00
|
|
|
* Date Author Notes
|
|
|
|
* 2011-02-21 onelife Initial creation for EFM32
|
|
|
|
* 2011-07-14 onelife Add multiple channels support for scan mode
|
2013-01-08 22:40:58 +08:00
|
|
|
******************************************************************************/
|
|
|
|
#ifndef __DRV_ADC_H__
|
|
|
|
#define __DRV_ADC_H__
|
|
|
|
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
|
|
/* Exported types ------------------------------------------------------------*/
|
|
|
|
struct efm32_adc_device_t
|
|
|
|
{
|
2021-03-27 15:16:57 +08:00
|
|
|
ADC_TypeDef *adc_device;
|
|
|
|
rt_uint8_t mode;
|
|
|
|
rt_uint8_t singleCount;
|
|
|
|
rt_uint8_t singleDmaChannel;
|
|
|
|
rt_uint8_t scanCount;
|
|
|
|
rt_uint8_t scanDmaChannel;
|
2013-01-08 22:40:58 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct efm32_adc_control_single_t
|
|
|
|
{
|
2021-03-27 15:16:57 +08:00
|
|
|
rt_uint8_t count;
|
|
|
|
rt_uint8_t dmaChannel;
|
|
|
|
ADC_InitSingle_TypeDef *init;
|
2013-01-08 22:40:58 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct efm32_adc_control_scan_t
|
|
|
|
{
|
2021-03-27 15:16:57 +08:00
|
|
|
rt_uint8_t count;
|
|
|
|
rt_uint8_t dmaChannel;
|
|
|
|
ADC_InitScan_TypeDef *init;
|
2013-01-08 22:40:58 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct efm32_adc_control_t
|
|
|
|
{
|
2021-03-27 15:16:57 +08:00
|
|
|
rt_uint8_t mode;
|
|
|
|
struct efm32_adc_control_scan_t scan;
|
|
|
|
struct efm32_adc_control_single_t single;
|
2013-01-08 22:40:58 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct efm32_adc_result_t
|
|
|
|
{
|
2021-03-27 15:16:57 +08:00
|
|
|
rt_uint8_t mode;
|
|
|
|
void *buffer;
|
2013-01-08 22:40:58 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
/* Exported constants --------------------------------------------------------*/
|
|
|
|
/* Exported macro ------------------------------------------------------------*/
|
2021-03-27 15:16:57 +08:00
|
|
|
#define ADC_MODE_SINGLE (0x01)
|
|
|
|
#define ADC_MODE_SCAN (0x02)
|
|
|
|
#define ADC_MODE_TAILGATE (0x04)
|
|
|
|
#define ADC_OP_SINGLE_REPEAT (0x10)
|
|
|
|
#define ADC_OP_SCAN_REPEAT (0x20)
|
|
|
|
#define ADC_MASK_MODE (0x0f)
|
|
|
|
#define ADC_MASK_OP (0xf0)
|
2013-01-08 22:40:58 +08:00
|
|
|
|
|
|
|
/* Exported functions ------------------------------------------------------- */
|
|
|
|
void rt_hw_adc_init(void);
|
|
|
|
|
|
|
|
#endif /*__DRV_ADC_H__ */
|