103 lines
4.1 KiB
C
103 lines
4.1 KiB
C
/*********************************************************************************************************************
|
||
* CH32V307VCT6 Opensourec Library 即(CH32V307VCT6 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||
*
|
||
* 本文件是CH32V307VCT6 开源库的一部分
|
||
*
|
||
* CH32V307VCT6 开源库 是免费软件
|
||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||
*
|
||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||
* 更多细节请参见 GPL
|
||
*
|
||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||
*
|
||
* 额外注明:
|
||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||
*
|
||
* 文件名称 zf_driver_adc
|
||
* 公司名称 成都逐飞科技有限公司
|
||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||
* 开发环境 MounRiver Studio V1.8.1
|
||
* 适用平台 CH32V307VCT6
|
||
* 店铺链接 https://seekfree.taobao.com/
|
||
*
|
||
* 修改记录
|
||
* 日期 作者 备注
|
||
* 2022-09-15 大W first version
|
||
********************************************************************************************************************/
|
||
|
||
#ifndef _zf_driver_adc_h
|
||
#define _zf_driver_adc_h
|
||
|
||
#include "zf_driver_gpio.h"
|
||
#include "zf_common_typedef.h"
|
||
//CH32V307只有一个ADC,可以分时复用在很多个通道上面
|
||
|
||
|
||
//此枚举定义不允许用户修改
|
||
typedef enum // 枚举ADC通道
|
||
{
|
||
ADC1_IN0_A0 = 0x0000, // 0x 0[ADC1] 0[CH00] 00[A0]
|
||
ADC1_IN1_A1 = 0x0101, // 0x 0[ADC1] 1[CH00] 01[A1]
|
||
ADC1_IN2_A2 = 0x0202, // 0x 0[ADC1] 2[CH00] 02[A2]
|
||
ADC1_IN3_A3 = 0x0303, // 0x 0[ADC1] 3[CH00] 03[A3]
|
||
ADC1_IN4_A4 = 0x0404, // 0x 0[ADC1] 4[CH00] 04[A4]
|
||
ADC1_IN5_A5 = 0x0505, // 0x 0[ADC1] 5[CH00] 05[A5]
|
||
ADC1_IN6_A6 = 0x0606, // 0x 0[ADC1] 6[CH00] 06[A6]
|
||
ADC1_IN7_A7 = 0x0707, // 0x 0[ADC1] 7[CH00] 07[A7]
|
||
ADC1_IN8_B0 = 0x0820, // 0x 0[ADC1] 8[CH00] 20[B0]
|
||
ADC1_IN9_B1 = 0x0921, // 0x 0[ADC1] 9[CH00] 21[B1]
|
||
ADC1_IN10_C0 = 0x0A40, // 0x 0[ADC1] A[CH00] 40[C0]
|
||
ADC1_IN11_C1 = 0x0B41, // 0x 0[ADC1] B[CH00] 41[C1]
|
||
ADC1_IN12_C2 = 0x0C42, // 0x 0[ADC1] C[CH00] 42[C2]
|
||
ADC1_IN13_C3 = 0x0D43, // 0x 0[ADC1] D[CH00] 43[C3]
|
||
ADC1_IN14_C4 = 0x0E44, // 0x 0[ADC1] E[CH00] 44[C4]
|
||
ADC1_IN15_C5 = 0x0F45, // 0x 0[ADC1] F[CH00] 45[C5]
|
||
|
||
|
||
ADC2_IN0_A0 = 0x1000, // 0x 1[ADC2] 0[CH00] 00[A0]
|
||
ADC2_IN1_A1 = 0x1101, // 0x 1[ADC2] 1[CH00] 01[A1]
|
||
ADC2_IN2_A2 = 0x1202, // 0x 1[ADC2] 2[CH00] 02[A2]
|
||
ADC2_IN3_A3 = 0x1303, // 0x 1[ADC2] 3[CH00] 03[A3]
|
||
ADC2_IN4_A4 = 0x1404, // 0x 1[ADC2] 4[CH00] 04[A4]
|
||
ADC2_IN5_A5 = 0x1505, // 0x 1[ADC2] 5[CH00] 05[A5]
|
||
ADC2_IN6_A6 = 0x1606, // 0x 1[ADC2] 6[CH00] 06[A6]
|
||
ADC2_IN7_A7 = 0x1707, // 0x 1[ADC2] 7[CH00] 07[A7]
|
||
ADC2_IN8_B0 = 0x1820, // 0x 1[ADC2] 8[CH00] 20[B0]
|
||
ADC2_IN9_B1 = 0x1921, // 0x 1[ADC2] 9[CH00] 21[B1]
|
||
ADC2_IN10_C0 = 0x1A40, // 0x 1[ADC2] A[CH00] 40[C0]
|
||
ADC2_IN11_C1 = 0x1B41, // 0x 1[ADC2] B[CH00] 41[C1]
|
||
ADC2_IN12_C2 = 0x1C42, // 0x 1[ADC2] C[CH00] 42[C2]
|
||
ADC2_IN13_C3 = 0x1D43, // 0x 1[ADC2] D[CH00] 43[C3]
|
||
ADC2_IN14_C4 = 0x1E44, // 0x 1[ADC2] E[CH00] 44[C4]
|
||
ADC2_IN15_C5 = 0x1F45, // 0x 1[ADC2] F[CH00] 45[C5]
|
||
}adc_channel_enum;
|
||
|
||
|
||
//此枚举定义不允许用户修改
|
||
typedef enum // 枚举ADC通道
|
||
{
|
||
ADC_8BIT = 4, //8位分辨率
|
||
ADC_9BIT = 3, //9位分辨率
|
||
ADC_10BIT = 2, //10位分辨率
|
||
ADC_11BIT = 1, //11位分辨率
|
||
ADC_12BIT = 0, //12位分辨率
|
||
}adc_resolution_enum;
|
||
|
||
|
||
|
||
|
||
uint16 adc_convert (adc_channel_enum ch);
|
||
uint16 adc_mean_filter_convert (adc_channel_enum ch, const uint8 count);
|
||
void adc_init (adc_channel_enum ch, adc_resolution_enum resolution);
|
||
|
||
|
||
#endif
|