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.

[参考译文] ADS8548:如何将数据写入配置寄存器并进行验证。

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/670953/ads8548-how-to-write-data-to-configuration-register-and-verify-it

器件型号:ADS8548
主题中讨论的其他器件:TMS570LC4357

您好!

我将 ADS8548 ADC 与 TMS570LC4357控制器搭配使用。 CCS v 6.1.3.00034。 我使用 MIBSPIP5与 ADS8548通信。  

我从 ADS8548数据表中了解到、写入配置寄存器的唯一条件是:

i) ADS8548应为软件模式

II)第一位 SDI 引脚应为1。

问题1:我的上述理解是否正确? 或者是否有任何其他条件来启用对配置寄存器的写入?

如果这些是唯一的条件、我尝试使用数据0xD000_0400写入配置寄存器。 我想读回发送的数据、以验证数据是否正确写入。 因此、我发送了四个16位数据(我已使用范围在线路上验证了该数据):

第1个数据:0xD000 (CR 数据)

第2个数据:0x0400 (CR 数据)

第三个数据:0x0FFF (用于读回 CR 的虚拟数据)

第4个数据:0x0FFF (用于读回 CR 的虚拟数据)

但我未正确读取数据。 然后、我在引脚32范围/XCLK 引脚上检查了是否有任何时钟输出、但没有时钟。

问题2:您能否帮助识别出问题所在?

