ADS1256 24位ADC模块

ADS1256 24位ADC模块简介 ADS1256 是一款 24bit ADC 转换模块 ADS1256 可以通过 SPI 进行访问 的高精度的转换器 它的 ADS1256 数据手册 可以从 TI 网站 查询到 ADS1256 24bitADC 模块 下面给出了 ADS1256 的接口 根据 ADS1256 的数据手册介绍 其中

大家好,我是讯享网,很高兴认识大家。


讯享网

 

■ 简介


ADS1256是一款 24bit ADC转换模块。 ADS1256可以通过SPI进行访问 的高精度的转换器。它的 ADS1256 数据手册 可以从 TI网站 查询到。

▲ ADS1256 24bitADC模块

▲ ADS1256 24bitADC模块

下面给出了ADS1256的接口。根据ADS1256的数据手册介绍,其中:

  • 用于MCU接口的SPI接口可以包含有/CS, SCLK, DIN, DOUT
  • D0 ~ D3 可以用于对外控制的数据接口。
  • SYNC可以用于数据同步作用。

▲ ADS1256 的接口定义

▲ ADS1256 的接口定义

为了便于后期的MCU制作,制作一个6PIN的外部接口,包括有:

序号 符号 功能描述
1 +5V 工作电源
2 GND 电源地
3 CS ADS1256片选端
4 SCK ADS1256时钟
5 DIN ADS1256SPI数据入
6 DOUT ADS1256SPI数据出

 

01接口电路板1


1. 设计接口电路

使用基于STC8G1K08(SOP8)作为控制ADS1256的与PC之间的SPI-UART的接口芯片。

▲ 实验电路的原理图

▲ 实验电路的原理图

▲ 实验接口电路的PCB

▲ 实验接口电路的PCB

2.单片机软件2

将AD1256连接到单片机STC8G1k。

▲ 将AD1256连接到单片机

▲ 将AD1256连接到单片机

  • 缺省情况下D0输出AD1256的时钟信号
    时钟的频率为: 7.68MHz。

▲ AD1256输出CLK波形

▲ AD1256输出CLK波形

 

02软件命令


UART串口命令可以参见SerialTXT的解释子程序:

if(strcmp("hello", (char *)STD_ARG[0]) == 0) printf("%s is ready !\r\n", VERSION_STRING); else IFARG0("rra") { 
    AD1256ReadReg(0x0, 11, ucDim); for(i = 0; i < 11; i ++) { 
    printf("%02bx ", ucDim[i]); } printf("\r\n"); } else IFARG0("setc") { 
    sscanf(SDA(1), "%d", &nNumber); AD1256SetChannel((unsigned char)nNumber); } else IFARG0("sets") { 
    sscanf(SDA(1), "%x", &nNumber); AD1256SetSPS((unsigned char)nNumber); } else IFARG0("writer") { 
    sscanf(SDA(1), "%x", &nNumber); i = (unsigned char)nNumber; sscanf(SDA(2), "%x", &nNumber); ucByte = (unsigned char)nNumber; AD1256WriteRegByte(i, ucByte); } else IFARG0("rdata") { 
    SendChar(0); nWaitTime = 100; if(STD_NUM == 1) { 
    printf("%ld\r\n", AD1256ReadData()); } else { 
    sscanf(SDA(1), "%d", &nNumber); if(STD_NUM > 2) { 
    sscanf(SDA(2), "%d", &nWaitTime); } for(j = 0; j < nNumber; j ++) { 
    printf("%ld ", AD1256ReadData()); if(nNumber > 1) WaitTime(nWaitTime); } printf("\r\n"); } } else IFARG0("setb") { 
    sscanf(SDA(1), "%x", &nNumber); AD1256SetDIO((unsigned char)nNumber); } else IFARG0("reset") { 
    AD1256Reset(); } else IFARG0("init") { 
    AD1256Init(); } else IFARG0("scrd") { 
    sscanf(SDA(1), "%x", &nNumber); AD1256SetChannel(nNumber); AD1256ReadData(); for(nNumber = 0; nNumber < 1000; nNumber ++) { 
    WaitTime(2); if((AD1256ReadRegByte(0) & 0x1) == 0) break; } SendChar(0); printf("%ld\r\n", AD1256ReadData()); } 

讯享网

scrd : Change Channel and read new data
rdata: Read the current channel data

 

03测试结果


▲ 设置电压与AD1256输出结果

▲ 设置电压与AD1256输出结果

▲ 设置电压与AD1256输出结果

▲ 设置电压与AD1256输出结果

讯享网#!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # TEST1.PY -- by Dr. ZhuoQing 2020-06-30 # # Note: #============================================================ from headm import * from tsmodule.tsvisa import * from tsmodule.tsstm32 import * dp1308open() #------------------------------------------------------------ dp1308p25v(0) dp1308n25v(0) stm32cmd('reset') time.sleep(.1) stm32cmd('init') setv = linspace(-5, 0, 5) setdim = [] outdim = [] for v in setv: if v >= 0: dp1308p25v(v) dp1308n25v(0) else: dp1308p25v(0) dp1308n25v(-v) time.sleep(1) meter = meterval() stm32cmd('rdata') time.sleep(.05) data = stm32memo(1) val = data[0] printf(val, meter) outdim.append(val) setdim.append(meter[0]) plt.plot(setdim, outdim) plt.xlabel("Set(V)") plt.ylabel("Data") plt.grid(True) plt.show() #------------------------------------------------------------ # END OF FILE : TEST1.PY #============================================================ 

 

※ 结论


AD1256模块现在配置下,只能测量0~5V的电压。其内部有2.5V参考电压。

输出的电压计算公式如下:
假设读出的数值为: N N N,那么实际的电压值为:

V = 5.0 × N 0 x 7 F F F F F V = { {5.0 \times N} \over {0x7FFFFF}} V=0x7FFFFF5.0×N

▲ 设置电压与测量电压之间的关系

▲ 设置电压与测量电压之间的关系

▲ 设置电压与测量电压之间的差别

▲ 设置电压与测量电压之间的差别


  1. AD工程文件:AD\Test\2020\AD1256\TestAS1256STC8G.SchDoc * ↩︎
  2. C51工程文件:C51\STC\Test\2020\AD1256\TestAD1259\TestAD1256STC8G.uvproj ↩︎
小讯
上一篇 2025-01-14 08:03
下一篇 2025-03-25 10:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46315.html