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.

[参考译文] LMK04832-SP:此器件能否使用标准4线 SPI 运行?

Guru**** 2553450 points
Other Parts Discussed in Thread: LMK04832-SP

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1003004/lmk04832-sp-can-this-device-operate-with-standard-4-wire-spi

器件型号:LMK04832-SP

您好!

传统上、SPI 是一个4线制接口、我的控制器具有 SCLK (输出)、CS*(输出)、MOSI (输出)和 MISO (输入)。

数据表(SNAS698B–2020年5月–2020年12月修订)对于4线 SPI 而言有点不清楚/令人困惑。

  1. LMK04832-SP 仅列出  SCLK (输出)、 CS*(输出)、 SDIO (BIDIR)、因此仅列出4个信号中的2个。 也许在其他地方有双功能引脚?
  2. 第12页建议了4线回读的可能性、这意味着4线 SPI 接口功能
  3. 第43页中的"要使用4线制 SPI 模式、请在其中一个输出多路复用器设置中选择 SPI 读回。  例如 CLKin0_SEL_MUX 或 RESET_MUX。 可以同时读回3线和4线。
    1. 哪种"输出多路复用器设置之一"?
    2. 我假设  CLKin0_SEL_MUX 实际上意味 着 CLKin0_SEL0_MUX、其中寄存器0x148的字段值为0x6显示 SPI 读回
  4. 第43页 还显示了寄存器0x0000有一个"禁用3线 SPI 模式"控制位、这意味着类似于4线 SPI 的器件会替代这个位
  5. 许多"MUX"寄存器允许选择 SPI 回读
    1. 寄存器0x148、0x149、0x14A、ox15F 和0x16E
    2. 在这些寄存器中的任何一个中设置 SPI 读回寄存器的选择都不包括其他选项(即多路复用器)、因此请谨慎选择
    3. 鉴于此、选择 RESET_MUX 可能最简单
  6. 寄存器149默认为 SDIO_RDBK_TYPE 的开漏输出
    1. 是否应将其设置为4线制 SPI 模式下的推挽式?
    2. 是否还应将另一个引脚设置为 tp 推挽式?

目前的最佳猜测如下:

  1. 芯片会以某种方式复位
  2. 在某种程度上、4线主机写入默认的3线  LMK04832-SP SPI 接口、以将其配置为使用/成为4线 SPI 接口
  3. 寄存器
    1. 0x000[7]= 0、正常运行和0x000[4]= 1、3线模式被禁用
    2. 0x149[1]=0时、SDIO_RDBK_TYPE 为推挽(或者只是与 RESET/GPO 输出类型匹配)
    3. 0x14A[5:3]=0x6、SPI 回读和0x14A[2:0]=0x3 RESET_TYPE 为推挽 式(或仅与 SDIO_RDBK_TYPE 输出匹配)

这是研究、现在 还有一些问题:

  1.  如果我们将 RESET/GPO 用作 SPI 数据引脚、LMK04832-SP 如何实现复位?
  2. 当控制器不是3线接口时、如何使用其3线 SPI 接口将器件配置为4线 SPI 接口?
  3. 在4线制 SPI 模式下使用 配置用于 SPI 读回的*多路复用器引脚之一时,该*多路复用器引脚是否会连接到主机的 MISO (主器件输入、从器件输出)引脚?
    1. 即、从上面的示例复位/GPO 将连接到主机的 MISO
  4. 在4线制 SPI 模式下、引脚20 (SDIO)连接到主机的 MOSI (主器件输出、从器件输入)引脚、从而成为 LMK04832-SP 的数据输入?

谢谢、

