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.
您好、Expert
当我应用 TCAN4550进行 CAN 通信时、 我必须使用外部晶体振荡器? 我可以使用 MCU 内部的振荡器吗?
请帮助对此进行解释。
谢谢!
此致
qinlei、您好!
通常、TCAN4550-Q1将需要一个专用的时钟源、例如晶体振荡器、并且它同时使用这个时钟源来运行数字内核和 MCAN 控制器来生成 CAN 通信。 但也可以使用来自 MCU 的输出时钟、但这取决于来自 MCU 的时钟的质量以及它是否满足可靠 CAN 通信的时序要求。
ISO 11898-1:2015标准定义了振荡器频率的容差范围、它取决于时间份额的长度、位时间的段以及您在应用中使用的同步跳转宽度。 本文档中提供了5个公式、它们决定了最大频率容差是多少。 与较快的数据速率相比、较慢的数据速率具有较大的时钟容差、因此很难判断 MCU 是否可以生成满足 CAN 通信要求的时钟。
此致、
乔纳森
您好、Expert
感谢您的答复、 我还有另一个问题、 例如、如果我在 MCU 上插入一个晶体振荡器、它是8MHz、 但如果 不能 满足我的 CAN 通信速率要求、 我是否需要用16 MHz 的外部晶体替换它? 是否可以通过 MCU 的 PLL 功能将晶体振荡器的频率加倍? 这两种方法是否会有所不同?
谢谢!
最棒的餐厅
qinlei、您好!
对于 CAN 位时序的定义、通常将20MHz 或40MHz 的时钟频率用于 CAN 通信。 外部时钟的每个时钟周期都等于"最小时间量子或量(mtq)"、这对应于器件由于等于一个单时钟周期而可以使用的任何东西的最佳时间分辨率。 每个 CAN 位都由某个整数倍的时间份额(tq)组成、因此频率容限非常重要。
20MHz 和40MHz 是常见频率、在大多数常见 CAN 位时间中会产生整数比。 8MHz 和16MHz 并不常见、因此您需要确定是否可实现所需的比特率。 在具有位速率切换的 CAN FD 应用中、CAN 总线上的所有节点都具有相同的位时序配置设置来防止采样错误更为重要。
可以使用 PLL 将频率加倍、但这通常会降低时钟的质量、因此您可能需要限制 CAN 比特率、以便对较低质量的时钟有更大的容差。
TCAN4550-Q1在使用低于20MHz 的时钟频率时的另一项要求是、最大 SPI 时钟速率必须至少2MHz 低于外部时钟速率、以防止 SPI 错误。 TCAN4550-Q1数据表指定了20MHz 支持的最小时钟频率和18MHz 支持的最大 SPI 时钟速率。 可以使用慢于20MHz 的时钟、但也必须降低最大 SPI 时钟速率。
任何看门狗或诸如 SWE 计时器等失效防护计时器也基于20MHz 或40MHz 时钟频率。 如果使用不同的时钟频率、这些时间也必须根据时钟频率的差异进行调整。
您将需要确定您的应用和 CAN 总线是否可以支持使用16MHz 时钟频率、然后需要确定来自 PLL 的该时钟的质量是否符合 ISO 11898-1:2015文档中规定的时钟容差要求。
此致、
乔纳森
您好、Expert
感谢您的解释、我明白了、 我想您的意思是应用 PLL 后的频率可能不是 TQ 的整数倍、 所以会引入时钟误差、对不对?所以 PLL 的分频是否可以满足 CAN 通信的要求、仍然需要和 TQ,确认对吧?
谢谢!
此致
尊敬的 Qinlei:
如果我不清楚,或者不理解你的基本问题,我很抱歉。 但存在几个不同的问题。
第一个问题是16MHz 时钟是否会针对您所需的比特率生成正确数量的 TQ、以及是否与使用由不同时钟频率生成的 TQ 的 CAN 总线上的其他器件兼容、如20MHz 或40MHz。 由于每个数据位由多个 TQ 组成、因此如果不同器件的 tQS 具有不同的长度和数量、则可能会出现通信错误。 建议 CAN 总线上的所有器件使用相同的位时序配置和采样点、其设置取决于采样点前后分配的 tQS 数量。 tQS 的差异可能会导致不同器件之间的不同采样点、并导致通信错误。 如果 CAN 总线上的所有器件也将16MHz 用作时钟频率、则这不是问题。 但如果其他器件使用不同的时钟频率、则这可能是个问题。
下一个问题是来自 PLL 的时钟信号本身的质量。 由于 PLL 将尝试跟踪输入时钟的相位、它们的频率会略有变化、并导致信号抖动或失真。 因此、单个 TQ 的时间长度将与其他 tQS 略有不同、具体取决于 PLL。 这在"长期"频率方面不是问题、因为 PLL 应该锁定到基本的8MHz 时钟信号并产生16MHz 时钟输出。 但在"短期"中、周期间差异或抖动将传递到 CAN 时序中。 如果此变化过大、CAN 位可能会被错误采样或被其他 CAN 节点视为不正确、从而可能导致通信错误。
以下白皮书详细讨论了该主题、其中包括 ISO 11898-1:2015时钟容差要求标准中包含的内容。
CAN FD 总线系统的稳健性–关于振荡器容差和边沿偏差 (链接)
此致、
乔纳森
您好、Expert
我想我可以理解您说的第一个问题。
关于 PLL、我还有其他问题、 您是说将 PLL 用于倍频还是分频可能导致波形失真? 您是否有任何相关信息可供参考?
谢谢!
此致
尊敬的 Qinlei:
乔纳森本周不在办公室。 你能等到他回复吗? 如果没有、我可以尝试将该主题重新分配给团队中的其他人、看看他们是否可以查看。
-鲍比
大家好、我 想我可以等他了、谢谢
Qinlei,
为了进行跟踪、请允许我们成为主题帖中的最后一个回复。 Jonathan 将于下周回来。
此致、
埃里克·哈克特
尊敬的 Qinlei:
[报价 userid="533992" url="~/support/interface-group/interface/f/interface-forum/1348823/tcan4550-q1-about-the-external-crystal-oscillator-when-applying-can-communication-i-must-use-external-crystal-oscillator/5161950 #5161950"]关于 PLL,我还有更多的问题, 您是说使用 PLL 进行倍频还是分频可能导致波形失真? 您是否有任何相关信息可供参考?我将讨论这两个问题。
第一个可能的问题是试图跟踪源时钟波形时、锁相环(PLL)产生的失真和轻微的频率变化。 这源于 PLL 如何在源信号的频率上下游走、并在输出信号波形的相位中进行调整、以尝试保持输出波形在频率上"锁定"到源波形。 这会导致较小的失真或频率变化、因为 PLL 在源信号跟踪期间进行相位调整、这通常称为抖动形式、并且输出信号中的每个单独时钟周期都可能具有略有不同的周期 某些周期大于或小于其他时钟周期。 由于 CAN 应用程序使用这些与单时间份额(TQ)相等的单独时钟周期、因此 CAN 位时序也将包含此抖动。 因此、为了避免位时序和采样错误、该抖动必须很小并处于 ISO 11898-1:2015中定义的规格范围内。
第二个可能的问题与额外的乘法器和除法器引入的误差有关、有时这是以占空比失真的形式出现的、并且输出波形在波形的高部分和低部分之间不再是50%到50%的占空比。
需要测量由 MCU 的 PLL 生成的时钟的确切质量、以查看有多少周期抖动以及它必须的确切频率、从而确定它是否满足 ISO 11898-1:2015中定义的时钟容差要求。 这些容差取决于比特率和时序设置、因此、与需要更高质量的时钟来处理较短数据位周期的较快比特率相比、较低的比特率将具有较大的容差(或者可以使用质量较低的时钟)。
此致、
乔纳森