您的位置 首页 观点

AD7705程序

AD7705应用注意要点:(1)DRDY逻辑不要搞反,高电平时等待转换状态,低电平为可以读取转换数据(2)系统校准时输入信号要大于所选量程的4

AD7705使用留意关键:
(1)DRDY逻辑不要搞反,高电平时等候转化状况,低电平为能够读取转化数据
(2)体系校按时输入信号要大于所选量程的4/5,不然校准不到32767。
(3)校按时要等候必定的时刻,读取数据也相同,不能超过转化速率。
(4)一般的使用只需内部校准,这个很简单,只需初始化就能够。假如丈量规模不是芯片的规模,能够经过体系校准来完成,满量程校准电压要大于量程的4/5

#include
#include
#include”ad7705.h”
#include”main.h”
#include”crc16.h”
#include”Usart.h”

//针对四个量程的设置寄存器的设置内容
//(1)关于单极性V等级输入0-5V、0-20mA、0-10V这三个量程,输入规模为0-2V,无极性,增益为1,缓冲形式–0-2V
//(2)关于双极性V等级输入+-2.5V、+-5V这两个量程,输入规模为+-1V,双极性,增益为2,缓冲形式–+-2V
//(3)关于双精度mV等级输入+-500mV,增益为4,双极性,缓冲形式–+-2V
//(4)对双精度mV等级+-50mV,增益为32,双极性,缓冲形式–+-1.6V
//——MD1(0)MD0(0)G2(0)G1(0)G0(0)B/U(0)BUF(0)FSYNC(0)————————–//
constunsignedchartext_of_setup[4]={0X04,0X08,0X10,0X28};//非缓冲形式,数字滤波同步
//constunsignedchartext_of_setup[4]={0X06,0X0A,0X12,0X2A};//缓冲形式,数字滤波同步

externvolatileunsignedcharcommand[7];//校准指令大局数组
externvolatileunsignedcharscale;//记载体系量程
externvolatileunsignedcharNO_CALI_TYPE;//未校准类型
externvolatileunsignedlongintZS,GS;//当时量程的校准系数
externvolatileunsignedchartime_count;//超时标志

//—————————————————————————-
//函数:reset_AD7705
//功用:AD7705串行接口失步后将其复位。复位后要延时500us再拜访
//参数:无
//回来:无
//变量:无
//补白:无
//—————————————————————————-
voidreset_AD7705(void)
{
unsignedchari;

AD_DIN1;
for(i=0;i<36;i++)
{
AD_CLK0;
asm(“nop”);
asm(“nop”);
asm(“nop”);
AD_CLK1;
asm(“nop”);
asm(“nop”);
asm(“nop”);
}

_delay_ms(1);
}

//——————————————————————————————
//函数:read_AD7705_byte
//功用:从AD7705读一个字节的数据
//参数:无
//回来:读到的一字节数据
//变量:无
//补白:无
//——————————————————————————————
unsignedcharread_AD7705_byte(void)
{
unsignedchardata=0;
unsignedchari=0;

for(i=0;i<8;i++)
{
data<<=1;
AD_CLK0;
asm(“nop”);
asm(“nop”);
asm(“nop”);
if(AD_DOUT)
{
data++;
}
AD_CLK1;
asm(“nop”);
asm(“nop”);
asm(“nop”);
}

returndata;
}

//——————————————————————————————
//函数:read_AD7705_word
//功用:从AD7705读一个字的数据,共16bit
//参数:无
//回来:读到的一字节数据
//变量:无
//补白:无
//——————————————————————————————
unsignedintread_AD7705_word(void)
{
unsignedintdata=0;
unsignedchari=0;

for(i=0;i<16;i++)
{
data<<=1;
AD_CLK0;
asm(“nop”);
asm(“nop”);
asm(“nop”);
if(AD_DOUT)
{
data++;
}
AD_CLK1;
asm(“nop”);
asm(“nop”);
asm(“nop”);
}

returndata;
}

//——————————————————————————————
//函数:read_AD7705_dword
//功用:从AD7705读一个24的数据
//参数:无
//回来:读到的一字节数据
//变量:无
//补白:AD7705是一个24位AD,选定改写频率在16.7HZ下,有用位是19位,暂时读出悉数24位数据
//——————————————————————————————
unsignedlongintread_AD7705_dword(void)
{
unsignedlongdata=0;
unsignedchari=0;

for(i=0;i<24;i++)
{
data<<=1;
AD_CLK0;
asm(“nop”);
asm(“nop”);
asm(“nop”);
if(AD_DOUT)
{
data++;
}
AD_CLK1;
asm(“nop”);
asm(“nop”);
asm(“nop”);
}

returndata;
}

//——————————————————————————————
//函数:write_AD7705_byte
//功用:往AD7705写8位数据
//参数:IN-uint8_tdata,要写入AD7705的数据
//回来:无
//变量:无
//补白:无
//——————————————————————————————
voidwrite_AD7705_byte(unsignedchardata)
{
for(unsignedchari=0;i<8;i++)
{
AD_CLK0;
if(data&0x80)
AD_DIN1;
else
AD_DIN0;
asm(“nop”);
asm(“nop”);
asm(“nop”);
AD_CLK1;
asm(“nop”);
asm(“nop”);
asm(“nop”);
data<<=1;
}

AD_DIN1;
}

//——————————————————————————————
//函数:write_AD7705_dword
//功用:往AD7705写24位数据,由于AD7705是24位的器材
//参数:IN-int32_tdata,要写入AD7705的数据
//回来:无
//变量:无
//补白:无
//——————————————————————————————
voidwrite_AD7705_dword(unsignedlongintdata)
{
for(unsignedchari=0;i<24;i++)
{
AD_CLK0;
if(data&0x800000)
AD_DIN1;
else
AD_DIN0;
asm(“nop”);
asm(“nop”);
asm(“nop”);
AD_CLK1;
asm(“nop”);
asm(“nop”);
asm(“nop”);
data<<=1;
}

AD_DIN1;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/318159.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部