AD7798,AD7799调试程序电路及pdf中文资料下载

您所在的位置:网站首页 con5的封装 AD7798,AD7799调试程序电路及pdf中文资料下载

AD7798,AD7799调试程序电路及pdf中文资料下载

2023-09-04 20:09| 来源: 网络整理| 查看: 265

     AD7798/AD7799均为适合高精度测量应用的低功耗、低噪声、完整模拟前端,内置一个低噪声16位/24位Σ-Δ型ADC,其中含有3个差分模拟输入,还集成了片内低噪声仪表放大器,因而可直接输入小信号。当增益设置为64、更新速率为4.17 Hz时,AD7799的均方根(RMS)噪声为27 nV,AD7798的均方根(RMS)噪声为40 nV。AD7798/AD7799片内特性包括一个低端电源开关、基准电压检测、可编程数字输出引脚、熔断电流控制和一个内部时钟振荡器。输出数据速率可通过软件编程设置,可在4.17 Hz至470 Hz的范围内变化。AD7798/AD7799采用2.7 V至5.25 V电源供电,AD7798的典型功耗为300 µA,而AD7799的典型功耗为380 µA,两款器件均采用16引脚TSSOP封装。

              AD7798,AD7799芯片的特性

    AD7798,AD7799芯片的概述

       AD7798,AD7799引脚图,采用16引脚TSSOP封装。采用2.7V至5.25V电源供电,AD7799的典型功耗为380μA。

           AD7798,AD7799管脚功能介绍

AD7798,AD7799 pdf中文资料下载:http://www.51hei.com/f/AD7799_ad7798中文资料.pdf

经历了四天的挣扎,AD7799终于调试成功啦!!!!!!!

   说说我遇到的问题

   一、不判忙的状态下,读出数据是ffffff

    解决办法:

    设置CONFIGURATION REGISTER 的con5为1,然后检测STATUS REGISTER 的NOREF位是否为1,如果为1说明内部基准低于0.5v,也就是说没有基准。我检测到NOREF位为1,用万用表检测ref+为2.5,不是虚焊。检测来检测去没有问题,开始怀疑芯片,网上刚好也有说这个问题的,他说是芯片基准坏啦。我没办法重新焊了一块板子,问题依旧。没法硬着头皮看datasheet,最后发现还是设置的事。在我的硬件上ref-是直接接在管脚psw上的,如图示:

 AD7798,AD7799电路

 

问题就出在这,psw是个可以配置的开关,如图示

 

手册中MODE REGISTER的MR12是控制psw的,描述如下:电源开关控制位。当此位为1时器件的PSW管脚和GND导通,可以允许 30MA 的电流通过;当此为为0时,psw管脚悬空。我在写MODE REGISTER时没有将MR12位置1,导致psw悬空,ref-接近2.5V,所以检测不到基准,读出数全部为ffffff。

   改正方法有两个

   1、置位MODE REGISTER的MR12

   2、把ref-直接接到GND

二、不加判忙读出的数据一直是000000,加上判忙后,一直检测不到RDY变低,程序一直执行在判忙函数中

    遇到这个问题我就直接崩溃了,这时候我已经不相信芯片是坏的了,没办法就怀疑时序,就拿中文手册加英文手册去看,看看错过了哪一点。看了一天多没啥发现。后来拉个同事一块看,没发现什么问题,这时接近崩溃中,用逻辑分析仪也分析了,跟程序写的时序一样的,不是程序的事。肯定还是时序的事。插个小事,我给ADI亚太地区技术支持打电话啦,这个问题拖了三天,直到今天才给我打电话,但是给我的感觉就是这个技术支持对这个芯片不是很了解,没给我太大的帮助,不过还要谢谢今天技术支持的耐心讲解和指导。我就接着看程序,今天下午又把内部零刻度校准和片内满度校准都加了上去,还是不行。然后接着和同事讨论,他提议直接把CS接GND,试试就试试,最后发现程序正常啦,赶紧看读出的数据,发现很准确。调节电位器,重新采集,电压还是准确。当时就有跳起来的冲动,终于成功啦!!!这样肯定是CS的时序不对。然后对照手册发现单次转换模式下的时序中,CS一直是低电平,如图示

然后回想起21IC上的一篇日志上也是没有设置CS,这时候才恍然大悟,原来官方给的例程里都每次读写都改变了CS的值,移植官方的读写程序,如图

官方的读时序

官方的写时序

问题就出在程序上画红线的语句上

正确的ad7799程序如图示:

说说官方的程序吧,第一,官方程序没有判断RDY变低,所以可以说这个程序根本读不出数据即使在时序正常时;第二,官方给的读写函数里改变了cs的值,但是手册上没有改变,验证表明这个读写函数里不应该操作cs

 

需要注意的是在主程序里,在操作AD7799之前,一定先把CS拉低,所有操作完成后,再把CS拉高。

好了不知道描述的足够清楚不,希望对以后使用AD7799的同胞有帮助吧!

 

下面提供一个完整版本的ad7799程序,Keil C写的ADI的24位A/DAD7799使用SPI接口程序:(VRS51L3074单片机 是一颗基于8051内核集成了多种模块并可多 范围的在嵌入式设计中应用的芯片,完整的工程文件及hex下载地址:http://www.51hei.com/f/Keil_C_AD7799.rar )  

#pragma CODE DEBUG SYMBOLS OBJECTEXTEND     //SRC 当与汇编混合编译时需要 #include"VRS51L3074_keil.h" #include #define uchar   unsigned char #define uint    unsigned int #define ulong   unsigned long typedef union{     //无符号字符型,整形,长整形数据联合体               uchar uc[2];               uint  ui;              }UCI; typedef union{     //无符号字符型,整形,长整形数据联合体               uchar uc[4];               uint  ui[2];               ulong ul;              }UCIL;                               #define DELAY5  delay()   //_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_() sbit    P1_5    =   P1^5;      //1 sbit    P1_6    =   P1^6;      //2 sbit    P1_7    =   P1^7;      //3 sbit    P4_5    =   P4^5;     //6  pin sbit    P5_0    =   P5^0;     //7 sbit    P5_1    =   P5^1;     //8 sbit    P5_2    =   P5^2;     //9 sbit    P5_3    =   P5^3;     //10 sbit    P5_4    =   P5^4;     //20 sbit    P5_5    =   P5^5;     //21 sbit    P5_6    =   P5^6;     //22 sbit    P5_7    =   P5^7;     //23 #define AD7799_CS    P4_5           //输出   6pin #define AD7799_SCLK  P5_1           //输出   8pin #define AD7799_DOUT  P5_2           //输入   9pin #define AD7799_RDY   P5_2           //输入   9pin  同上是一个引脚 #define AD7799_DIN   P5_0           //输出   7pin UCIL MainData,demoul; ulong xdata XMainData,xdemoul; void Ad7799_Ini(); #define DELAYS10    _nop_();_nop_();_nop_();_nop_() void delay(char i) {uchar j;  for(;i>0;i--); for(j=0;j


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3