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.

[参考译文] ADS54J42:用于读取和写入所有寄存器,所有存储器,所有页面的C代码

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/662811/ads54j42-c-code-to-read-and-write-all-registers-all-banks-all-pages

部件号:ADS54J42

您好,

我在读取和写入ADS54J42的所有寄存器,所有银行和所有页面时遇到了困难。  我不理解关于如何切换银行和页面的文档。  是否有人有一些真实的示例或C语言代码可以帮助我?  谢谢。

下面是我的一个困难例子。  我想写JESD数字页寄存器0x01,然后再读回。  下面是我的代码。  我做错了什么?

WriteBuffer[0]= 0x40;
WriteBuffer[1]= 0x03;
WriteBuffer[2]= 0x00;
XSpi_Transfer (SpiInstancePtr,WriteBuffer,NULL,3);

WriteBuffer[0]= 0x40;
WriteBuffer[1]= 0x04;
WriteBuffer[2]= 0x69;
XSpi_Transfer (SpiInstancePtr,WriteBuffer,NULL,3);

WriteBuffer[0]= 0x00;
WriteBuffer[1]= 0x01;
WriteBuffer[2]= 0x02;
XSpi_Transfer (SpiInstancePtr,WriteBuffer,NULL,3);

WriteBuffer[0]= 0xE0;
WriteBuffer[1]= 0x01;
WriteBuffer[2]= 0x00;//不在乎
XSpi_Transfer (SpiInstancePtr,WriteBuffer,ReadBuffer,3);

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

    e2e.ti.com/.../SPI-writes.docxTony

    查看所附文档是否有帮助。 将其与数据表中显示的SPI信息一起使用。

    此致,

    Jim

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Tony:
    有关参考,请参阅 www.ti.com/.../ads54j42.pdf第33页开始的SPI操作
    我发现第43页上的流程图也很有帮助。

    第46页显示了一些寄存器写入示例,让我们更深入地了解此页上的表16
    (数据表中有一个注释打字错误,我已在下面更正)
    SPIw(0x40 04 69);//选择JESD数字页(0x69..)
    SPIw(0x40 03 00);//选择JESD数字页(0x. 00)
    //注册页现在为0x69 00

    SPIw (0x60 01 02);//设置数字2x模式

    SPIw(0x40 04 6A);//选择JESD模拟页(0x6A ..)
    //注册页现在为0x6A 00

    SPIw (0x60 16 02);//设置SERDES PLL 40x

    因此,一般而言:
    写入的前4位为0x4或0x6
    0x4 SPI写入,JESD SPI bank,页面选择,[两个通道]
    0x6 SPI写入,JESD SPI bank,寄存器访问,[两个通道]
    接下来的12位是寄存器位置
    最后8位为'data'
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    (续)
    我将尝试根据以下示例更新您的请求:
    // JESD数字页面寄存器0x01,然后再读回
    SPIw (0x40 03 00);
    SPIw (0x40 04 69);
    //注册页现在为0x69 00
    SPIw (0x60 01 02); //从SPIw修正(0x00 01 02);
    //设置JESD模式2X
    SPIR(0xE0 01 00);//应从0x69 00:01开始

    此致,
    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Jim,我确实如您所说,但从ADS54J42中没有得到任何反馈(或全部零位)。 有趣的是,以下是可行的:

    SPIw (0x00 0x11 0x80)
    SPIw (0x00 0x23 0x0F)
    SPIR (0x80 0x23 0x00)
    我回到了0x0F,正如预期的那样。

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

    托尼

    该设备允许您从常规寄存器和主页中写入和读取数据,但需要运行SYSREF和设备时钟才能访问所有其它寄存器。

    此致,

    Jim

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

    当您说"设备时钟"时,您指的是CLKINP和CLKINM,对吗? 谢谢。

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

    正确。

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

    我错过了SYSREF。  现在,我可以写入和读取除JESD模拟页(0x6A00)之外的所有存储库,页和寄存器。  是否有其它时钟或信号缺失?  谢谢。

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

    其它信息:ADS54J42与我的JESD204 RX芯片同步。  这意味着所有数字接口都能正常工作。 但是,我得到的数据都是零。  再加上我无法从JESD模拟页寄存器中读取有意义的值,这让我感到困惑。  我已验证所有电源(AVDD,AVDD3V,DVDD,IOVDD)是否正常。  感谢您的帮助和建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外,我可以打开传输层测试模式,并且我收到的数据看起来正确。 再次感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    托尼

    您必须先执行数字复位,然后才能访问此寄存器。 要执行此操作,请在主数字页中写入0x01,然后在地址0x6800上写入0x00。

    此致,

    Jim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    托尼
    请确认您正在编写以下内容以访问JESD模拟页面:
    SPIw 4003 00
    SPIw 4004 6A
    SPIR E016 00 //从JESD模拟页6A00寄存器16 JESD PLL模式读取

    我很确定整个JESD模拟页寄存器初始化为0x00。 因此,请确认您是否能够写入其中一个有效的R/W位,然后再读回。

    此致,
    Brian