1.  ADS1256概述

ADS1256是TI(TexasInstruments)公司推出的一款低噪声高分辨率的24位Sigma-Delta(E-v)模数转换器(ADC)。E-vADC与传统的逐次逼近型和积分型ADC相比有转换误差小而价格低廉的优点,但由于受带宽和有效采样率的限制,E-vADC不适用于高频数据采集的场合。该款ADS1256可适合于采集最高频率只有几千赫兹的模拟数据的系统中,数据输出速率最高可为30K采样点/秒(SPS),4路差分与8路伪差分输入,有完善的自校正和系统校正系统,SPI串行数据传输接口。本文结合笔者自己的应用经验,对该ADC的基本原理以及应用做简要介绍。

ADS1256性价比很高,是TI公司24位ADC中出货最大的几款ADC之一,用量很大,网上资料以相对齐全,供货很稳定,非常适用于中底速高精度的测试,如应变计、气体分析、仪器仪表、压力传感器、血液分析、工业过程控制、医疗科学仪器等应用。笔者对ADS1256做了一次比较测试,分享下测试的结果

2.  硬件设计分析

从结构图可以看出来,AD1256是模拟区域与数字区域完全独立的ADC,即AVDD给模拟区域供电,DVDD给数字区域供电,在原理图设计方面按照官方指导文档,需要对两个区域做独立的布线与隔离处理,才能让信噪比最佳。另可靠的基准电压是高精度ADC命根,本次试验选择TI公司推出的REF5025作基准参考,REF5025可低于3µVpp/V 噪声、3ppm/°C 漂移,性能是十分出色的。

由于经常做高频类项目,十分讨厌杜邦线/飞线测试方式,在高精度的领域,24位ADC梯度值2的2416777216,如果接入基准电压是2.5v,理论分辨率可达到0.149μV,做过高频的工程师深知杜邦线的罪恶,根据上面的技术分析,哪怕线路被引入1μV的干扰,也可以让精度打上一定折扣。为了让ADS1232性能得以充分体现,特意做了一个测试载板,载板的设计也是很关键,分割模拟数字区域同时,连接地方大量使用钽电容做旁路电路,以把波纹抑制到最小,合理的布局与布线也很重要,敷铜区域也需要模数分离,以磁珠或者0-5R/电感隔开。

3.  时序图解说

由时序图看出来,ADS1256读写是简单的3线串行读数方式,属于Microwire串行接口,STM32的SPI接口可以完美的与之匹配,当然也可以采用软仿SPI替代STM32的硬件SPI,这样的程序更具移植性。SPI时序实现也相对简单,ADS1256的CS线仅仅只是做片选使用(上图所示)在数据输出结束的T10阶段需要,需要发送一次脉冲。在SCLK第一脉冲DIN开始接受数据输入,数据输入完毕的T6内SCLK需要保持低电平,然后调制一个周期的脉冲信号,数据即可全部到达DOUT总线,一次读写完毕。

