メディア

マイコンにおける「CAN」と「USB」の失敗事例集Q&Aで学ぶマイコン講座(42)(2/4 ページ)

» 2018年07月31日 13時00分 公開

源発振の周波数誤差

 CANやUSB関連で最も基本的な失敗事例は、通信速度の基準となるクロックの周波数誤差が大きく、データが正常に通信できないというケースです。これはCANやUSBだけでなくUARTなどでもよく起きている事例です。最近のマイコンには発振器が内蔵されていて、外部に水晶振動子や、セラミック振動子がなくても動作します。しかし、内蔵発振器の周波数誤差は小さくても±1%程度です。CAN通信では±0.1〜0.5%程度、USBでは±0.25%以内の精度が必要なため、内蔵発振器では、これらの精度を満たせません。STマイクロエレクトロニクス(以下、ST)のSTM32L431の内蔵発振回路の周波数誤差を示します(図1参照)。

図1:内蔵発振回路の特性(STM32L431の場合)

 0℃から85℃の間で±1%に規定されています。クロックがPLLで逓倍されて、または直接分周されてCANやUSBに届いた時点でも、周波数誤差は同じ値になります(厳密に言うと、PLLのジッタも考慮する必要があります)。したがって±0.1〜0.5%や±0.25%以内は実現できません(図2参照)

図2:クロック源から通信モジュール(CAN、USBなど)までの経路例

 しかし、内蔵発振器にはシステムの部品点数を低減できるという魅力があるので、無理に内蔵発振器を使ってCANやUSBやUART通信を行い、通信不良を起こした例があります。

 内蔵発振器を使用したとしても最初は正常に通信できるでしょう。ですが、通信不良という現象は、最初は正常でも、ある程度通信が進むとデータが正常に受信できなくなるという現象です(図3参照)

図3:源発振の周波数誤差が通信に与える影響

 結論として、通信精度が必要なCANやUSB通信を行う際は、外部の水晶振動子を使うことを強くお勧めします。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.