CANバスを駆動するには、CAN対応のマイクロコントローラーで十分ですか?


45

最近では、マイクロコントローラーに組み込まれている多くのCANモジュールがあります。PIC18F2480はその一例です。そのマイクロコントローラー(ビルトインCAN)は、CANバスを単独で駆動できますか、または外部CANトランシーバー/コントローラーが必要ですか?

CANにはソフトウェア層とハードウェア層の両方があり、見た目ではこれらのCAN対応マイクロコントローラーはソフトウェアだけを持っているように見えますが、CANバスをそのまま駆動できるかできないとは述べていません。

CANバスを介して6つ以上のマイクロコントローラーを接続したいと考えています。それらすべてのトランシーバーが必要かどうか、または内蔵のものがソフトウェアとハ​​ードウェアの観点から通信を処理できるかどうかを知りたいです。

必要な終端抵抗とその他の小さなディスクリートコンポーネント(キャップ​​、抵抗など)があると仮定します。

回答:


55

これは非常に良い質問です。一般的なルールとして、CANはすべてのノードにトランシーバーを必要とします。

ここに画像の説明を入力してください

ただし、特定の状況では、実際にトランシーバーなしで逃げることができます!それらの状況は次のとおりです。

  • 短いバス長(1メートル未満)
  • すべてのマイクロコントローラーは、同じPCBまたはPCBのスタック上にあることが望ましい。
  • ビットレートが低い
  • 環境は電気的にうるさくない

これらは難しいルールではありません。本当に短いバス(10cm)がある場合、最大ビットレート(1MB / s)で逃げることができます。

これを実現するには、トランシーバーの機能について少し知る必要があります。ほとんどのトランシーバーと同様に、バスにハイまたはローを出力できます(1と0を表します)が、0は1を支配できます。 0と言っている場合、0が勝ちます。ダイオードを使用するだけで同じ状況を再現できます。

シンプルなCAN

SeimensのアプリケーションノートAP2921を参照してください:トランシーバなしのCAN経由のオンボード通信

しかし、さらに興味深いものがあります。PICは実際に、トランシーバーなしのCANのハードウェアサポートを備えています。

CIOCONレジスタ

CAN TXピンは、トランシーバーとまったく同じように動作するように構成できます。これは、ダイオードなしでCANバスを配線できることを意味します。ただし、まだ抵抗が必要です。

よりシンプルなCAN


2
絶対に素晴らしい返信。返信に時間を割いてくださったことに感謝しています。たくさんの電気ノイズがあるかもしれないので、私はトランシーバーで行かなければならないかもしれません、そして、すべてが「箱」に収容されるけれども、彼らは複数のPCBにあります。再度、感謝します!
efox29

@ efox29-どういたしまして。可能であれば、トランシーバーを使用することをお勧めします。
Rocketmagnet

このトランシーバーのない設定は私にとって初めてのものであり、長距離にわたってコントローラーの単純なネットワークを設定するのに非常に興味深いようです。いいね!
0x6d64

@ 0x6d64-長く必要な場合は、低ビットレートを使用し、スルーレートでエッジを制限することを忘れないでください。
Rocketmagnet

1
バス上のすべてのデバイスが同じ構成を使用し、単線CANバスを使用する場合、これは機能することに注意してください。実際に「実際の」ISO CANであり、2線式バスを使用する他のものとインターフェースを取りたい場合、このモードは機能しません。
ジョンワット

10

LPC11Cxxのマイクロコントローラのファミリーは、(ARMのCortex-M0ベースの)オンチップCANトランシーバを含みます。


3
はい。右。OPはPIC18について尋ねます。これはあまり役に立ちません。
フェデリコルッソ

4
@FedericoRussoはPIC18で例を示し、timrorrは組み込みドライバーを使用したソリューションを示しました。それの何がいけないの?
クラバッキオ

8
@FedericoRusso-そんなにアナルにならないでください。この答えは非常に興味深いです。
Rocketmagnet

1
@Rocketmagnet:だからQ:「どうやってXをやるの?」A:「Y」。結局大丈夫ですか?(あなた自身の答えから)
フェデリコルッソ

2
@FedericoRusso-質問がOPの満足度に十分に答えられており、誰かが興味深い関連情報に言及している場合、確かに、なぜですか?
Rocketmagnet

9

はい、トランシーバーが必要です。マイクロのCANピンは受信と送信です。CANバス自体は、HIGHおよびLOWと呼ばれる2本のワイヤで差動信号を伝送するツイストペアを使用します。

トランシーバーの仕事の1つは、TXピンにあるロジックレベルを取得してCANバス信号に変換することです。

  • 論理「1」はバスを駆動しないことで表されるため、HIGHおよびLOWラインは2.5Vに「フロート」します-CAN用語では「リセッシブビット」と呼ばれます。
  • ロジック '0'は、HIGHラインをHIGHに、LOWラインをLOWに駆動することで表されます。送信される劣性ビットをオーバーライドするため、「ドミナントビット」と呼ばれます。

もう1つは、バスにあるものを取得し、それをロジックレベルに戻してRXピンからマイクロに送り返すことです。


8

CPUとCANバスの間にCANトランシーバーチップが必要です。MCP2551を確認してください。

2017年8月17日更新:

私は今、Microchip Mastersカンファレンスに参加しています。Microchipのエンジニアから、At​​melの買収によって生まれた新しい部品の1つはMCP2551よりも安価で優れていると言われました。


1
Microchipは現在、2551よりも2561を推奨しています。NXPには興味深いCANチップもいくつかあります。ほとんどのMCUにはトランシーバーが必要です。
ルートヴィヒシュライアー

2

アナログデバイスには、差動アンプを使用したCANトランシーバー回路の例があります。
私はこれを試したことはありません、ただ知っています。オペアンプで実装できるかどうかにも興味があります

アナログの回路

専用のIC CANトランシーバーを使用する利点は、アービトレーションを処理するため、バスへの干渉を心配する必要がないことです。バスのみを監視しており、障害が発生する環境ではない場合、回路は正常です。mcp2551は非常に人気がありますが、インターフェイスチップには多くのオプションがあります。

新しい進化は、電圧調整、電力モード、バスからのESD保護を含むシステムベースタイプのチップです。

前述のtimorrのように、NXPのLCP11C24は、プロセッサにCANトランシーバーが含まれているという点で独特です。これを備えたデモボードはわずか19ドルです。もう1つの低コストソリューションは、9.38ドルのサイプレスPSoC5デモボード、CY8CKIT-059を使用することです。PSoC5にはCANコントローラーがありません。さらにもう1つ、コントローラーはFPGAのようなユニバーサルブロックに実装されています。コントローラのレジスタはIDEのGUIを介して設定されるため、フィルタリングとR&Dは非常に簡単です。

データシートを熟読するときに見つけた重要な方法は、mcu TTLにCAN-TxおよびCAN-Rxというラベルが付いているのに対し、バスへのトランシーバーのデータラインには常にCAN-HおよびCAN-Lというラベルが付いています。TxRxがバスに接続されていることが示されている他の回答の図は嫌いです。これは慣習に反し、混乱を招きます。

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