4.  核心源码

  1. //写一个字节

  2. void ADS1256_write_bit(u8 temp)

  3. {

  4. u8 i;

  5. for(i=0;i<8;i++)

  6. {

  7. ADS1256_Write_SCLK_H;

  8. if(temp&0x80)

  9. ADS1256_Write_DIN_H;

  10. else

  11. ADS1256_Write_DIN_L;

  12. temp=temp<<1;

  13. ADS1256_delayus(1);

  14. ADS1256_Write_SCLK_L;

  15. ADS1256_delayus(1);

  16. }

  17. }

  1. //读一个字节

  2. u8 ADS1256_read_bit(void)

  3. {

  4. u8 i;

  5. u8 date;

  6. for(i=0;i<8;i++)

  7. {

  8. ADS1256_Write_SCLK_H;

  9. date=date<<1;

  10. ADS1256_delayus(1);

  11. ADS1256_Write_SCLK_L;

  12. date= date | ADS1256_Read_DOUT;

  13. ADS1256_delayus(1);

  14. }

  15. return date;

  16. }

  1. //初始化:

  2. u8 ADS1256_Init(void)

  3. {

  4. u8 ReturnData = 0;

  5. u8 ADS1256_reg_Init[5]={

  6. 0x02, //状态寄存器初始化值

  7. 0x01, //模拟多路选择器初始化值

  8. 0x00, //AD控制寄存器初始化值

  9. 0x03, //数据速度寄存器初始化值

  10. 0x00, //I/O控制寄存器初始化值

  11. };

  12. ADS1256_Write_CS_H;

  13. ADS1256_Write_SYNC_H;

  14. ADS1256_Write_SCLK_L;

  15. ADS1256_Write_RST_L;

  16. ADS1256_delayms(1);

  17. ADS1256_Write_RST_H;

  18. ADS1256_delayms(1);

  19. ADS1256_Write_CS_L;

  20. ADS1256_delayms(1);

  21. ADS1256_write_reg(0x00,ADS1256_reg_Init[0]);//状态寄存器初始化

  22. ADS1256_delayus(1);

  23. ADS1256_write_reg(0x01,ADS1256_reg_Init[1]);//模拟多路选择器初始化

  24. ADS1256_delayus(1);

  25. ADS1256_write_reg(0x02,ADS1256_reg_Init[2]);//AD控制寄存器初始化

  26. ADS1256_delayus(1);

  27. ADS1256_write_reg(0x03,ADS1256_reg_Init[3]);//数据速度寄存器初始化

  28. ADS1256_delayus(1);

  29. ADS1256_write_reg(0x04,ADS1256_reg_Init[4]);//I/O控制寄存器初始化

  30. ADS1256_delayus(1);

  31. if(ADS1256_reg_Init[1] != ADS1256_read_reg(0x01)) ReturnData = 1;

  32. if(ADS1256_reg_Init[2] != ADS1256_read_reg(0x02)) ReturnData = 1;

  33. ADS1256_delayus(1);

  34. if(ADS1256_reg_Init[3] != ADS1256_read_reg(0x03)) ReturnData = 1;

  35. ADS1256_delayus(1);

  36. if(ADS1256_reg_Init[4] != ADS1256_read_reg(0x04)) ReturnData = 1;

  37. ADS1256_delayus(1);

  38. while(ADS1256_Read_DRDY);

  39. return(ReturnData);

  40. }

  1. //读数程序:

  2. u32 ADS1256_Read_a_Data(void)

  3. {

  4. u32 Data,Data1,Data2,Data3;

  5. Data1 = ADS1256_read_bit();

  6. Data2 = ADS1256_read_bit();

  7. Data3 = ADS1256_read_bit();

  8. Data = (Data1<<16) | (Data2<<8) | Data3;

  9. return (Data);

  10. }

5.  测试结果

测试源是2.50v基准输出电压值,实际加入电压是:2.50000000v(8位半表实测),通过误差曲线的分析,摆幅稳定在-2- -8µV,效果还是很理想的。官方测试条件Gain=128,VREF=5V,下图是手册提供的有效位与测试电压关系图,在1ksps采样时候可以达到近22位的有效值,但是在全速30kHz采样时候只有20位的有效值,频率采集快了,会有一定失真,这是所有AD转换芯片的通病,当然阻抗匹配也有一定的原因。因此在使用前零度和满度校准是十分必要的。

6.  总结

作为一款中低速高精度的ADC,ADS1256有着30kHz的转换频率,4路差分输入或8路伪差分输入,相比AD7190虽然价格略高一些,但是性能相比ADI公司的AD7190的性能提高不少,有8路伪差分的输入通道,特别是采样速率,在本次测试看,拥有不错的性价比和出色的性能会让它在同级别的ADC中也有非常强的竞争能力。欢迎大家多交流技术,Q Q:1625874998,可提供部分资料,供大家设计参考。

