95 lines
2.2 KiB
C
95 lines
2.2 KiB
C
|
|
/*
|
||
|
|
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||
|
|
*
|
||
|
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
|
*
|
||
|
|
* Change Logs:
|
||
|
|
* Date Author Notes
|
||
|
|
* 2024-05-11 LJ the first version
|
||
|
|
*/
|
||
|
|
#ifndef APPLICATIONS_ADC_ADC_H_
|
||
|
|
#define APPLICATIONS_ADC_ADC_H_
|
||
|
|
#include <rtthread.h>
|
||
|
|
#include <rtdevice.h>
|
||
|
|
|
||
|
|
|
||
|
|
#define ADC1_CHANNEL_0 0 /* ADC 通道 */
|
||
|
|
#define ADC2_CHANNEL_4 4 /* ADC 通道 */
|
||
|
|
#define ADC3_CHANNEL_10 10 /* ADC 通道 */
|
||
|
|
#define ADC3_CHANNEL_11 11 /* ADC 通道 */
|
||
|
|
|
||
|
|
#define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数 */
|
||
|
|
#define CONVERT_BITS (1 << 12) /* 转换位数为12位 */
|
||
|
|
|
||
|
|
typedef struct
|
||
|
|
{
|
||
|
|
rt_uint16_t ADC1_0_vol; // 读取电压值
|
||
|
|
rt_uint16_t ADC2_4_vol; // 读取电压值
|
||
|
|
rt_uint16_t ADC3_10_vol; // 读取电压值
|
||
|
|
rt_uint16_t ADC3_11_vol; // 读取电压值
|
||
|
|
|
||
|
|
rt_uint16_t ADC1_0_value; // 读取电压值
|
||
|
|
rt_uint16_t ADC2_4_value; // 读取电压值
|
||
|
|
rt_uint16_t ADC3_10_value; // 读取电压值
|
||
|
|
rt_uint16_t ADC3_11_value; // 读取电压值
|
||
|
|
|
||
|
|
rt_uint16_t ADC1_0_h_vol; // 0-10V
|
||
|
|
rt_uint16_t ADC2_4_h_vol; //
|
||
|
|
|
||
|
|
rt_uint16_t ADC1_0_Current; // 4-20ma
|
||
|
|
rt_uint16_t ADC2_4_Current; //
|
||
|
|
|
||
|
|
rt_uint8_t log;
|
||
|
|
rt_uint8_t ADC1_mode; //ADC1模式 1:0-10V 2:4-20ma 3:3.3v
|
||
|
|
rt_uint8_t ADC2_mode;//ADC2模式
|
||
|
|
} ADC_Data; // ADC状态
|
||
|
|
|
||
|
|
//ADC初始化函数
|
||
|
|
rt_uint8_t adc_init();
|
||
|
|
|
||
|
|
//ADC读取数据
|
||
|
|
void adc_read();
|
||
|
|
|
||
|
|
//获取3V3的值ADC
|
||
|
|
rt_uint16_t get_ADC3_10_vol();
|
||
|
|
|
||
|
|
//获取3V3的值ADC
|
||
|
|
rt_uint16_t get_ADC3_11_vol();
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 获取0-10vADC值
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
rt_uint16_t get_ADC1_0_h_vol();
|
||
|
|
/**
|
||
|
|
* 获取4-10ma电流值
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
rt_uint16_t get_ADC1_0_Current();
|
||
|
|
/**
|
||
|
|
* 获取0-10vADC值
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
rt_uint16_t get_ADC2_4_h_vol();
|
||
|
|
/**
|
||
|
|
* 获取4-10ma电流值
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
rt_uint16_t get_ADC2_4_Current();
|
||
|
|
|
||
|
|
//ADC log 功能开启
|
||
|
|
void set_ADC_log(rt_uint8_t log);
|
||
|
|
|
||
|
|
//设置ADC1的模式1:0-10V 2:4-20ma
|
||
|
|
void set_ADC1_mode(rt_uint8_t mode);
|
||
|
|
|
||
|
|
//设置ADC2的模式1:0-10V 2:4-20ma
|
||
|
|
void set_ADC2_mode(rt_uint8_t mode);
|
||
|
|
|
||
|
|
//获取ADC1的模式1:0-10V 2:4-20ma
|
||
|
|
rt_uint8_t get_ADC1_mode();
|
||
|
|
//获取ADC2的模式1:0-10V 2:4-20ma
|
||
|
|
rt_uint8_t get_ADC2_mode();
|
||
|
|
|
||
|
|
#endif /* APPLICATIONS_ADC_ADC_H_ */
|