Dan

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

    Dan、您好!

    数据表注释:

    1. 任何一个 GPIO (PLL1_LD、PLL2_LD、RESET、CLKIN_SEL0、CLKIN_SEL1)都可以重新配置为用作 SPI SDO。
    2. 见上文
    3. 见上文。 请注意、相应的_type 寄存器(PLL1_LD_TYPE、PLL2_LD_TYPE、RESET_TYPE、CLKIN_SEL0_TYPE、CLKIN_SEL1_TYPE)必须设置为输出类型、例如推挽或集电极开路。
    4. 3线制和4线制 SPI 可同时运行、如(3)所述。 SPI_3Wire_DIS=1禁用 SDIO 引脚上的 SDO 功能、确保 SDIO 引脚始终仅保留输入。
    5. 好的
    6. SDIO_RDBK_TYPE 仅控制3线 SPI 中 SDIO 引脚使用的输出缓冲器类型。 对于4线制 SPI、请使用上面(3)所示的相应_type 寄存器。

    关于"最佳猜测"的评论:

    • 我们建议将 SDIO_RDBK_TYPE=1保留为开漏、以确保在3线制模式意外启用的情况下、SDIO 引脚永远不会被主动驱动或冲突。 也就是说、一旦 SPI_3Wire_DIS=1、SDIO_RDBK_TYPE 状态将不起作用、因为 SPI_3Wire_DIS=1使 SDIO 无法回读。
    • 0x14A = 0x33 ([5:3]= 0x6、[2:0]= 0x3)将使用 SPI 读回将 RESET 引脚正确设置为 GPO。

    更多问题:

    1. LMK04832-SP 将在加电时执行 POR、也可以通过设置 R0 = 1中的 RESET 位进行复位。 R0中的 RESET 位的行为与 RESET 引脚上的高电平输入相同。 我认为数据表中建议的编程顺序建议在进行任何其他编程之前切换 RESET 位。
    2. 只需将3线 SPI 接口写为 CS*/SCK/SDI 接口,直到您对禁用3线 SPI 和将 RESET 引脚设置为 SDO 进行了修改。 除非您尝试在 SPI_3Wire_DIS=0时执行回读事务、否则 SDIO 线路将始终作为输入、因此在配置为4线制接口之前不要回读。 一旦复位引脚被配置为 SDO、现在它是一个4线制接口。
    3. 正确
    4. 正确

    此致、

    Derek Payne

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

    感谢 Derek 的及时回答!

    他们几乎解决了我最初问的所有问题。

    在上电过程中、我仍然不清楚器件是如何实际复位的。 数据表似乎没有说明我所见过的内容。

    我们需要确保器件加电并正确复位到发布的默认值、而无需写入复位寄存器。

    是否有任何与硬件级上电和复位操作相关的可用详细信息?

    数据表第12页提出了一个新的相关问题,其中说明“4线模式读回与 SDIO 引脚具有相同的计时”。

    我发现这一点有点可疑、因为4线 SPI 的某些多路复用器可选输出位于封装的不同边缘、而 SDIO 则不同。

    我可以看到、在以下几种情况下、该陈述是如何准确的:

    1. 所有这些可能引脚上的时钟到输出延迟是相同的
    2. 120ns 的 tDV 值只是将所有可能的引脚封装

    只是想确认一下。

    是否有任何可用于 tDV 的最小值?

    谢谢、

    Dan

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

    Dan、

    我在内部确认 POR、RESET 位和 RESET 引脚的行为。 通常、当器件加电时、在启动时会有一段时间、所有 LDO 在器件上加电并稳定。 我们在数字时钟上有一个板载~10MHz 振荡器、该振荡器为系统加载所有寄存器计数一定数量的周期、这些寄存器具有在金属中编程的默认值、 据我所知、POR 和位/引脚复位之间的唯一区别是增加了一些时间或其他等效机制、以便 LDO 在启动时稳定。 这是它的工作原理以及所需的时间、因为数据表中未捕获时序-因此我在内部进行确认。 如果我的怀疑是正确的、除了为器件加电以确保正确加载默认值外、您不需要执行任何操作。

    SDO 位于封装的不同边沿可能会引入1-2ns 的时序差异。 我们已将 tDV 最大值设置为120ns、由于 SCK 限制为2MHz (500ns 周期、从下降沿到上升沿250ns)、回读值在下一个 SCK 上升沿始终保持稳定。 我无法肯定地说、但我怀疑120ns 的数字也是锯齿状的、这有助于确保 PVT 在最特殊情况下的行为。

    在没有打印的最小值的情况下、我会对因果关系提出申诉:SCK 的下降沿触发数据更新以进行回读、因此我建议下限为0ns。

    此致、

    Derek Payne

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

    再次感谢 Derek、

    我会让您对重置进行一些跟踪,但它似乎已加电并忘记了它。

    至于最小时钟到输出、在没有值的情况下、我也会假定为0、即使我们知道它始终大于0。

    这里的挑战是、它可能会使会议保持时间变得困难(尤其是当 SI inegtrity 工具根据 IBIS 模型产生合法的负迹线延迟时)。

    有人希望连接重置/GPO、以便用于硬件驱动的重置、因此我们将使用引脚48

    根据命名规则进行的复位似乎为高电平有效,并可在表8-46中确认寄存器0x14A 。

    RESET_TYPE 可配置为包含内部下拉电阻(默认)或上拉电阻、并且没有可用于这些下拉电阻的近似值。

    我通常会将高电平有效复位输入从外部拉低、其阻值相当小、如1K。

    我想确保这不会影响加电时的正常器件复位、尽管这似乎不太可能、因为无论如何都会下拉默认值。

     

    另一项新的意见:

    第6.1和6.3节定义了 VDD 和 VDD_A

    第6.5节中的电气特性表均报告其值为 VDD=VDD_A=3.3V

    表中的实际参数数据均使用 Vcc 的通用值。

    器件引脚使用 Vcc1-Vcc12 、并具有 Vcc5_dig 等描述符。

    我假设所有12个 Vcc 引脚使用3.3V 电压、例如在第11页数字输出上、VOHmin 为 Vcc-0.4、这意味着 VDD-0.4。

    如果整个相关组(请参阅图5-1)未使用、是否可以将12个 Vcc 引脚中的任何一个保持断开连接?

    VDD_A 被定义为“内核电压”,但12 Vcc*引脚说明中没有一个提到内核电压。

    我假设内核电压来自 Vcc3_SYSREF (根据图5-1)–这是正确的吗?


    此致、
    Dan

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

    Dan、您好!

    我确定寄存器、引脚和 POR 复位的复位行为相同(不过有趣的是、写入 RESET=1后、器件将保持复位状态、直到下一个 SPI 事务开始)。 也就是说、如果复位引脚在启动时看到噪声、则不应影响 POR -复位序列将重新开始。 考虑到内部电阻、严格来说、外部下拉值不是必需的、但仍然是一个好主意。

    所有 VCC 引脚必须连接到3.3V、即使未使用任何器件也是如此。 VDD_A 和"内核电源"语言可能是对 VCC5_DIG (所有由该电源供电的数字 I/O)和其他 VCC 引脚的区分尝试解释不清。 (在哪种情况下、VDD_A 不被称为 VCC5_DIG? 可能是因为我们在另一个数据表中将其称为"已复制...") 在所有意图和目的中、将它们视为相同的电源、因为我确信、我们绝不会像这里的人工区分所暗示的那样单独改变任何特定引脚的电压。

    有一些寄存器设置可以为 LMK04832-SP 的大部分部分断电、这是降低功耗的推荐方法。 在指定适当的寄存器设置后、许多未使用的电源轨会接近0mA 的功耗。

    对于我们的参数数据、我们确保了器件引脚上的电源电压尽可能接近3.3V、尽管一些电源消耗的电压略高于其他电源消耗的电压、因此在测试时间可能存在一些~10mV 的差异。 所有电源上的所有参数也被表征为3.3V±5%。

    此致、

    Derek Payne

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

    感谢 Derek 的所有帮助。