どのマイクロコントローラーをマスター/スレーブにする必要がありますか?


8

朝目覚めるアラームをデザインしています。システムは3つのサブシステムで構成されています。

  1. (S1) RGB 7セグメント管理。各桁に1つと「:」に1つずつ、5µCで構成されています。µCの数が多いのは、RGB LEDではICを使用せず、トランジスタのみを使用しているためです。
  2. (S2)センサーと入力の管理。設定されたアラームと現在時刻の距離センサーを管理する1つのµC。設定用のスイッチ。
  3. (S3)通信および音声ファイル。さらなるプロジェクトのためにUARTのBluetoothモジュールと通信する1つのµCは、正確なクロックを持ち、オーディオ再生を管理するRTCクリスタルを得ました。(私はまだオーディオに取り組みませんでした)

通常の実行中、S2は入力を読み取り、処理のためにS3に送信します。次に、S3はS1に何を表示する必要があるかを送信します。

これらすべてのサブシステムを互いに通信させたいので、I2Cバスの使用を選択します。しかし、ここに私の質問が来ます:

  • どのµCがマスターになる必要がありますか?

一方で、S3はシステムの中心ですが、他方で、S2はS3よりも多くのメッセージを送信できます。だれが主人/奴隷になるかについて私が未定なのはそのためです。

  • 誰がスレーブ/マスターになるかを決定するルールはありますか?良い選択をするためにどのような質問をするべきですか?(一般的に、この特定のシステムではありません)

14
確かに1つの仕事をするのに、基本的なクロック/アラームに5つのマイクロコントローラーを使用するのはなぜですか?
アンディ別名

2
I2Cマスターを実装する「システムオーケストレーター」用の別のuCがあります。それは皮肉な発言ではありません、私は本当にそれを意味します。過剰なuCの心配がないように見えるので、周辺機器とコントロールを適切に分離できます。
Neil_UK 2017年

1
@Andyaka各桁には異なる色(3 * 5 PWM)があり、各セグメントはGPIOでオン/オフを切り替える必要があります。MSP430をµCとして使用して、20ピンと4 PWMのみを使用しています。(100を超えるので、在庫を使用する必要があります^^ ')
M.Ferru

7
@Andyaka実際には別の理由があります。私はEE学校を出たばかりの趣味です。私はそのようなことは決してしないので、数µCのシステム間でまともな通信をセットアップする方法を学びたいです。µCを1つだけ使用する場合(もちろん、これはより良い選択です)、「新しいこと」を学ぶことはありません。
M.Ferru 2017年

2
@ M.Ferru多くのことがそのような選択に影響を与えます。心配なのは、設計を完全に「やり直す」前に許容できる将来の「不明」に対する不確実性とリスクの大きさです。もう1つは、タイミングプロセスと、一部がどれほど重要であるかです。たとえば、タイミングの制約が厳しい長い転送をサポートする必要がある場合、その事実だけでは、適切に機能するユーザーインターフェイスが複雑になる可能性があります。しかし、それはあなたが今知っているすべての詳細を書き出すこと、そしてあなたがそれについて考えることができるすべてが来て、それらの詳細を整理する最善の方法を決定することです。
jonk

回答:


7

[I 2 C]スレーブ/マスターを決定するルールはありますか?

はい。I 2 C マスターのみが送信を開始できます。I 2 Cスレーブは、次にマスターによってポーリングされるまで、何かについて通知することはできません(追加の割り込み信号を追加しない限り、システム全体が複雑になります)。

デバイスがマスターとスレーブの間で切り替わる(まれに使用される)機能を無視すると、I 2 Cマスターは、システム全体について十分な知識を持ち、すべてのI 2 C と通信する方法を知る必要がありますそのバスの奴隷。

良い選択をするためにどのような質問をするべきですか?(一般的に、この特定のシステムではありません)

システムのどのMCUが知っているかを考えます。

  • システム全体の状態に関するほとんどの場合、スレーブにI 2 Cコマンドを送信するタイミングを決定できます。
  • 各I 2 Cコマンドを各スレーブに送信する必要があります。
  • 各I 2 Cスレーブから収集する必要があるデータ。
  • どのI 2 Cデバイスが着信コマンドに純粋に応答するか(これは「S1」MCUに適用されます-それらがスレーブになるのに最も適していることは明らかです)。

どの MCUがI 2 Cマスターになるかに関係なく、システムアーキテクチャ全体を設計し、各デバイスに送信する必要があるコマンドと、応答を受信する必要がある速さを考慮する必要があります。明白な「マスター」があり、すべてのシステム状態を知っているシステムを設計してみてください。そうすれば、それもI 2 Cマスターデバイスになる可能性があります。

あなたが言った:

S3はシステムの中心ですが、S2はS3よりも多くのメッセージを送信できます。

「S2」が誰にメッセージ送信しているかは不明です。誰かメッセージを積極的に送信する必要がありますか?または、「S2」がI 2 Cマスターとして「S3」によってポーリングされ、「S2」が収集するセンサーおよびスイッチ情報を受信できますか?「S2」が「S3」によってポーリングできる場合、説明に基づいて、「S3」MCUがI 2 Cマスターである可能性があることは明らかであるように見えます。

さらに別の MCU(「S10」と呼ぶことにします)をI 2 Cマスターに追加することに注意します。これは、「S10」MCUは、「S3」がすべて知っている(?)全体的なシステム状態の知識を収集するためだけに、大量のポーリングを実行する必要があるためです。それは不必要な重複のようです。

したがって、「S3」がRAMスペース、フラッシュスペース、またはCPUサイクルなどの制限に達したためにジョブを実行できない場合を除き、「S3」にI 2 Cマスターを追加させるのではなく、I 2 Cマスターにすることでシステムを制御する方が簡単です。追加の「S10」コントローラー。

一方、複雑さを気にしない場合は、「S10」コントローラ全体を追加すると、システムのモジュール性(セグメンテーション)が向上します。「S3」は、Bluetoothとオーディオのみを実行するため、他には何も実行しません。これにより、「S3」のコードを変更する必要なく、新しい(予期しない)機能/ MCUを将来追加するための柔軟性が追加されます。


1

S1はI 2 Cスレーブでなければなりません。S2またはS3は、マスターにとって賢明な選択です。しかし、それは元の質問で述べられたことを単に言い直しているだけです。

多くの場合、最も多様な入力を処理するMCUがマスターの良い候補です。あなたの場合、それはS2(さまざまなユーザーボタン、RTC)またはS3(Bluetoothからのさまざまなコマンド)です。どちらを使用するかを決定できない場合は、より大きなコントローラーを入手して、S2とS3の両方の機能を1つのMCUに組み込むことができます。このアプローチにより、柔軟性が高まります。


0

システム内のすべてのマイクロコントローラーがマスターになることができます。ただし、一部はこの機能により適しています。他の人々が言っ​​たように、より多くの情報を持つマイクロコントローラーはマスターでなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.