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.

[参考译文] ADS7253:SPI 接口问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/743403/ads7253-spi-interface-question

器件型号:ADS7253

您好 TI 团队

我使用  ADS7253IRTER 芯片来测量模拟电压。 我想为 ADC 使用内部基准电压。 请告诉我配置 CFR、 REFDAC_A 和 REFDAC_B 寄存器以及读回这些寄存器的步骤。 请告诉我读取 转换数据的步骤。  

我使用的是 Microsemi SmartFusion2 FPGA (M2S005-VF400I)、该 ADC 连接到 FPGA 结构。 我想在 VHDL/Verilog 中开发用于配置和读取转换数据的定制 SPI 接口代码。

我对数据表中提供的时序图感到困惑。 您能否建议配置 ADC 和读取转换数据的过程?

配置:

-->接口模式: 32位时钟双 SDO 模式

-->输出数据格式:直接二进制格式

--> ADC 基准电压源: 使用内部基准

 

下面是我要写入 寄存器的值。

CFR 写入值= 0x8040

REFDAC_A 写入值= 0x9FF8 (Vref = 2.5V)

REFDAC_A 写入值= 0xAFF8 (Vref = 2.5V)

CFR 读取控制字= 0x3000

REFDAC_A 读取控制字= 0x1000

REFDAC_A 读取控制字= 0x2000

转换数据读取控制字= 0x8040

如果我的控制字根据上述配置要求有误、请更正我的错误

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

    您描述的 ADS7523寄存器详细信息对我来说很好。 需要记住的一点是、您需要48个 SCLK 周期来写入或读取各种寄存器。 当您只是运行转换时、您只需要32个 SCLK 周期(请参阅图90)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,先生

    请向我提供配置 ADC 的步骤。

    请为该器件提供 SPI 接口实现的任何参考代码、这将对我在 VHDL 中实现非常有帮助。

    如果您提供时序 dimarsm、这也是可以的。

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

    您好、Chandan、

    我目前没有向您发送代码示例、但这可能会帮助您更好地了解界面。 参考图1、表4和图90、要写入 CFR、您应先将/CS 设置为低电平、然后在0x8040命令中开始转换。 为了读取和写入寄存器、命令发送长度必须为48个时钟、配置命令/数据被加载到16个 MSB 中。
    因此、要使用所需的配置写入 CFR、您需要发送0x804000000000、数据在 SCLK 下降沿有效、然后将/CS 恢复为高电平。 您将对写入 DAC 寄存器(0x9FF8000000和0xAFF800000000)执行相同的操作。 要从 CFG 寄存器中读取数据、只需将命令修改为0x3000000000即可。 所需的寄存器内容将在下一帧的16个 MSB 上输出。

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

    你(们)好,先生

    根据您的建议、我已按以下顺序写入数据:

    写入 CFR 寄存器= 0x804000000000、然后生成48个 CLK 脉冲

    写入0x00000000 、然后生成48个 CLK 脉冲

    读回 CFR 寄存器= 0x300000000000、  生成48个 CLK 脉冲、然后我生成48个时钟脉冲、我可以读取 0x004000000000。 读数是否正确? 。 根据数据表、我应该读取 0x304000000000。 如果我错了、请纠正我的问题。  但是、当我检查示波器时、我缺少 MSB 位。

    同样、我也用  0x9FF800000000和 0xAFF800000000分别写入了 REFDAC_A 和 REFDAC_B 寄存器。 当我读取这些寄存器时、  分别得到0x9FF8和0xAFF8。

    但是、当我检查示波器时、我缺少 MSB 位。 REFDAC_A 和 REFDAC_B 的读取数据是否正确?

    请建议如何读取转换数据以及应写入什么控制字来读取数字数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否可以发送示波器捕获以显示详细信息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,先生

    请查找以下写入/读取 CFR、REFDAC_A 和 REFDAC_B 寄存器的数据范围。

    1) 1) CFR 写入/读取。 在示波器中、蓝色表示 SPI_CLK、粉色表示 DIN 到 ADC、黄色表示 SDO_DOUTA。 CFR 写入值= 0x8040、CFR 读取值= 0x3000

         

    2) 2) REFDAC_A 写入/读取。 在示波器中、蓝色表示 SPI_CLK、粉色表示 DIN 到 ADC、黄色表示 SDO_DOUTA。 REFDAC_A 写入值= 0x9FF8且 REFDAC_A 读取值= 0x1000

    3) 3) REFDAC_B 写入/读取。 在示波器中、蓝色表示 SPI_CLK、粉色表示 DIN 到 ADC、黄色表示 SDO_DOUTA。 REFDAC_A 写入值= 0xAFF8且 REFDAC_A 读取值= 0x2000

    请建议如何读取 ADC 转换数据。 如果我在32 clk 双 SDO 模式下运行、我们需要发送什么控制字以及需要多少个时钟脉冲。

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

    感谢您的屏幕截图! 显然、SDO 在 SCLK 上升沿有效、因此我可能需要修改图纸。 您能否修改 SDI、使其在 SCLK 上升沿也有效(将 DIN 左移1/2时钟)并重新运行测试?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chandan、

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

    尊敬的先生

    感谢您的支持。 现在、我能够读取 ADC 转换数据。