您好!
我使用 STM32微控制器。 我不明白 ADS124S08中的 ADC 读数。 我可以与 SPI 通信并发送寄存器映射命令、然后可以接收寄存器映射所含的全部数据。
我使用 AIN0和 AIN1、如何读取此数据?
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.
您好、Bryan:
是的、您是对的。 我读取了默认增益0x00并再次写入增益16、即0x0C、然后我读取了该值。
以下是图;
写入-读取过程;(所有通信)
写入增益;
第1个字节:0x43 (由于写入寄存器= 010r rrrr 增益为03h、因此0100 0011)
第2个字节:0x00 (寄存器数- 1 = 0)
第3个字节:0x0C (由于000= tmod 默认值01:PGA 启用100:增益16等于00001100 = 0x0C)
使用0x23命令读取增益;(查询)
读取增益(响应);
注意:当我尝试读取1字节的读取增益时、得到的值为0x00。 那么我读取的2字节响应是正确的0xC。
您好、Bryan:
你是对的。 我写错了。
我已将热电堆连接到 AIN0、问题是当我尝试使用 RDATA 命令读取数据时、所有字节的值均为零。
读取 ADC 值的实际步长是多少?
如果我错了、请纠正我;
我使用连续转换模式、这是我的阶跃;
-重置设备
-将偏移量写入0x00
-腕增益为16
- 我读取增益和偏移值以进行验证。 (我得到了正确的值)
-发送启动命令。
-发送 RDATA 命令并接收6个字节。
我想我错过了一个步骤,但我找不到。
您好、Bryan:
这里是示波器捕获;
RDATA 命令和接收部分
发送 RDATA 命令
接收数据部分
接收第1个字节
第2字节
第3字节
第4个字节
第5个字节
第6个字节
让我解释一下我做了什么、得到了什么。
我将1V 连接到 AIN0、并设置增益1、偏移0以捕获某个值。
将 CS 引脚连接至低电平并发送 RDATA 命令(0x12)、然后等待 DRDY 引脚为低电平。 当 DRDY 为低电平时、接收6字节数据、我得到127- 255--127-255 -255。
我重复上面提到的过程。 在 while 块中、我发送 RDATA 命令、然后再次等待 DRDY 变为低电平并获取接收数据。
请说明如何使用 RDATA 命令?
如果数据正确、如何转换数据、或者如何分析数据?
感谢您的答复。
-埃姆雷
尊敬的 Emre ARSANACI:
您的 SCLK 速度是多少? 在示波器图中、它看起来像是~10MHz -您能确认吗? 如果是、您可以尝试将速度减慢到8 MHz 之类的速度、看看情况是否有所改善。 在10 MHz 进行通信恰好在最大 SCLK 频率、因此该频率的任何变化都可能导致时序问题
您所遵循的一般过程看起来是正确的、命令也是如此。 我看不到 DRDY 何时转换为低电平、但它开始为低电平、然后在您发出第一个 SCLK 后立即转换为高电平、这是预期行为。 很好
如果连续转换、您是否看到 DRDY 脉冲处于近似数据速率的状态?
您要使用哪些寄存器设置? 由于 RREG 命令可以正常使用、您是否可以读回 ADC 寄存器映射、以便我们确保您正确设置了器件?
-Bryan
您好、Bryan:
是的、您是正确的 SCLK 是10MHz。 我已随5MHz 更改、结果相同。
我向 RDATA 命令添加了状态字节、然后使用 RREG 读取状态字节、其中两个是相同的。
如果连续转换、您是否看到 DRDY 脉冲处于近似数据速率的状态?
-我不能明白你是什么意思,但这是 DRDY 引脚行为。
您要使用哪些寄存器设置?
输入多路复用器寄存器:默认值
增益设置寄存器:(000 01 000)默认转换延迟、PGA 启用、增益 = 1
数据速率寄存器:默认值
基准控制寄存器:默认
激励电流寄存器1:默认值
激励电流寄存器2:默认值
传感器偏置寄存器:默认
系统控制寄存器:默认
偏移校准寄存器1:00
其他寄存器设为默认值。
ADC 寄存器映射
-我不知道什么是 ADC 寄存器映射? 哪个命令或寄存器地址与 RREG 一起使用?
尊敬的 Emre ARSANACI:
您使用的基准电压是多少? 如何将基准电压应用到 ADC? 您能否提供您的系统原理图
"偏移校准寄存器1:00"是什么意思? 我不会期望您更改该寄存器中的值。 您能告诉我您要写入 OFCALx 寄存器的值(十六进制)是多少?
ADC 寄存器映射
-我不知道什么是 ADC 寄存器映射? 哪个命令或寄存器地址与 RREG 一起使用?
[/报价]我只是要求您从 ADC 读回所有寄存器、这样我们就可以看到您编程的值。 您可以通过发送 RREG 命令来执行此操作、然后对于寄存器数量、选择18。 因此、即 RREG = 20 12 (RREG 命令、从寄存器0开始、读取18个寄存器)
-Bryan
尊敬的 Emre ARSANACI:
感谢您提供此信息。 我可以看到、您将 REF 寄存器(0x05)设置为默认值、这意味着基准电压源为 REFP0/REFN0、内部 VREF 关闭。 但是、原理图显示没有任何元件连接到 REFP0/REFN0、这就是数据全为1的原因。 您将得到一个正的满量程电压、因为 VREF = 0、所以即使 ADC 的偏移电压也会显示为满量程。
您需要向 REFP0/REFN0添加电压、或打开 ADC 内部 VREF
...
-Bryan
尊敬的 Emre ARSANACI:
感谢您提供此信息。 我可以看到、您将 REF 寄存器(0x05)设置为默认值、这意味着基准电压源为 REFP0/REFN0、内部 VREF 关闭。 但是、原理图显示没有任何元件连接到 REFP0/REFN0、这就是数据全为1的原因。 您将得到一个正的满量程电压、因为 VREF = 0、所以即使 ADC 的偏移电压也会显示为满量程。
您需要向 REFP0/REFN0添加电压、或打开 ADC 内部 VREF
-Bryan
尊敬的 Emre ARSANACI:
由于您同时禁用了 CRC 和状态字节、您将只能从 ADC 中获得24位数据。 有关数据如何映射到输入电压的信息、请参阅数据表中的第9.5.2节
基本上、您将获得24位数据、控制器将以十进制或十六进制形式显示(在您的屏幕截图中类似于十进制)。 如果您将其分成3个字节、则需要将它们作为一个24位值重新组合在一起。 然后、您可以使用第9.5.2节中的映射来确定您在测量
-Bryan
尊敬的 Emre ARSANACI:
如果我将增益设置为2,我的 FS 值是1.25V 还是什么
如果 FS = 2.5且增益= 2、则正满量程(+VREF)= 1.25V。 该 ADC 的满量程范围(FSR)扩展+/-VREF/gain。 因此、代码范围的正半部分(000000h 至7FFFFFh)从0扩展到+1.25V、而代码范围的负半部分(000000h 至800000h)从0扩展到-1.25V (在本示例中)
如果我将1.3V 连接到 AIN0和 AIN1,我会得到7FFFFF 吗?
您是否会问、如果您将 AIN0和 AIN1连接到1.3V、您会得到什么? 请记住、代码范围是基于您的差分信号 VIN、其中 VIN =(AINP - AINN)。 因此、如果您施加 AIN0 = AIN1 = 1.3V、那么您的差分电压= 0V。 因此、您应该预期代码约为000000h、但它可能会因 ADC 偏移而略高或更低
仅供参考、我们将在下周休息、因此请耐心回答其他问题、直至1月的第一周
-Bryan
您好、Bryan:
您是否要问您将 AIN0和 AIN1绑定到1.3V,您会得到什么? 请记住、代码范围是基于您的差分信号 VIN、其中 VIN =(AINP - AINN)。 因此、如果您施加 AIN0 = AIN1 = 1.3V、那么您的差分电压= 0V。 因此、您应该期望代码约为000000h、但它可能会因 ADC 偏移而略高或更低
是的、我知道。 AIN0和 AIN1的差值为1.3V、而 AIN0 = AIN1 = 1.3V。 但是、当我将 Vin= 1.9V (Vin = AINP-AINN)连接起来后、我得到的是7FFFFF。 当差异值小于1、9V 时、我无法获得7FFFFF。
由于+FFFFF 是+1.25、所以当我连接1.3V 时、FS 不应该得到7FFFFF 呢?
尊敬的 Emre ARSANACI:
由于您的原始问题已得到解决、因此我将您的新问题移至新帖子: https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1308441/ads124s08-issues-with-reading-data-from-ads124s08
请使用该链接获取支持
-Bryan