8 MHzより高い周波数で実行する必要性を発見したことがないため、写真にある内部オシレーターを常に使用します(これは、使用する写真が最も速い傾向にあります)。8 MHzを超えること以外に、外部発振器を使用する必要があるという理由はありますか?私に間違ったことがもう一つあるように思えますが、私は他の人が何をしているのか聞きたいです。
8 MHzより高い周波数で実行する必要性を発見したことがないため、写真にある内部オシレーターを常に使用します(これは、使用する写真が最も速い傾向にあります)。8 MHzを超えること以外に、外部発振器を使用する必要があるという理由はありますか?私に間違ったことがもう一つあるように思えますが、私は他の人が何をしているのか聞きたいです。
回答:
他の人が言ったように、正確な周波数と周波数安定性は、外部セラミック共振器または水晶を使用する理由です。共振器は、内部RC発振器よりも数倍正確であり、UART通信に十分です。クリスタルははるかに正確で、CAN、USB、またはイーサネットなどの他の種類の通信を行う場合に必要です。
外部水晶のもう1つの理由は、周波数の選択です。水晶は広範囲の周波数に対応していますが、内部発振器は通常1つの周波数であり、4x PLLの選択が有効になっている可能性があります。一部の新しい24ビットコアPICには、クロックチェーンに乗算器と分周器の両方があるため、単一の内部発振器周波数から幅広い周波数を選択できます。
もちろん、通信以外に正確な周波数またはタイミングを本質的に必要とするさまざまなアプリケーションがあります。時間は最も正確に安価に測定できる電子機器の特性であるため、問題は時間の測定または正確なタイミングのパルスの生成に変換されることがあります。
次に、他のブロックとの長期的な同期を必要とするアプリケーションがあります。リアルタイムクロックのベースとして使用すると、1%の発振器は1日あたり14分以上オフになります。リアルタイムを知らなくても、正確な長期時間が必要になる場合があります。たとえば、低電力デバイスの束が1時間に1回起動して数秒間データを交換し、その後スリープ状態に戻ると仮定します。50ppmの水晶(入手が非常に簡単)は、1時間で180ms以内になります。ただし、1%RCオシレーターは36秒オフになる可能性があります。これにより、1時間に数秒しか通信する必要のないデバイスに、オンタイムが大幅に増加し、したがって電力要件が追加されます。
精度。内部クロックは正確ではなく、ノイズの影響を受ける可能性があります。
温度に依存しない精度。典型的なオシレーターは大きく異なります。低温または高温のアプリケーション、または温度が大幅に変化する場合、特殊な温度補償発振器が必要になる場合があります。
速度。内部発振器がICの最高速度に到達しない場合があります。そのために外部のものが必要になる場合があります。
電圧。内部タイマーの速度は、実行中の電圧に依存する場合があります。
複数のクロックが必要です。一部のアプリケーションでは、発振器を共有する必要があります。
内部クロックを簡単に使用できない特殊なアプリケーション。内部時計を分周することは、時間管理アプリケーションのために安価な31 kHzの時計用クリスタルを投げるよりも難しいかもしれません。
私の頭の上では、arduinoが使用するATMEGA 328は、最大速度のために5Vの外部水晶を必要とします。リリーパッドバージョンは、3.3vに制限されているため、内部発振器で8 MHzで動作します。MSP430 Value Lineラウンチパッドは、3Vで10 MHZ、2.5Vで8 MHZに制限されています。
周波数安定性は、外部の方が高くなります。したがって、mcu freqに実際に依存するアプリケーションがある場合は、外部のアプリケーションを使用する必要があります。
しかし、ほとんどの最新のmcu:sには非常に安定した内部oscがあります。したがって、これは数年前には大きな問題であったと思います。また、内部のものをトリミングし、温度ドリフト(など)を補正する方法が増えています。
一方、あなたが同期することを確実にする他の方法があります、いくつかの国ではパワーネットの周波数安定性は50Hz±0.01Hzであり、スウェーデンのような他の場所は実際に±0.001Hzであり、私はこれを使用して維持するプロジェクトを見てきました同期するもの。そして、あなたはもはやmcu freqに依存しなくなり、内部のものを使用できます。しかし、これは少しトピックです:)
実際、1%ではUARTに十分ではないシナリオに遭遇しました。
Teensy ++ v1.0マイクロコントローラ開発ボードについて聞いたことがある人は、ひどく敏感なUARTを持っています。ホストボーを115200に設定しましたが、115200に設定しましたが、長い間データを正しく読み取れなかった理由を把握できませんでした。ホストが114300ボーに近い速度で送信していたことがわかりました。(115200-114300)/ 115200 =〜0.9%のエラー。2つの異なるMCUで試してみましたが、うまくいきました。
ポイントは、アプリケーションに関係なく、クロック周波数の精度を高めることが利点である場合、チップに必要な駆動回路がない場合は、外部共振器、水晶、または発振器を使用する必要があることです。
PS UARTハードウェア上でどのような低レベルの設計選択を行ったのか、それを非常に敏感にしている人がいるのでしょうか?
外部水晶振動子は、内部クロックよりも正確であり、正確なタイミングが必要な場合に使用する必要があります。時々お金を節約するために、デザイナーは内部のものを使用します。