ADS1015 (使用ADS1015 EVM)
ATSAMG55处理器
在TI的帮助下,我成功解决了与此ADC通信的许多问题。 这项工作已使其达到预期目的,即定期读取集成商发出的不断增加的信号。
斜坡速率相当低,在大约15秒内从0V移动到250V。 斜面非常呈线性。 它在每个转换点增加。
我已经构建了一些测试代码,通过TWI发送以下内容:
0xCF00的配置寄存器写入:
1100 1111 0000 0000
1:开始单次转换
100:选择通道:100:AINP = AIN0,AINN = GND
111:FSR =±0.256 V
1: 单影像模式
000:128秒(不适用)
0:传统比较器(不适用)
0:比较器极性(不适用)
0:比较器闩锁(不适用)
00:比较器队列(不适用)
我假定,如果我将1写入位15,加上配置寄存器的所有其他设置位,设备将读取配置寄存器设置,应用它们,然后进行转换。 数据表并未明确说明这种情况,但这似乎是一种合理的假设。 即使情况并非如此,我的测试代码的每个周期都发送相同的配置寄存器字节,因此我不认为这是一个因素。
我已经过了强力的尝试,在转换命令和读取命令之间设置了500毫秒的延迟。
奇怪的是,我已经研究了几周的原始问题是,尽管输入引脚上应用了直流电压值,但一些转换寄存器读数实际上低于以前的寄存器读数。
我已确认这不是事实,将数据记录到Keithley 2000 DMM中。
我认为通过构建我的测试代码(它消除了大量的应用程序支持,只发送"基本" I2C命令),我将获得良好的数据。
这一个尤其令人沮丧!
下面是转换寄存器的转储和每个转换寄存器的浮点结果。箭头指向其值令人费解地下降的记录。
当然我的I2C命令有一些不好的地方...或计时...或两者都有。 但我似乎不知道是什么。
[06][c0] 0.1.35万
[05][b0] 0.1.1375万 <=
[0A][f0] 0.2.1875万
[10][d0] 0.3.3625万
[0E][f0] 0.2.9875万 <=
[1A][20] 0.5.225万
[16][90] 0.4.5125万 <=
[1F][90] 0.6.3125万
[20][d0] 0.6.5625万
[23][10] 0.7.0125万
[2B][b0] 0.8.7375万
[28][20] 0.8.025万 <=
[33][30] 0.10.2375万
[31][30] 0.9.8375万 <=
[37][90] 0.11.1125万
[3c][20] 0.12.025万
[3b][10] 0.11.8125万 <=
[45][e0] 0.13.975万
[42][30] 0.13.2375万
[4B][50] 0.15.0625万
[4C][a0] 0.15.325万
[4e][90] 0.15.7125万
[57][90] 0.17.5125万
[53][e0] 0.16.775万 <=
[5e][80] 0.18.9万
[5D][80] 0.18.7万 <=
[62][40] 0.19.65万
[68][f0] 0.20.9875万
[66][50] 0.20.4625万
[71][70] 0.22.6875万
[6e][f0] 0.22.1875万 <=
[75][f0] 0.23.5875万
[7A][30] 0.24.4375万
[79][60] 0.24.275万
