CAN通信


ECU1 (電子制御ユニット1、SW-OFF)

@ビットレート:125KBPS
Aメッセージ (アドレスのこと):0x00〜0x0f
B500mSごとにデータ・フレーム (メッセージ:0x13、データ:ADデータの上位、ADデータの下位、 0x00と0x80の交互の3個) を送信
C常時、リモート・フレーム (メッセージ:0x10) を送信
D受信はメッセージのビット3〜0が3の場合、ADデータの上位、ADデータの下位、 0x00と0x80の交互の3個を受け取り、ADデータはRS-232Cに出力し、 0x00と0x80の交互はLED1に出力 (点滅)


ECU2 (電子制御ユニット2、SW-ON)

@ビットレート:125KBPS
Aメッセージ (アドレスのこと):0x10〜0x1f
B500mSごとにデータ・フレーム (メッセージ:0x03、データ:ADデータの上位、ADデータの下位、 0x00と0x80の交互の3個) を送信
C常時、リモート・フレーム (メッセージ:0x00) を送信
D受信はメッセージのビット3〜0が3の場合、ADデータの上位、ADデータの下位、 0x00と0x80の交互の3個を受け取り、ADデータはRS-232Cに出力し、 0x00と0x80の交互はLED1に出力 (点滅)


上記の仕様で通信をしてます。
T. 送信側のパイロットランプ (LED0、点滅) と受信側の受信結果 (LED1) が同期して点滅 します。
U. RS-232Cには相手側の電源電圧が送られてきます。
V. エラーの場合、一回はICが再送しますが、ソフトでも三回再送するようにしてます。 しかし、実験ではエラーは発生しませんでした。
W. 送り先メッセージ (アドレス) が無い場合はTECが0x80になるの検知して抜けてます。
X. TX0RTS, TX1RTS, TX2RTS は入力ポートとして利用できます。 (プルアップ付き)
Y. RX0BF, RX1BF は出力ポートとして利用できます。


上記の実験はAVR (回路図1 AVR使用) でしました。
CPU基板をAKI-H8/3052F (システムクロック:25MHz) に変え、MCP2515は20MHzの水晶を付けて 実験してみました。 (回路図2 H8使用、相手側のCPU基板はAVR)
受信ができない場合が有ります。上記のCをはずすと正常に動作します。という事は、 H8/3052Fの方が遅いという事です。
ちなみに、受信割り込み端子をシンクロで見るとローの期間が、 AVRは約100n、H8は約200nでした
水晶の違い(AVR:20MHz、H8:25MHz) も考慮して比較すると、 AVRの方がH8より2倍以上早いという事です。


CAN_kairo.gif

回路図1 AVR使用



CAN_kairo_8.gif

回路図2 H8使用


真空管
戻る