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.

[参考译文] ADS8353:写入和读取 CFR 寄存器返回0x2ff8、而不是我发送的(PIC24)

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/979806/ads8353-writing-and-reading-the-cfr-register-returns-0x2ff8-instead-of-what-i-sent-pic24

器件型号:ADS8353

我开始使用 ADS8353、但在尝试设置 CFR 寄存器并读回它时、没有达到我的预期。  根据这里的几个论坛帖子、我认为我的做法是相同的、因此很明显、我缺少一些简单的东西。

我的理解是编写一个寄存器、您只需将其作为前16位、然后再编写32个时钟即可。  使用 CCS PIC24编译器、如下所示:

output_low (SlaveSelectPin);
DELAY_us (1);
SPI_xfer (SPI2_MODE0、ConfigRegister、16);
SPI_xfer (SPI2_MODE0、0、32);
output_high (SlaveSelectPin);

使用 Saleae 分析器、我可以看到在前两个8位字节中写入到线的值、接下来的4字节中、后跟0 (总共48位)。

当我尝试读取寄存器时、我会按照我在本论坛其他地方找到的相同示例操作:

1)帧(F)-至少48个 CLK 的一个空帧

2)帧(F+1)-为了回读用户可编程寄存器设置、应在帧(F+1)期间向器件发送适当的控制字

3)帧(F+2)-在帧(F+2)期间、SDO_A 在前16个 SCLK 下降沿输出所选用户可编程寄存器的内容。

在 CCS 编译器中、它如下所示:

//帧(F)-至少48个 CLK 的一个空帧
output_low (SlaveSelectPin);
DELAY_us (1);
SPI_xfer (SPI2_MODE0、0、16);
SPI_xfer (SPI2_MODE0、0、32);
output_high (SlaveSelectPin);
DELAY_us (1);

//帧(F+1)
//重新读回用户可编程的寄存器设置,适当的
//在帧期间(F+1)应将控制字发送到器件
output_low (SlaveSelectPin);
DELAY_us (1);
SPI_xfer (SPI2_MODE0、值、16);//写入16位。
SPI_xfer (SPI2_MODE0、0、32); //连接到48个 CLK。
output_high (SlaveSelectPin);
DELAY_us (1);

//帧(F+2)
//在帧(F+2)期间、SDO_A 输出所选内容
//用户可编程寄存器位于前16个 SCLK 下降沿
output_low (SlaveSelectPin);
DELAY_us (1);
值= SPI_xfer (SPI2_MODE0、0、16);//写入16位。
SPI_xfer (SPI2_MODE0、0、32); //连接到48个 CLK。
output_high (SlaveSelectPin); 

我通过发送填充为48位的0x8640来编写 CFR。

要读取、我发送:

1) 48位为0

2) 2) 0x3000……填充为48位零

3) 0的48位读取前16位响应。

但我返回0x2ff8 --并且0010 (0x2)的起始位看起来是给我 一个 REFDAC_B 寄存器而不是 CFR (应该从0011 - 0x3开始)。

我的分析器显示了在预期区域中填充的内容、以读取 DAC A (0x00 0x00 DACA DACA xx xx)、因此看起来我正在与器件通信。 我希望在设置 CFR 时缺少一些东西。

是否有任何关于我在数据表中遗漏的内容的线索?

非常感谢。

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

    其他说明。  我返回的值0x2FF8似乎与 REFDAC_B 返回的值相匹配:

    0x2FF8

    111111.
    54321098 76543210
    ---- ===========
    00101111 11111000
    |  |      000 =必须设置为0 (默认值)。
    |  1111 11111  =对各个输出电压进行编程的数据。
    0010.        = REFDAC_B

     

    寄存器      写  回读
    ------ ---- ------
    CFR      1000  0011
    REFDAC_A  1001  0001
    REFDAC_B  1010  0010

     

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

    您好、Allen、

    您提供的所有内容看起来都正确。  可能存在时序违规。

    在/CS 下降沿和第一个 CLK 之间有1us 的延迟、但在最后一个时钟和/CS 上升沿之间没有特意的延迟。  请验证48个 CLK 下降沿和/CS 上升沿之间的最小值为15ns。

    此外、最大 CLK 频率为20MHz;请验证您是否满足此要求。  最后、ADS8353在 SDI 引脚上捕获数据、并在 CLK 的下降沿在 SDO 引脚上启动数据。 请确保您的 SPI 协议与此要求兼容。

    记录读写操作有助于回答这些问题。  是否可以附加 Saleae 文件?  

    谢谢!

    此致、
    Keith Nicholas
    精密 ADC 应用

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

    [引用用户="Keith Nichola"]

    最后、ADS8353在 SDI 引脚上捕获数据、并在 CLK 的下降沿在 SDO 引脚上启动数据。 请确保您的 SPI 协议与此要求兼容。

    [/报价]

    谢谢、Keith。 当我看到"下降沿"时、我意识到我设置了错误。  我将 SPI 代码切换到模式1、并调整了 Saleae、现在我获得了更可信的结果。 但我确实对从 CFR 读出的前四位有疑问:

    ADS8353WriteRegister (0x8460)- 1000 010001100000
    ADS8353WriteRegister (0x9f00)- 1001 111100000000 <-这只是我在回读时可以轻松识别的东西。
    ADS8353WriteRegister (0xaf00)- 1010 111100000000 <-这只是我在回读时可以轻松识别的东西。

    ADS8353ReadCFR ()- 0x0460 -  0000 010001100000

    ADS8353ReadREFADACA ()- 0x1f00 -  0001 111100000000

    ADS8353ReadREFDACB ()- 0x2f00 -  0010 111100000000

    ADS8353ReadDACA ()- 65535
    ADS8353ReadDACB ()- 65535

    REFDACA 和 REFDACB 返回时返回0001和0010、与表10中的回读值匹配。  但 CFR 返回0000 (然后是我配置的预期位的其余部分)。

    CFR 回读的开始应该是0011吗?

    非常感谢。

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

    您好、Allen、

    听起来您的界面工作正常。  CFR 寄存器地址为00b、因此我认为前四位将读回0000b。  我发现至少有一位其他客户发现了同样的行为。

    我会在评估板上检查这一点、但遗憾的是、我目前没有。

    此致、
    Keith  

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

    非常感谢您的快速响应。 谢谢你。  在这个新设计中、我们有五个 TI SPI 芯片、但我想我已经准备好了。 如果不是,我会回来;-)

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

    如果您有任何疑问、请随时将问题发布到论坛。

    此致、
    Keith