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.

[参考译文] LMX1204:SPI 接口与 LMX1204 EVAL 不一致。

Guru**** 2511415 points
Other Parts Discussed in Thread: LMX1204

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1251236/lmx1204-spi-interface-incongruence-with-lmx1204-eval

器件型号:LMX1204

大家好、

我们在定制 PCB 板中使用您的组件 LMX1204。 我们在 SPI 编程信号(SCLK、SDO、SDI 和 CS)中遇到了一些困难。

在下面说明的数据表的图6-1中、定义了 SPI (也在数据表的"此器件的建议 SPI 设置是 CPOL=0和 CPHA=0。"图的后面文本中。  这意味着、如下图所示、CS#之后的 SCLK 的第一个边沿为上升沿、且在没有执行任何 SPI 周期时、时钟引脚为低电平。 此外、SDI 和 SDO 上的数据在时钟的上升沿被采样、而在下降沿被"改变"。

由于我们无法在定制 PCB 上对 LMX1204进行编程、因此我们会进行不同的分析、而且由于我们还购买了 LMX1204评估板、因此我们会在评估板上提供的引脚上测量 SDI、SCLK 和 CS#。

我将在下图中展示该电路板上的示波器信号。

由于 SCLK 的第一个边沿在 CS#之后下降、CPOL 看起来不是0而是1。 我将为您进行缩放:

黄色曲线为 CS、紫色为 SCLK、蓝色为 SDI。  

我们使用 TICS PRO SW 界面对 LMX1204评估板进行编程。  

有人能解释一下为什么数据表和评估板上使用的运行模式之间存在这样的差异?

非常感谢。  

此致!

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

    George

    听起来 EVM 编程没问题、但它执行编程的方式不符合 CPOL=0和 CPHA=0的表述。

    CS#变为低电平后、数据在 SCK 的上升沿随时钟移入。

    根据我对 SPI 的理解:

    CPOL = 0表示时钟空闲状态为低电平

    CPHA=1表示数据在前导(第一个)时钟上升沿被采样

    因此、从测量结果来看、似乎 CPHA = 1、但 CPOL = 1、因为时钟空闲状态为高电平、而不是低电平。

    我们有其他编程软件、将时钟的空闲状态设置为低电平、这也可以正常工作。

    那么,你是不是建议我们说以下话呢?

    CPHA = 1

    CPOL 可以是0或1

    此致、
    迪安

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

    您好!

    感谢您的答复、非常感谢。 您所说的都是正确的、  

    我只需要回答这个问题:

    那么,你是不是建议我们说以下话呢?

    CPHA = 1

    CPOL 可以是0或1

    [/报价]

    我们已 尝试使用 CPOL = 0对 LMX1204进行编程、但这对我们来说是无效的。 因此、我们在 LMX1204与评估板的引脚 SDI、CS 和 SCK 之间进行硬件连接。 这很有效。

    因此、我的怀疑是数据表为该组件指定的 CPOL = 0是错误的。  

    您能否在内部验证正确的 SPI 设置是什么、以便对 LMX 进行编程?  

    非常感谢。

    此致!

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

    您好、George、  
    只要他能及时回复你!

    此致、  

    维森特  

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

    对于器件、我们已 按照数据表所示的方式进行编程、编程成功后、时钟既保持高电平、又保持低电平。  我们的旧版本软件曾以这种方式进行编程、但 TICSPRO 在编程后似乎保持 SCK 为高电平。

    由于在这两种情况下、SCK 在编程期间变为低电平、并且我们知道它在 CPOL=1的情况下有效、很难想象如果 SCK 在之前的几个另外一段时间内被保持为高电平或低电平将阻止它编程。  因此我认为更可能的情况是、即使 CPOL=0、器件也对编程做出响应、但有其他一些因素不予考虑。  例如、如果 SCK 为高电平、那么我们知道在此期间没有任何编程内容。  但如果 SCK 为低电平、那么在随时钟移入错误位的线路上可能会出现一些毛刺脉冲。

    我不是微控制器专家、因此我不知道 CPOL=0与1是否产生任何其他影响、但 SCK 线路在编程后处于低电平。  数据表中的 SPI 读取/写入速度为2MHz、因此可能会涉及某种计时问题。


    此致、
    迪安

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

    Dean、您好!

    感谢您的答复。 我理解您对这个问题的观点。  不过,我 还有一些疑问,特别是:

    数据表中的 SPI 读写速度为2MHz,因此可能会涉及某种计时问题。

    如果2MHz 是正确的频率、为什么 Tcwh 和 Tcwl 都表示为最大值100ns (这意味着周期为200ns、因此最大频率为5MHz)。 我还会测量 LMX1204评估的 SCK 频率。 它等于125KHz。  

    我们还使用 CPOL = 1和 CPHA = 1的 SPI、其 SCK 频率等于125KHz。 但是、 我遇到了同样的问题、并且无法对组件进行编程。

    还有一个关于 TCES 的新问题。 我将该时间解释为从 CS 下降沿到第一个有效时钟边沿(当 CPOL = 1时、第一个下降沿)之间的时间。 数据表中报告的最大时间为20ns、这是否可以是最短时间? 评估上。 电路板测得的时间大约为500ns。 该时间与组件的正确编程序列有多大相关性? 有一个间隔(最小值-最大值)需要尊重?

    非常感谢

    此致!

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

    除了第一个规范、这些都应该是最小的规范;  这会大大增加数据表的内容。

    这些数字时序规范在里面有一些很好的裕度、我们通常的测试方式是运行一些数字模式来进行 go/no go 测试。  我们通常不会在找到部件实际开始失效的限制的地方进行断点测试。

    在125kHz 的写入速度下、似乎很难将这指责为一个纯粹的时序规格。

    对于 TCES、您的解释是正确的。   

    对于这些时序规格、我认为如果存在问题、症状可能是未命中或获得额外的时钟。   

    但让我们做一个关于 CS#和 SCK 低电平以及一些噪声会发生什么的思考实验。

    假设您对寄存器进行编程、然后将其锁定、然后 SCK 和 CS#为低电平。   现在、假设由于一些不必要的噪声、SCK 上存在不必要的时钟脉冲。   因此一个位会随时钟移入。  现在您 开始在下一个寄存器中计时、但您已经有一个大时钟输入、即读取/写入位。  然后对其余部分进行计时、但包括地址在内的所有内容都将移动一位。  在最后一个位的旁边、该部分看到您已经为所有数据计时、因此它会自动将其锁存到寄存器中。  然后、最后一个位作为下一个寄存器计时。  然后 CS#变为高电平并在1位中计时。  一团糟。  但是、如果您具有 SCK 高电平、它可以防止错误的时钟脉冲发生、

    因此、我想知道编程是不起作用且被完全忽略、还是您实际上正在对器件进行编程、但没有您想要的信息。

    此致、
    迪安

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

    Dean、您好!

    感谢您的答复。 我将在你们讨论的某些时候作答。

    除了第一个规范、这些都应该是最小的规范;  这会大大增加数据表的内容。

    [/报价]

    嗯、太好了。 还需要更改最小时间值。 由于频率最大为2MHz、因此需要更改时钟的脉冲宽度。

    对于这些时序规格,我认为,如果出现问题,症状可能是未使用或获得额外的时钟。  [/报价]

    您的症状也是正确的。 通过更好地分析 LMX1204评估板的 SPI 布线、我们注意到 SCK 的 SPI 数量为24、这意味着如果数据为16位、1位用于 R/W、这意味着以7位表示的地址总共24个时钟周期。

    在数据表的图6-1中、是指由1位 R/W、8位地址和16位数据组成的 SPI 接口、总共25个 SCK 周期。

    我们还实现了 CPOL = 1和 CPHA = 1、以保持与评估板相同的准则。

    将地址从8位更改为7位、我们可以对器件进行编程、这可以正常工作、还允许我回读寄存器值。 因此、最后是正确的、有7个地址位和1位 R/W + 16T 位数据& CPOL = 1和 CPHA = 1。 我在这里放了一个正确的 trama 的屏幕截图:

    写入操作:  

    读取操作:  

     

    非常感谢

    最棒的问候!!

     

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

    George

    好的,另一个数据表 blooper ..

    地址实际上是7位、而不是8位、因此图表是错误的。  有一个 R/W 位。  因此,有时我们粗心大意,并考虑该地址的 R/W 部分,但它不是。  但它应该是24位。

    在数据表中、我们告诉您发送25个位、 似乎您在这样做。  但通过保持数据为高电平、它取消了这个不必要的地址位、从而导致了一个愉快的巧合。  因此、LMX1204数据表中的两个问题似乎是:

    1.在最小值/最大值列中交换规格

    2.时序图应显示 R/W 位+ 7个地址位,而不是8个地址位。

    此致、

    迪安

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

    Dean:

    完全正确! 谢谢你的专业!

    此致、

    -乔治

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

    乔治。  感谢您指出这些问题。 我们将更新数据表。

    我将关闭该主题。