我是靠谱客的博主 健康月饼,这篇文章主要介绍ADS1256 24位ADC模块■ 简介01接口电路板102软件命令03测试结果※ 结论,现在分享给大家,希望可以做个参考。

 

■ 简介


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工作电源
2GND电源地
3CSADS1256片选端
4SCKADS1256时钟
5DINADS1256SPI数据入
6DOUTADS1256SPI数据出

 

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的解释子程序:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
if(strcmp("hello", (char *)STD_ARG[0]) == 0) printf("%s is ready !rn", VERSION_STRING); else IFARG0("rra") { AD1256ReadReg(0x0, 11, ucDim); for(i = 0; i < 11; i ++) { printf("%02bx ", ucDim[i]); } printf("rn"); } 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("%ldrn", 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("rn"); } } 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("%ldrn", AD1256ReadData()); }

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

 

03测试结果


▲ 设置电压与AD1256输出结果

▲ 设置电压与AD1256输出结果

▲ 设置电压与AD1256输出结果

▲ 设置电压与AD1256输出结果

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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工程文件:ADTest2020AD1256TestAS1256STC8G.SchDoc * ↩︎

  2. C51工程文件:C51STCTest2020AD1256TestAD1259TestAD1256STC8G.uvproj ↩︎

最后

以上就是健康月饼最近收集整理的关于ADS1256 24位ADC模块■ 简介01接口电路板102软件命令03测试结果※ 结论的全部内容,更多相关ADS1256内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部