AD1256之STM32程序——STM32测试高精度ADC篇(四)相关推荐

  1. A7799之STM32程序——STM32测试高精度ADC篇(二)

    1.  AD7799概述 AD7799是ADI公司早期推出一款高精度低速率的ADC,性能参数如下 •均方根(RMS)噪声:  27 nV(4.17 Hz.AD7799)  65 nV(16.7 Hz. ...

  2. AD7190之STM32程序——STM32测试高精度ADC篇(三)

    1.  AD7190概述 AD7190是一款适合高精密测量应用的低噪声完整模拟前端.它集成一个低噪声.24位Σ-Δ型模数转换(ADC).片内低噪声增益级意味着可直接输入小信号. 这款器件可配置为两路差 ...

  3. 【嵌入式】简单stm32程序的运行与Proteus的仿真测试

    简单stm32程序的运行与Proteus的仿真测试 由于第一次使用keil5,多次尝试未能成功一次,故使用[学者-老栋]的固件包进行实验与测试来熟悉mdk开发环境和Proteus电路仿真软件. 参考: ...

  4. STM32 ADS8365 高精度 ADC 采集方案

    开源一个 ADS8365 高精度 ADC 检测方案,转载请联系博主,翻版必究. 1.硬件原理图(最多 6 路输入) 2.数据手册 数据手册在这里下载 https://www.alldatasheetc ...

  5. AD7190之STM32程序

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.AD7190概述 2.硬件设计分析 3.时序图解说 4.核心源码 5.测试结果 6.总结 STM32驱动AD7190 a ...

  6. 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级STM32程序,基于Wi-Fi,同时支持升级Wi-Fi,APP控制版)...

    https://www.cnblogs.com/yangfengwu/p/10456306.html 视频教程 https://www.bilibili.com/video/av54942955/ 请 ...

  7. STM32程序烧录方式总结

    STM32启动模式 在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯 ...

  8. ARM汇编语言编程-Keil环境搭建及STM32程序的编写

    目录 一.keil环境搭建 1.keil安装 2.注册LIC 3.支持包安装 二.STM32程序 1.新建工程 2.配置环境 三.总结 一.keil环境搭建 推荐百度网盘下载mdk531 mdk31安 ...

  9. STM32 CubeMX学习:7. ADC模数转化

    STM32 CubeMX学习:7. ADC模数转化 系列文章目录 前期的准备 点亮 LED 闪烁 LED 定时器闪烁LED PWM控制LED亮度 常见的PWM设备 按键的外部中断 ADC模数转换 串口 ...

  10. 03-STM32+Air724UG远程升级篇OTA(自建物联网平台)-STM32+Air724UG实现利用http/https远程更新STM32程序(TCP指令,单片机程序检查更新)

    说明 这节测试一下STM32+Air724UG实现利用http远程更新STM32程序 我已经把固件文件放在了自己的服务器上 默认使用本人提供的下载路径测试 文件路径:  网站根目录->ota-& ...

最新文章

  1. python数字图像的行 宽的不同处 cv2.resize(1389,1500) p1列宽 p2 行高 stop2.shape 得(640,960,3) v1列宽 v2 行高 v3 通道数
  2. 限时抢订!价值4800元TechNet Plus赠阅一年!今天己到哈~~~
  3. DeepLearning.AI笔记:二、神经网络编程基础
  4. python定义构造函数、包括颜色价格品牌_《Python编程与算法基础教程》(第二版),蒋洪宇,青松,第9章:课后练习,程序设计,版江红余,第九章,习题,答案...
  5. python指定变量类型_Python#160;变量类型_python教程
  6. arcgis几何修复有作用吗_ArcGis拓扑的那些事儿(拓扑应用过程二)
  7. 【BZOJ3451】Normal【期望线性性】【点分治】【NTT卷积】
  8. boid模型的Matlab程序,动物集群运动行为模型系列之五-—本科毕业设计.doc
  9. Qt工作笔记-QMainWindow自定义窗体中利用状态栏进行窗体放缩
  10. python整数格式化表达式_Python字符串格式化表达式和格式化方法
  11. 力扣-设计一个循环队列
  12. CVPR 2021 | 姿态可控的语音驱动
  13. 此计算机上的操作系统不符合 sql,windows7系统安装SQL server2012提示操作系统不符合最低要求怎么办...
  14. NASA: Seeing Jupiter(注视木星)
  15. 【ihaonet微测试】你出题,我开发
  16. BLE DTM by HCI
  17. 文献下载神器 Sci-Hub 的最新地址
  18. C++ 探索之旅 | 第一部分第二课:C++ 编程的必要软件
  19. linux中lvm卷管理
  20. 企业员工培训管理系统(JAVA,JSP,SQLSERVER,SSH)

热门文章

  1. 计算机的人文素养知识,勤阅读,拓视野——记计算机科学学院人文素养提升计划阅读能力提升专题讲座...
  2. 华为程序员频交 Linux 内核补丁遭质疑,管理员后续回应:承认贡献,但请不要琐碎提交
  3. 【自研IM系统Talk00】 --- 接口说明
  4. 自下而上合并排序算法
  5. Ubuntu下装codeblocks
  6. Exception in thread main java.util.UnknownFormatConversionException: Conversion = ';'
  7. 编程十年 (14):毁人不倦2
  8. angular 访问图片路径错误
  9. Ubuntu 解压 zip、z01、z02等文件方法
  10. 美团买菜助手来了,自动点击,助你买菜