基本信息
源码名称:AD7682.zip
源码大小:1.43KB
文件格式:.zip
开发语言:Java
更新时间:2019-08-04
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
/*******************************************************************************
** 文件名称:ad7682.c
** 功 能:
** 修改日志:
********************************************************************************/
#include "ad7682.h"
#include "includes.h"
/*******************************************************************************
** 函数名称:void Delay_1us(uint count)
** 功 能: count为1时延时1us
** 修改日志:
*******************************************************************************/
static void Delay_1us(uint count)
{
for(uchar i=0 ; i<count ;i )
{
for(uchar j=0; j<1;j )
{
_NOP();
}
}
}
/******************************************************************************
** 函数名称:INT16U AD7682_spi(INT8U ch)
** 功 能: reg寄存器内容,data转换数据
** 修改日志:
*******************************************************************************/
INT16U AD7682_spi(INT8U ch)
{
INT16U reg=0;
INT16U data=0;
CS_LOW;
SCLK_LOW;
reg = (1<<13)|(7<<10)|(ch<<7)|(1<<6)|(1<<0);
reg <<=2; //寄存器只用到了14位,所以要先移出高两位
Delay_1us(10);
for(INT8U i=0; i<16; i )
{
if(reg&0x8000) DIN_HIGH;
else DIN_LOW;
Delay_1us(10);
reg<<=1;
SCLK_HIGH;
Delay_1us(20);
data<<=1;
if(DOUT_READ) data|=1;
SCLK_LOW;
Delay_1us(20);
}
CS_HIGH;
Delay_1us(20);
return (data);
}
/******************************************************************************
** 函数名称:void AD7682_init(void)
** 功 能:
** 修改日志:
*******************************************************************************/
void AD7682_init(void)
{
DOUT_DIR_INPUT;
CS_DIR_OUTPUT;
DIN_DIR_OUTPUT;
SCLK_DIR_OUTPUT;
CS_HIGH;
DIN_HIGH;
SCLK_HIGH;
Delay_1us(30);
AD7682_spi(0);
AD7682_spi(0);
}
/******************************************************************************
** 函数名称:float Get_ADC_Value(ch)
** 功 能:采样 ch 选择通道 前三次采集无效
** 修改日志:
*******************************************************************************/
float Get_ADC_Value(INT8U ch)
{
float AD_Value1 = 0,AD_Value2 = 0;
AD7682_spi(ch);
AD7682_spi(ch);
for(INT8U i = 0; i<10; i ){
AD_Value1 = AD7682_spi(ch);
AD_Value2 = AD_Value1;
}
return (AD_Value2*0.25/65536);// AD_Value/65536*2.5/5
}