提前感谢。

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

    Gobind、您好!

    感谢您选择 TI 精密 ADC。

    正确、要写入 ADS85x8的配置寄存器、必须设置位31 (Write_en)、后跟所需的配置内容、还需要 SW 模式(//HW/SW pin=high)、 但是、您必须确保串行接口的所有引脚连接正确、还必须确保串行接口的相位和极性配置正确、 SDI 上的串行数据将由 ADC 在 SCLK 的下降沿锁存、输出数据也在 SCLK 的下降沿更改。

    要验证您的串行接口和时序是否正确、请在 ADC 的模拟输入端施加直流信号、 然后检查 SDO 上的转换代码是否正确而不对配置寄存器进行任何更改、 该寄存器中的默认值为0x000003FF、这意味着内部2.5V 基准电压、4V 基准电压范围、忙信号等

    为 ADC 加电后、只需写入0xC00003FF、然后读回-您应该会得到0x3FF。

    您在写入和读取 Config Register 时获得了什么数据? 如果您得到的是0x10000400、这将是正确的。 实际上、您写入配置寄存 器的0x0400没有意义、因为您使用的是内部电压基准、方法是将位15设置为0、但也通过将位14设置为1来禁用内部基准缓冲器、我不确定是否要禁用内部基准而不是基准缓冲器。

    顺便说一下、Range/XCLK 引脚是引脚34而不是引脚32、希望您可以检查引脚34。

    请告诉我您的测试结果、谢谢。

    此致

    戴尔

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

    感谢 Dale 的答复。

     

    我已检查:

    1.它处于软件模式。

    2.第31位被置位。

    3.引脚连接正确

    极性= 0、相位= 1。

     

    我在其中一个引脚上施加了2.5V 的直流信号、但没有向配置寄存器写入任何内容、结果如下:

    在 HW 模式中:0x1FFF

    在 SW 模式下:0x06AC

    这些值对我来说不正确。 请确认。

     

    然后我尝试将0xC000_03FF 写入配置寄存器并读回它、但结果看起来不是配置寄存器的值、而是通道数据的值。 下面是我用于发送数据的代码:

    EXT_ADC_ControlWord[0]=(UINT16) 0xC000;

    EXT_ADC_ControlWord[1]=(UINT16) 0x03FF;

    EXT_ADC_ControlWord[2]=(UINT16) 0x0FFF;

    EXT_ADC_ControlWord[3]=(UINT16) 0x0FFF;

    SS_SPI_WriteDataTo_TG (SPI_5、1U、&Ext_ADC_ControlWord[0]、&SS_SPI_Config_const);

    SS_SPI_Trigger_TG (SPI_5、1U);

     

    我得到的值是:

    0x1FFF、0xE000、0xE000、0xE000
    (下面的屏幕截图)

     

    这些值并不总是相同的。 有时、我得到的所有四个值都是0xE000。 有时、值如0xF847、0xF829等 我在尝试读取通道时获得的类似值。 因此、在我看来、如果第一位(31)为高电平或低电平、我会得到相同的数据、这一点无关紧要。

     

     

     

    我的另一个问题是:

    如果配置寄存器的 READ_EN 位被置位、同时我们有 CONV_A 信号。 SDO_A 上的输出是什么? 配置寄存器还是通道数据? 考虑到 SEL_CD 和 SEL_B 被清零、这意味着所有数据在串行模式下进入 SDO_A。 PAR/SER 引脚设置为高电平。 (我正在使用此配置)

     

    是的、我在引脚34上探测时钟、而不是在引脚32上探测。 很抱歉出错了。

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

    Gobind、您好!

    我很快会回来的、谢谢。

    此致

    戴尔

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

    您好 Dale、

    为了更新您的信息、我们能够在硬件和软件模式下正确读取通道数据、而无需向配置寄存器写入任何内容。 这意味着、如果我为通道提供2V 的输入电压、那么我的读取电压为2V。 这就证实了通信连接、极性、相位等良好。

    问题在于写入配置寄存器。 我们无法写入/读取配置寄存器。 请告诉我们、如果有任何特殊情况、我们应该注意写入配置寄存器。

    谢谢你。

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

    Gobind、您好!

     您能告诉我您更改了哪些内容以获得正确的数据吗?  D31和 D30同时设置后、您应该能够读取寄存器内容。  在没有设置 WRITE_EN 的情况下,不能简单地设置 READ_EN。  CONVST 仍将执行转换、但在设置 READ_EN 后、下一帧中的输出将是寄存器内容与转换结果。 您能不能显示一个包含/fs、SCLK、SDI/SDO 范围的屏幕截图? 您能告诉我您的 SCLK 的频率是多少?

    此致

    戴尔

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

    您好 Dale、

    实际上、我以前没有收到错误的数据。 我的计算错误。 我必须忽略 MSB 侧的两个位、但我已忽略了 LSB 侧的两个位。 因此、在更正计算后、数据是正常的。

    下面是屏幕截图(第二个屏幕截图是第一个屏幕的缩放版本)。 DOUT 是从控制器到 ADC 的信号。 我无法获得额外的示波器探头来捕获 DIN、但该信号始终为零。 DOUT 线路上的数据为:0xD000_83FF (CR 数据)、0x0FFF_0FFF (用于读回 CR 的虚拟数据)


     


     

    谢谢你。

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

    您好、Gobind、

    我对延迟回复表示歉意、我在度假时发布了更新。

    为清楚说明 、您提到的"DOUT"是控制器的 DOUT、它已连接到 ADS85SDI 引脚22、您还 在检查/读取 SDO_A 引脚19 以了解配置寄存器的内容。 如果我的理解不正确、请更正。

    写入和读取配置寄存器没有什么特别的。 当写入0xC00003FF 然后回读时-您应该会得到0x3FF。 请参阅 E2E 上的其他查询、如下所示:

    e2e.ti.com/.../1265127

    在您将0xD000_83FF 写入 ADC 后、

    1.  您是否能够在引脚34 (XCLK)上找到时钟信号? 您将配置寄存器的位28设置为1、如果您可以在该引脚34处获得转换时钟、那么您的写入应该有效。

    2. 您是否使用内部基准在没有任何外部电压基准的情况下获得正确的数据? 您将配置寄存 器的位15设置为1、这将启用内部电压源、这是检查寄存器写入是否成功的另一种方法。

    谢谢。

    此致

    戴尔