您好,
我尝试从IC读取数据,但从未获得预期值。
我为设备提供3,1V电压,两个输入的电压均相同,为1,5V。
时钟大约为1,1MHz,我认为我会得到一个大约为"0"的值,每次测量后都会进行校准。
主中继器发送16个时钟周期,如果我得到 结果0x7EBC -> 0111 1110 1011 1100。
我的错误是什么?
此致
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,Christoph:
感谢您发送示波器捕获。 从我看到的内容中,您将根据输入和SPI配置获得正确的输出。 以下是我得出结论时所使用的流程:
1)电压输入:
AINP = 1.5V
AINM = 1.56
输入= AINP - AINM = 1.5 - 1.56 =-60mV
2) LSB至电压转换:
ADS7044 LSB = FSR/(2^N)=(3.1 * 2)/(2^12)= ADS7044 LSB 6.2 / 4096 = 1.51 mV/LSB
3)预期的十进制/二进制输出:
Input/LSB =-60/LSB =-40 1.51
二进制(2的补码)= 1111 1101 1000
数据表指定前两位为零,应忽略,但这取决于SPI配置。 在您的情况下,您使用的是CPOL=1 (SCLK处于高空闲状态)。 使用此配置时钟的第一个下降边缘实际上是第二个0中的时钟。 因此,您收到的第一位是数据的第一位,最后三位都可以忽略(它们不是数据)。
对于您发送的第一张数据捕获图像,您的计时数据为:
0111 1110 1100 0000
应用前面所述的内容,实际数据位是:
X11.1111万0 1100 0xxx = 1111 1101 1000
将其与上面计算的预期输出进行比较,您可以看到您收到了预期输出。 如果您计算图像的输出,则会得出-41 LSB,考虑到您的示波器测量值1.5V和1.56V的分辨率,这是合理的。
要确认所有这些,我建议进行两项测试:
1)将两个输入短接至相同电压(可以是接地或单个1.5V输入信号)。 您的输出现在应该是MID代码或全部为0。
2)使用SPI极性0配置MCU。 现在,输出应如数据表中所述,前两位为零,第一个数据位出现在SCLK的第三个上升沿。