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.

[参考译文] LMX2582:无法从 MUXout 读取数据

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/818825/lmx2582-can-not-read-data-from-muxout

器件型号:LMX2582
Thread 中讨论的其他部件:LMX2594

我无法通过 SPI 接口从 MUXout 读取任何位。 我可以将寄存器 R0设置为芯片上电和断电、并观察电流消耗的变化、因此我得出结论、SDI、CSB 和 SCK 都正常。

我使用的是连接到第三方模块的 LMX2582EVM 板、该模块能够通过测试垫进行 SPI 通信、并使用 PicoScope 示波器来监控线路。

在这里是加电命令:

这将读取寄存器 R7:

有什么想法、可能会出什么问题?

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

    您好、Hinko、

    您是否在回读前的某个点复位芯片? MUXOUT_SEL 的默认值为锁定检测指示。 如果您尝试在回读前立即对 MUXOUT_SEL (R0[2])= 0进行编程、回读是否起作用?

    此致、

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

    尊敬的 Derek!

    这就是我要做的:

    1. 通过发送0x00 0x00 0x00字节来为芯片加电、
    2. 发送0x00 0x00 0x02来初始化芯片
    3. 尝试通过发送0x87 0x0a 0x0a 0x0A 来读取寄存器 R7 (我知道0x0a 也可以是任何其他字节)
    4. 此时、示波器始终显示数据0xFF 0xFF、而我希望数据为0x28 0xB2

    在开场白中、我没有提到我从 LMX2582EVM 板上去焊 R40、以使 LED 与 MUXout 线断开。

    供参考、我的示波器连接到 MUXout_TP 测试点。

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

    BTW、复位/启动后芯片中是否存在数据表7.6.1章节中所示的默认值? 或者、是否需要将这些值实际输入到芯片中以读回某些有用的内容?

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

    您好、Hinko、

    在步骤2中复位芯片后、加载默认寄存器值。 R0[2]的默认值是锁定检测、而不是回读。 因此、您需要发送另一个写入来设置回读寄存器。

    下面是我要做的:

    1. 复位:0x00 0x00 0x02 (从技术角度讲、您无需为芯片加电、它启动加电)
    2. 重新启用回读:0x00 0x00 0x04
    3. 测试读取:0x87 0x?? 0x??

    我不确定启动时器件中存在哪些值。 在 POR 之后、但在使用 R0[1]进行软复位之前、器件内的许多功能块未初始化、因此没有响应。 需要复位器件以启动内部状态机初始化序列。 由于回读在复位前被禁用、因此启动时寄存器的内容基本上无关紧要。 不过、可保证使用 R0[1]进行软复位、以便为所有寄存器加载数据表7.6.1中的默认值。

    此致、

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

    尊敬的 Derek:

    [引用用户="Derek Payne"]

    重新启用回读:0x00 0x00 0x04

    [/报价]

    查看数据表7.6.1.1、可读回 MUXout 的值不是 R0[2]= 1、而是 R0[2]= 0。 可以确认吗?

    然而、似乎不能期望在 POR 或复位后设置默认值。 通过查看7.6.1.1、我可以看到、复位后 R0应该为0x00 0x22 0x1C、这意味着没有像您说的那样启用回读。

    如上所述、我将尝试获取 R7值(只要我们确认 R0[2]位设置以进行读取)。

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

    Hinko、

    正确、R0[2]=0表示回读。 第2步应该只是写入0x00 0x00 0x00 0x00、或者满足 R0[2]==0的任何其它寄存器写入来启用回读和 R0[1]=0来防止复位。 很抱歉造成混淆。

    此致、

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

    感谢您确认 Derek!

    同时、我已经在执行 SPI 通信的硬件上测试了不同的设置。 尤其是更改影响 MISO/MOSI 线路采样和计时的 CPOL/CCPHA 参数。

    通过使用 CPHA=1、我可以在 MUXout 线路上采样一些位、但数据不正确。 因此、我认为 CPOL=0和 CPHA=0的 SPI 协议不适合从 LMX2582读取数据。

    我设法澄清了 uWire (MICROWIRE)和 SPI 协议之间的差异。 由于它们在布线和功能上非常相似(实际上根据 Wikipedia、uWire 被视为 SPI 的子集)、它们在一个主要方面确实不同:当 MISO (在我们的案例中为 MUXout)线路的采样被预先建立时。 在第5页、  可以清楚地告诉用户 uWire 协议的主器件在上升沿读取/采样、与写入数据一样。 另一方面、SPI 始终使用相对的时钟边沿。

    话虽如此、我将尝试通过我手头上的廉价 FTDI 硬件或 RPi 对整个通信进行比特流、以查看我是否可以按预期读取 MUXout! 遗憾 的是、我无法更改我们指定的仅能执行 SPI (而不能执行 uWire)的硬件、因此我只能使用此 bitbang 方法实现更远的距离。

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

    您好、Hinko、

    我认为 LMX2582与 LMX2594具有类似的计时行为。 我们刚刚修订了 LMX2594的数据表、以阐明时序要求。

    LMX2594支持 CPHA = 0、CPOL = 0或 CPHA = 1、CPOL = 1。 在时钟的下降沿之后、MUXout 数据被计时输出。 有关详细信息、请参阅 LMX2594数据表的图1和图2及其下的注释。

    此致、

    Hao

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

    您好、Hinko、

    这是否解决了您的问题?

    此致、

    Hao