ソフトウェアでCANプロトコルレイヤーを実装する
バックグラウンド 私は、以下の控えめなマイクロコントローラー仕様を必要とするプロジェクトを開発しています。 8個の12ビット、10kHz ADC 1kBのRAM 48-QFN以下のフットプリント 20kbpsのデイジーチェーン可能な耐ノイズおよびエラー修正通信プロトコル 信号処理の要件はかなり低く、ほとんどはシステムのマスタープロセッサにエクスポートできます。最初の3つの仕様は簡単に満たすことができ、2ドル未満で行うことができます。ただし、通信は非常に電気的にノイズの多い環境で行われるため、LINやI2Cなどのノイズの影響を受けやすいネットワークは存在しません。LINに対するもう1つの議論は、5Vまたは3.3Vですべてを実行したいということです。LINトランシーバーには12Vが必要なので、センサーボードごとに追加のレギュレーターまたはワイヤが必要になります。私は最初にこのタスクにCANを選択しました。ただし、CANコントローラーにはかなりのコストがかかるため、これをソフトウェアで実行できるかどうか興味があります。 CAN物理層 CAN仕様は、OSIネットワーク参照モデルのデータリンク層と物理層を定義しています。NXP TJA1040 / 50、Maxim MAX3058 / 59、Microchip MCP2551、TI SN65HVD1050などの多くの安価な8ピンIC が物理層を実装するために存在します。D / Aコンバーターまたはオペアンプで物理層を実装することは、不可能ではないにしても困難であるため、これらのICは1ドル程度の価値があり、コストがかかります。 CANデータリンク/プロトコルレイヤー データリンクレイヤーの場合、一部のマイクロコントローラーは、基本的なUART、I2C、およびSPI通信レイヤーにCANプロトコルモジュールを追加します。ただし、これらは基本的なチップよりもかなり高価です。 CANプロトコルモジュールのコストの調査 この主張を実証するために、CANバージョンと非CANバージョンの人気のあるマイクロをいくつか紹介します。 ATmega16-ATMEGA16M1(CAN付き):$ 3.87、ATMEGA168A(CANなし):$ 3.23 dsPIC-DSPIC33FJ64MC802(CAN付き):6.14ドル、DSPIC33FJ64GP202(CANなし):$ 5.48 PIC18-PIC18F2480(CAN付き):6.80ドル、PIC18F24J10(CANなし):2.10ドル Cortex-M3-STM32F103C4T6A(CAN付き):$ 6.50、STM32F100C4T6B(CANなし):$ 2.73 公平を期すために、同等のメモリサイズのマイクロコントローラのみを比較しましたが、多くの非CANバージョンは、より少ないメモリサイズでより少ないコストで利用できます。Microchip MCP2515のような外部CANコントローラーはほぼ2ドルなので、オプションがあればCANをマイクロコントローラーに統合する方が明らかに費用対効果が高くなります。 興味深いことに、ATmegaパーツは、Digikeyの在庫の中で最も安いCAN装備パーツです。 CANプロトコル層の機能 dsPICマイクロコントローラーにあるCANモジュールは次のことを行います。 CANバスモジュールは、プロトコルエンジンとメッセージのバッファリング/制御で構成されています。CANプロトコルエンジンは、CANバスでメッセージを送受信するためのすべての機能を処理します。メッセージは、最初に適切なデータレジスタをロードすることにより送信されます。ステータスとエラーは、適切なレジスタを読み取ることで確認できます。CANバスで検出されたメッセージはエラーがチェックされ、フィルターと照合されて受信レジスタの1つに受信および保存されるかどうかが確認されます。 これはソフトウェアでかなり実行可能と思われます。 質問 ソフトウェアプロトコルレイヤーを使用して、安価なUARTを備えたマイクロコントローラーとCANトランシーバーのみでCAN仕様を実装できますか?もしそうなら、オープンソースの実装は存在しますか? または、CANトランシーバーをUARTで使用してカスタムプロトコルを実装できますか?シングルマスタートポロジでも構いません。カスタムプロトコルでは、調停を正しく行うことが難しいことを理解しています。