📄 adc.h
字号:
/***********************************************Copyright (c)*********************************************
** Guangzou ZLG-MCU Development Co.,LTD.
**
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: ADC.c
** Last modified Date: 2007-11-13
** Last Version: 2.0
** Descriptions: 模数转换模块 函数实现,采用设备描述符来操作
**
**--------------------------------------------------------------------------------------------------------
** Created by: WangGuoguang
** Created date: 2007-11-08
** Version: 1.0
** Descriptions: 此头文件可在config.h中包含.
**
**--------------------------------------------------------------------------------------------------------
** Modified by: WangGuoguang
** Modified Date: 2007-11-13
** Version: 2.2
** Descriptions: 完善数据缓存处理.
**
*********************************************************************************************************/
#ifndef __ADC_H
#define __ADC_H
/*********************************************************************************************************
ADC 软件包裁剪
*********************************************************************************************************/
#ifndef ADC_FUN_LIB
#define ADC_FUN_LIB 1
#endif
/*********************************************************************************************************
定义 ADC 缓冲区的大小,单位为字节 (根据实际需求定义缓冲长度)
*********************************************************************************************************/
#define ADC_DATA_QUEUE_NUM 100 /* 定义保存AD结果的数据队列长度*/
/*********************************************************************************************************
ADC 定义 (定义更多的编号是为了以后移植扩展)
*********************************************************************************************************/
#define ADC_0 0 /* ADC 0 编号 */
#define ADC_1 1 /* ADC 1 编号 */
/*********************************************************************************************************
ADC 采样通道号
*********************************************************************************************************/
#define ADC_AIN0 0
#define ADC_AIN1 1
#define ADC_AIN2 2
#define ADC_AIN3 3
#define ADC_AIN4 4
#define ADC_AIN5 5
#define ADC_AIN6 6
#define ADC_AIN7 7
/*********************************************************************************************************
ADC 获取状态定义
*********************************************************************************************************/
#define ADC_GET_START 40
#define ADC_GET_STARTMODE 41
#define ADC_GET_USECHN 42
#define ADC_GET_DONECHN 43
#define ADC_GET_STATE 44
/*********************************************************************************************************
ADC 读取转换结果操作方式定义
*********************************************************************************************************/
#define ADC_BUSY 10
#define ADC_IDLE 11
#define ADC_OK 12
#define ADC_ERR 13
#define ADC_PAUSE 14
#define ADC_BUF_FULL 15
#define ADC_STOP 20
#define ADC_START 21
#define ADC_SOFE 30
#define ADC_BURST 31
/*********************************************************************************************************
** Function name: adcInit
**
** Descriptions: 用户初始化接口函数,解释用户的字符串命令,并对ADC初始化及设置中断
** Input parameters: uiID --部件设备号 :0-ADC0;1-ADC1
** pcArg --字符串输入指针参数,输入参数格式为:关键字0=值0[空格]关键字1=值1[空格]......
** 关键字 :
** pRsv --保留指针参数,可输入NULL.
** Output parameters: OPERATE_FAIL -- 操作失败
** Returned value: OPERATE_SUCCESS -- 操作成功
**
** Using example : char *pcArg = "Chn=1 ADCClk=100000"; adcInit(0,pcArg,NULL);
** Notice: 设备操作失败的原因是输入不正确的设备号.
** 本API函数的参数是在FPCLK=11059200Hz的频率下设置的
**********************************************************************************************************/
uint32 adcInit (uint32 uiID,
char *pcArg,
void *pRsv);
/*********************************************************************************************************
** Function name: adcSetMode
**
** Descriptions: 参数设置函数,解释用户的字符串命令,并对ADC进行设置及设置中断
** input parameters: uiID --部件设备号 :0-ADC0;1-ADC1
** pcArg --字符串输入指针参数,输入参数格式为:关键字0=值0[空格]关键字1=值1[空格]......
** 关键字: Chn: 可选择范围从 1~8;
** ADCClk: <= 4.5MHZ,输入范围:0~4500000;
** Burst : 0 -软件控制模式,1 -硬件控制模式
** Precision:可输入范围:3~10
** PowerDown:可选择:0 -掉电模式, 1 -ADC处于正常工作模式
** Start: 启动控制选择. 根据手册数据,可选择范围:0~7
** Edge: 启动触发信号的边沿选择. 0 -下降沿, 1 -上升沿转换.
**
** pRsv --保留指针参数,可输入NULL.
** Output parameters: OPERATE_FAIL -- 操作失败
** Returned value: OPERATE_SUCCESS -- 操作成功
**
** Using example : char *pcArg = "Chn=1 ADCClk=100000"; adcSetMode(0,pcArg,NULL);
** Notice: 1.设备操作失败的原因是输入不正确的设备号.
** 2.本API函数的参数是在FPCLK=11059200Hz的频率下设置的
** 3.不允许在ADC工作忙状态下对ADC进行模式设置,否则直接返回错误.
*********************************************************************************************************/
uint32 adcSetMode (uint32 uiID,
char *pcArg,
void *pRsv);
/*********************************************************************************************************
** Function name: adcGetState
**
** Descriptions: ADC状态获取函数
** Input parameters: uiID 设备号,例如0表示使用ADC0
** uiParmCmd 要读取的参数类型,具体参见ADC.h宏定义
** pRsv 保留指针参数,可输入NULL.
**
** Returned value: 获取状态失败: OPERATE_FAIL. 失败的原因:参数错误.
** 获取状态成功: 根据不同命令获得的值意义不一样
** uiParamCmd = ADC_GET_START, 返回ADC_STOP,ADC_START;
** uiParamCmd = ADC_GET_STARTMODE, 返回ADC_BURST,ADC_SOFE;
** uiParamCmd = ADC_GET_USECHN, 返回通道号数组名;
** uiParamCmd = ADC_GET_DONECHN, 返回已完成转换的通道号数组名;
** uiParamCmd = ADC_GET_STATE, 返回ADC_BUSY,ADC_IDLE,ADC_ERR.
*********************************************************************************************************/
uint32 adcGetState (uint32 uiID,
uint32 uiParamCmd,
char *pRsv);
/*********************************************************************************************************
** Function name: adcStart
**
** Descriptions: 启动ADC
** input parameters: uiID --部件设备号:0-ADC0
** pRsv --保留指针参数,可输入NULL.
** Output parameters: OPERATE_FAIL -- 操作失败
** Returned value: OPERATE_SUCCESS -- 操作成功
*********************************************************************************************************/
uint32 adcStart (uint32 uiID, void *pRsv);
/*********************************************************************************************************
** Function name: adcStop
**
** Descriptions: 停止ADC
** input parameters: uiID --部件设备号:0-ADC0
**
** Output parameters: OPERATE_FAIL -- 操作失败
** Returned value: OPERATE_SUCCESS -- 操作成功
*********************************************************************************************************/
uint32 adcStop (uint32 uiID);
/*********************************************************************************************************
** Function name: adcGetValue
**
** Descriptions: 读取ADC转换结果
** input parameters: uiID --部件设备号:0-ADC0
** uiChn --ADC读取结果通道号
** pRsv --保留指针参数,可输入NULL.
** Output parameters: OPERATE_FAIL -- 操作失败
** Returned value: 读取ADC结果 -- 操作成功
**
** Using example :
*********************************************************************************************************/
uint32 adcGetValue (uint32 uiID,
uint32 uiChn,
void *pRsv);
/*********************************************************************************************************
** Function name: adc0Isr
** Descriptions: ADC0中断服务程序
** input parameters: 无
** Returned value: 无
*********************************************************************************************************/
void adc0Isr (void);
#endif /* __ADC_H */
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -