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.

[参考译文] ADS124S08:从 ADS124S08读取 ADC

Guru**** 1810440 points
Other Parts Discussed in Thread: ADS124S08
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1303090/ads124s08-read-adc-from-ads124s08

器件型号:ADS124S08

您好!

我使用 STM32微控制器。  我不明白 ADS124S08中的 ADC 读数。 我可以与 SPI 通信并发送寄存器映射命令、然后可以接收寄存器映射所含的全部数据。

我使用 AIN0和 AIN1、如何读取此数据?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、TI!

    我还将增益设置为16、但无法设置 RDATA。 我该怎么办?

    以下是我的步骤;

    -读取默认增益。

    -请写入增益寄存器16。

    -读取我设置的增益。

    -通过 RDATA 命令读取数据。

    这些步骤是否有任何问题?

    编辑:

    DRDY 不会进入低电平状态。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Emre ARSANACI:

    在您描述的顺序(读取、写入、读取)中、您是否得到了正确的结果? 您是否能够成功写入 ADC、然后回读表明写入已正确发生的寄存器?

    您是否能够提供显示数字通信线路(CS、DRDY、DOUT、DIN、SCLK、 等)? 这将帮助我们了解您要发送到 ADC 以及从 ADC 接收到的信息。

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、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。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Emre ARSANACI:

    我对你向我展示的东西有点困惑。 我会将您的通信解读为下图所示:

    • 前3个字节是 WREG 命令
    • 后2个字节是 RREG 命令(请注意、RREG 的命令定义为2个字节)
    • 最后一个字节是 RREG 数据、该数据正确地显示了增益为16

    那么、您遇到了什么问题?

    您是否尝试过施加信号并查看输出是否增益为16?

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bryan:

    你是对的。 我写错了。  

    我已将热电堆连接到 AIN0、问题是当我尝试使用 RDATA 命令读取数据时、所有字节的值均为零。

    读取 ADC 值的实际步长是多少?  

    如果我错了、请纠正我;

    我使用连续转换模式、这是我的阶跃;

    -重置设备

    -将偏移量写入0x00

    -腕增益为16

    - 我读取增益和偏移值以进行验证。 (我得到了正确的值)

    -发送启动命令。

    -发送 RDATA 命令并接收6个字节。

    我想我错过了一个步骤,但我找不到。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Emre ARSANACI:

    您能否提供 类似于 WREG 和 RREG 操作的数据事务范围捕获? 这对我们的旅行很有帮助

    请显示整体交易以及每笔交易的特写

    此外、您如何确定何时读取数据? 您应该等待 DRDY 引脚从高电平转换为低电平、这表明已准备好从 ADC 读取数据。 这听起来您可能读的太早、这就是为什么您的读操作

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bryan:

    这是 RREG 命令的结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bryan:

    您是对的、我设置了内部基准。 获取数据、但我有一个问题、也是最后一个问题。

    这是我的寄存器和设置。

    我将100mV 从示波器连接到了 AIN0 (正极端子)和 AIN1 (示波器中的 negatif 端子)并获得这个值。

    我如何理解这些数据? 实际上、我不理解数据格式。

    感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Emre ARSANACI:

    由于您同时禁用了 CRC 和状态字节、您将只能从 ADC 中获得24位数据。  有关数据如何映射到输入电压的信息、请参阅数据表中的第9.5.2节

    基本上、您将获得24位数据、控制器将以十进制或十六进制形式显示(在您的屏幕截图中类似于十进制)。 如果您将其分成3个字节、则需要将它们作为一个24位值重新组合在一起。 然后、您可以使用第9.5.2节中的映射来确定您在测量

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bryan:

    是的、我已经分析了9.5.2节。  

    输入引脚;

    如果我将增益设置为2、我的 FS 值是1.25V 还是什么?

    那么 根据这个表格

    如果我将1.3V 连接到 AIN0、AIN1是否会获得7FFFFF?

    你能告诉我这件事吗?

    谢谢。

    -埃姆雷

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 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:

    鉴于美国的假日周、请预计1月2日这一周内会有回复。 感谢您的耐心等待

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 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