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.

[参考译文] LMX2581E:与 LMX2581E 通信时出现问题

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1024247/lmx2581e-issue-communicating-with-lmx2581e

器件型号:LMX2581E

您好!
我设计了一个采用 LMX2581E 的电路板、无法与它进行通信。

我遵循数据表建议的初始化序列、该序列建议在电源正常时软复位 LMX、然后从 R15写入操作所需的值。 这是我要发送的序列:

0x0020 0015 //R05 -复位

0x0000 080F //R15
0x4082 000d//R13
0x0008 2437 //R07
========================================================================================
| R7 ||引脚模式   |反相|选择  |
|--||---- |------ |------ |
| LD || HD_push_Pull |正常  |回读|
|多路复用器|| PUSH_Pull  | NORMAL  |回读|
| FL || TRI_STATE  | NORMAL  | GND   |
========================================================================================
0x0000 00C6//R06
0x0020 0005 //R05
0x0000 0004 //R04
0x0002 FBC3//R03
0x0A00 0002//R02
0x0000 0011 //R01
0x000E 0000 //R00

写入 R15后、Muxout 会一直保持为1、软件复位不够用、需要下电上电
接收到的前2个字为:
0x0000 1CC0
如果我跳过 R15:
写入 R13后、Muxout 会一直保持为0、软件复位不够、需要下电上电*
接收到的前2个字为:
0x0000 1CC0

*注意:如果 R15在 R13之后发送、则 Muxout 变为1

如果我跳过 R13和 R15:
前9个字是:0x0000 1CC0
然后、写入 R0后、它变为0x0000 0530

发送初始化寄存器(最初是 R15到 R0,现在是 R7到 R0)后,我使用 R6读取所有这些寄存器:0x0000 01E6... 0x0000 0006
该值始终保持为0x0000 0530

所有这些都将重复几次、并使用逻辑分析仪进行检查。 似乎芯片正在响应、但不是我期望的那样。 我认为这可能是诊断回读、但它看起来很奇怪、因为它不符合数据表的图18 (第22页)、其中它应该是0xXXXX XXXF (地址应该是1)

它的行为也很奇怪、因为当我更改 R7并反转 Muxout 或更改 Select 时、结果是相同的。 因此、我认为 LMX2581E 不理解我所说的内容。 但另一方面、我不明白为什么不这么做。 我的原理图与演示板大致相同。

您是否知道我可能会出什么问题?

谢谢

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

    您好、Julien、

    您能否使用 TICS Pro 设置配置、然后使用您自己的软件交叉检查寄存器值? 这将确保您对正确的寄存器值进行编程。  

    此外、您是否编写了 R10、R9和 R8?  

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

    Noel、您好!

    我按照建议使用了该软件。 由于不同寄存器的"只读位"、这些值稍有不同。

    不、我 没有对 R10、R9和 R8进行编程、因为它们都是只读值。 我没想到需要对它们进行编程。

    这是我的更新序列:

    0x00308015 // REST

    0x021F E80F //R15
    0x4082 C10D //R13
    0x2100 50CA //R10
    0x03C7 C039 //R09
    0x207D DBF8 //R08
    0x0008 2337 //R07
    0x0000 04C6 //R06
    0x0030 8005 //R05
    0x0000 0004 //R04
    0x2004 F3E3 //R03
    0x0FD0 9002 //R02
    0xC400 2051 //R01
    0x4087 0000 //R00

    并且我接收(同时)

     复位时为0x0000 3980 //(0x3980 = 0x1CC0 << 1)
    R15期间为0x0000 1CC0 //
    R13期间为0xFFFF FFFF //
    R10期间及之后为0xFFFF FFFF //
    (...)

    这是我的逻辑分析仪的输出、如果它有助于:

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

    Julien、您好!

    以下是几个想法:

    • R10、R9、R8不是只读值-请参阅数据表8.6.1.3。 对这些寄存器进行编程至关重要。
    • 对器件进行编程时是否存在基准振荡器?
    • 我真的看不到、因为图像太小了、但您是否观察到了10ns 的 TCES 时钟启用设置时间? 看起来 MOSI 和时钟的上升沿正在同时转换... 也许您可以放大包含前两个寄存器写入、甚至只是单次写入的事务部分、以及有助于验证时序的时基?
    • 数据表建议选择 LD 或 MUXOUT 作为回读。 也许这应该被解释为 XOR? 您能否看到仅选择其中一个时会发生什么情况? 我不认为这是问题、因为 R15之后编程失败... 低优先级、但我想尝试一些东西。

    此致、

    Derek Payne

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

    尊敬的 Derek:

    • R10到 R8相关知识。 我会将它们添加到我的代码中。
    • 是的、在发送复位前、一个100MHz 振荡器被加电并在 OSCIN 上稳定。
    • 你有好眼睛! 是的、MOSI 在上升沿发生变化、应在下降时钟上读取。 我很困惑、因为根据图18 (8.3.14.2)、MUXOUT 应该在下降沿读取。 我的逻辑分析仪不足以测量如此小的差异、但在示波器上检查后 、启用设置时间的时钟远低于10ns。 可能更像是500ps。 我将尝试解决这个问题。
    • 关于 LD 和 Muxout 是相同的、我改变了它(惊喜、惊喜没有改变!

    我将尝试修复计时问题并发布结果。

    谢谢

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

    尊敬的 Derek:

    你找到了,这就是问题!

    谢谢

    Julien

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

    很棒,很高兴我能提供帮助!

    此致、

    Derek Payne