私は組み込みプログラミングの世界に不慣れで、I2C、USB、UART、CAN などを使用したマイクロコントローラーとのインターフェイスに関する情報を探しています。このテーマに関する良いリンク、本、チュートリアルを知っている人はいますか? 私はこのテーマについてはまったくの初心者なので、できる限り基本的なことを好みます。
3 に答える
あなたはすでにデスクトップ開発者なので、おそらく途中でジャンプすることができます。使用するコントローラーのユーザーマニュアルをダウンロードしてください。より単純な周辺機器の1つについては、メーカーなどのサイトからサンプルコードを入手してください。UARTが適しています。
開発ボードと、ボードをサポートするEclipse / Crossworks /その他の開発システムを入手して、何かを機能させます-フラッシュLED、UARTエコーなど。最初にマルチタスカーと割り込みドライバーを使用しようとしないでください。できるだけ少ないコード行でUARTをポーリングするだけです。理由-複雑なコードによる複雑さを伴わずに、1行のコードをコンパイル、リンク、ダウンロード、および実行するための開発セットアップを取得すること自体がかなりの演習であるためです。コントローラのコードを効果的に記述/デバッグする前に、最初にデバッグする開発セットアップとハードウェアがあります。オンボードLEDを点滅させるだけの「点滅する」コードを取得するだけで、大きな前進になります:)
ほとんどのコントローラーには、uCメーカーのサイトにあるか、そこからリンクされている専用のグループ/ブログがあります。それらに参加してください。
これに効率的に取り組みたい場合は、ボードを入手して、何かを実行するようにしてください。これ以上の方法はありません。LEDを点滅させるか、UARTを使用して一連の文字を発行できるようになったら、レースに出かけます:)
単純な「点滅」またはUARTポーリング関数の開発は無駄になりません。後で、より複雑なコードがある場合は、それらを引き続き使用できます。LEDの点滅(遅延ループがOSスリープに置き換えられた状態)は、コードが実行されていることを示す非常に優れた指標であり、提供されたシステムでは常にコードを保持しています。UARTポーリングも便利です。割り込みなしで実行されるため、データ/プリフェッチ/任意の中止ベクトルから呼び出して、進行中の開発中に表示される多くの「重大なエラー-システム停止」メッセージを発行できます:)
ウィキペディアは、これらの各メカニズムに関する基礎を学ぶのに最適な出発点です。
理解したら、これらの機能のいくつかを備えたマイクロコントローラーの実際のデータシートとユーザーズ ガイドを参照することをお勧めします。たとえば、この16 ビット PIC には、専用の UART、I2C、および SPI バスがあります。基礎となる原則についての新しい知識を身につけて、ドキュメントの関連セクションを見ると、それらを使用するシステムを設計する方法が見えてきます。
次のステップは、そのようなデバイス用の開発ボードを購入し、サンプル コード (大量にある) を使用して、データリンクを自分でコーディングすることです。ちなみに、すべての PC は端末から RS-232 プロトコルを使用して送信できるため、UART は確かにテストが最も簡単です。この場合、比較的簡単に文字を送受信するループバックをコーディングできます。ただし、I2C と SPI の場合、プロトコルを使用して送信できるようにするには、専用のホスト ドングルを購入する必要があると思います。
CAN を使用してデータリンクを実装していないため、具体的にコメントすることはできませんが、簡単な Google 検索を行っただけで、それをサポートする PIC ファミリがあるため、同様のアプローチに従うことができると確信しています。USBに関しては、私はそれを少し黒魔術だと考えているので、他の人に答えてもらいます-ただし、PIC用のUSBソフトウェアスタックを入手できることは知っているので、同様のアプローチがおそらく続く可能性があります.
最後に、マイクロコントローラの例として PIC についてのみ言及しました。一般的なマイクロコントローラーに慣れていない場合は、Microchip、TI、Atmel などの企業の主要なマイクロコントローラー ファミリがすべて同じ設計に従っていることにすぐに気付くでしょう。最も快適です(または、Martin Jamesが示唆するように、最も不快ではありません!).
ほとんどの場合、使用するマイクロコントローラのデータ シートまたはリファレンス マニュアルが必要です。各ベンダーはこれらのインターフェイスをさまざまな方法で実装するため、それが低レベルのプログラミング情報の唯一の決定的な情報源です。
I 2 C と UART は比較的単純で、標準の上位レベルのプロトコル スタックはありません。それはあなたまたはあなたが接続している可能性のあるデバイスによって定義されます. マイクロコントローラーのベンダーは、ほぼ確実にサンプル コードやアプリケーション ノートを提供しています。
CAN はより複雑で、通常、CAN ネットワークは、CANopen、NMEA2000、DeviceNet、IEC J1939 など、さまざまなアプリケーション ドメイン用にいくつか存在する高レベルのアプリケーション プロトコルを使用します。ほとんどの場合、サードパーティ ライブラリは、アプリケーション プロトコル スタックを実装する最もコスト効果の高い方法ですが、ネットワークが実装するデバイスだけで構成されている場合、その複雑さは必要ない場合があります。繰り返しになりますが、マイクロコントローラーのベンダーは例を持っている可能性があります。
USB は、 USB インプリメンターズ フォーラムによって非常に強力に定義されています。、およびプロトコルスタックは自明ではありません。オンチップ USB インターフェイスを持つほとんどのマイクロコントローラー ベンダーは、少なくともデバイス クラスの USB のサンプル コードとアプリケーション ノートを提供します。USB ホスト スタックはより複雑であり、サード パーティ製ライブラリ (比較的高価です) を使用するのが市場への最短の方法です。さもなければ USB IF に支払わなければならない料金は、独自のホスト スタックを作成するコストを下げることにはなりません。USB デバイス インターフェイスの場合でも、USB IF から $2000 で USB ベンダー ID が厳密に必要になります。一部のマイクロコントローラーおよびライブラリ ベンダーは、製品 ID の定義されたサブセットに対してベンダー ID を使用することをほとんどまたは無料で許可しますが、ボリュームに関しては、おそらく重要な顧客である必要があります。内部実験の場合は、公式の VID がなくても済む可能性があります。