ADC
更新时间:2019-01-25 14:42:48
接口列表
函数名称 | 功能描述 |
---|---|
hal_adc_init | 初始化指定ADC |
hal_adc_value_get | 获取ADC采样值 |
hal_adc_finalize | 关闭指定ADC |
接口详情
int32_t hal_adc_init(adc_dev_t *adc)
描述 | 初始化指定ADC |
---|---|
参数 | adc:ADC设备描述 |
返回值 | 返回成功或失败, 返回0表示ADC初始化成功,非0表示失败 |
int32_t hal_adc_value_get(adc_dev_t *adc, void *output, uint32_t timeout)
描述
|
获取ADC采样值
|
参数
|
adc:ADC设备描述
|
output:数据缓冲区
|
|
timeout:超时时间
|
|
返回值
|
返回成功或失败, 返回0表示ADC时间获取成功,非0表示失败
|
int32_t hal_adc_finalize(adc_dev_t *adc)
描述 | 关闭指定ADC |
---|---|
参数 | adc:ADC设备描述 |
返回值 | 返回成功或失败, 返回0表示ADC时间设定成功,非0表示失败 |
相关结数据结构
adc_dev_t
typedef struct {
uint8_t port; /* adc port */
adc_config_t config; /* adc config */
void *priv; /* priv data */
} adc_dev_t;
adc_config_t
typedef struct {
uint32_t sampling_cycle; /* sampling period in number of ADC clock cycles */
} adc_config_t;
使用示例
#include <aos/hal/adc.h>
#define ADC1_PORT_NUM 1
/* define dev */
adc_dev_t adc1;
int application_start(int argc, char *argv[])
{
int ret = -1;
int value = 0;
adc_config_t adc_cfg;
/* adc port set */
adc1.port = ADC1_PORT_NUM;
/* set sampling_cycle */
adc1.config.sampling_cycle = 100;
/* init adc1 with the given settings */
ret = hal_adc_init(&adc1);
if (ret != 0) {
printf("adc1 init error !\n");
}
/* get adc value */
ret = hal_adc_value_get(&adc1, &value, HAL_WAIT_FOREVER);
if (ret != 0) {
printf("adc1 vaule get error !\n");
}
/* finalize adc1 */
hal_adc_finalize(&adc1);
while(1) {
/* sleep 500ms */
aos_msleep(500);
};
}
注:port为逻辑端口号,其与物理端口号的对应关系见具体的对接实现
移植说明
新建hal\_adc\_xxmcu.c和hal\_adc\_xxmcu.h的文件,并将这两个文件放到platform/mcu/xxmcu/hal目录下。在hal\_adc\_xxmcu.c中实现所需要的hal函数,hal\_adc\_xxmcu.h中放置相关宏定义。
参考platform/mcu/stm32l4xx/src/STM32L496G-Discovery/hal/hal\_adc\_stm32l4.c