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.

[参考译文] TCAN1145EVM:睡眠模式中的最大 SPI 时钟频率

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1007962/tcan1145evm-max-spi-clock-frequency-in-sleep-mode

器件型号:TCAN1145EVM

您好!

我正在尝试为 TI TCAN 114x CFD 收发器编写 Autosar CanTrcv 驱动程序、但我不清楚在睡眠模式下可以使用哪个 SPI 时钟频率?

在数据表/参考手册(修订版 SLLSF80A–2019年10月–2020年12月修订)中、它指出睡眠模式下的最大 SPI 时钟频率为10kHz。 与 SPI 时钟频率可高达4MHz 的所有其他模式相比:

在自动扫描中、在不同的 SPI 时钟之间切换并不容易、因此、我第一次尝试以1MHz 的频率一致地操作器件。 然后、我使用4MHz SPI 时钟重复同一测试。 奇怪的是、它似乎起作用(在这两种情况下)。 您知道这种情况吗?

目前、我仅在具有裸片版本1.6的 TCAN1145 (TCAN1145EVM 评估模块)上对其进行了测试。

我使用的 SPI 设置如下(SpiB波特 率1MHz 和4Mhz):

在我的测试中、我执行以下步骤:

  • 初始化 CAN 收发器(主动写入以下寄存器值)
    • MODE_CNTRL=0x04
    • WAKE_PIN_CONFIG=0x04
    • PIN_CONFIG=0x0
    • DEVICE_CONFIG_2=0x0
    • SDO_CONFIG=0x0
    • INT_ENABLE_1=0x60
    • INT_ENABLE_3=0x80
    • SWE_DIS=0x84
    • FSM_CONFIG=0x01
  • 读取 INT_2寄存器并清除 PWR_ON (如果设置)
  • 读取 INT_1寄存器并清除
  • 然后、我通过将 MODE_CNTRL 寄存器写入0x1将收发器置于睡眠模式
  • 此后、每1000ms 读取寄存器0至9 (DEVICE_ID 数组索引是寄存器偏移量)。 结果始终如下图所示、在我看来是正确的

我还检查了 TCAN1145的 SDO 引脚、并将来自 TCAN1145的信号可视化、这对我来说非常完美。

1MHz:

蓝色:SCLK 红色:读取寄存器0期间的 SDO (结果0x54)


数据表中指定睡眠模式中10kHz SPI 时钟的部分是否错误,或者它在更高的 SPI 时钟频率下工作是否巧合,或者我不理解另一个原因?

期待您的回应。

此致、

Peter Wais

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

    尊敬的 Peter:

    产生此速度变化的主要原因是、在睡眠模式下、SPI 的内部时钟源处于非活动状态。 nCS 置位后、该时钟源需要时间才能激活和稳定、然后才能使用接口、因此指定了较慢的数据速率、以便为器件提供该额外的启动时间。 然而、一旦内部时钟被激活、整个4MHz 时钟速率被支持。 我同意数据表对此没有做非常清楚的解释、睡眠模式 SPI 速率规范具有误导性。 我们将在以后的版本中修订此描述、以避免这种混淆。   

    睡眠模式(10.4.4)的 μs 更明确地解释了这种行为:"如果在将 nCS 拉低至读取或写入开始之间至少使用10 μ s 的延迟、则可以利用最大 SPI 速率。" 请注意、"最大 SPI 速率"是指4MHz。  

    我希望这可以让您的系统在睡眠模式下更轻松地与 TCAN1145连接、因为 NCS 时序比基于整个时钟速度更容易动态重新配置。 如果您有任何其他问题、请告诉我。  

    此致、
    Eric Schott

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

    嗨、Eric、

    非常感谢您的解释。

    基本上、根据您的回答、它仍然不适用于我的测试设置、但出于某种原因、它确实可以正常工作、我想了解原因。

    如 SPI 设置中所示、我在将 NCS 拉至低电平和启动 SCLK (SpiTimeCss2Clk)之间使用1us (1.0E-6)延迟。 根据我的理解、您说的时间应该是10us、或者?
    我忘记提到的另一件事是、我在进入睡眠模式时不会关闭任何电源(VCC、VBAT)。 也许我应该这样做吗? 进入睡眠模式后、我可以尝试关闭 VCC 或 VBAT? 您是否认为连续电源也适用于1us nCS 至 SCLK 延迟?

    此致、
    Peter

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

    尊敬的 Peter:

    10us 是我们为所需延迟定义的上限、但启动和稳定内部时钟的实际时间可能更短。 我们在这里指定了较大的裕度、以考虑可能影响该时序的其他变量、例如温度和电源范围。 我怀疑您在这些工作范围内的电流设置延迟为1us 将不会那么可靠。 在标称电平下、这1us 延迟很可能就足够了。 但是、由于我们指定了更长的启动时间、因此这种较短的延迟可能会降低这些工作范围内的可靠性。 对于最终实现、我建议使用完整的指定延迟来确保器件工作范围内的一致行为。  

    我不确定 Vcc 和 Vbat 电源如何影响内部振荡器的行为。 我知道它主要由 Vio 供电、但在器件处于低功耗模式时仍需要 Vbat。 如果 Vbat 被移除、器件状态机将被复位、因此 SPI 将不可用。 VCC 主要用于为 IC 的收发器部分供电、因此我不怀疑是否存在该电源会影响 SPI 的行为。  

    请告诉我这是否合理、如果您还有任何疑问。

    此致、
    Eric Schott

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

    现在我了解了。 非常感谢您的解释!