STM32G4 FD-CAN in Normal Mode

はじめに

車載ネットワークの主流バスとしてCAN(Controller Area Network)とFD-CAN(FDCAN/CANFD/CAN-FD/CAN with Flexible Data rate)、IEEE11898で規格化されているCANの通信速度は最大で1Mbpsであり,同じくCAN FDでは最大5Mbps(ただし,IEEEの規格上では最大2Mbps)となっている。とはいえ、8MbpsはFD-CANの通信速度としても可能だという。今後CANはFD-CANに置き換えられると予想される。STM32ファミリーには、STM32G0、STM32G4、STM32H7、STM32L5、STM32MP1シリーズはFD-CANコントローラ内蔵で、別途FD-CANトランシーバだけを用意すると良い。今回はSTM32G474とMicrochip製FD-CANトランシーバのMCP2562FDを使ってFD-CANの送受信を確かめていこう。

テスト環境

・IDE環境 STM32CubeIDE 1.12.0 @UBUNTU 22.04(iMACの画面は大きく、スクリーンショットの字は小さく写るため予めご容赦ください)
・マイコン/評価ボード STM32G474(FD-CAN1&FD-CAN2) / NUCLEO-G474RE(MB1367C) x 1pcs
・FD-CANトランシーバ MCP2562FD x 2pcs
・差動線FD-CAN_H、FD-CAN_Lを跨ぐ抵抗器  120R x 2pcs
・デカップリング用コンデンサ  0.1uF x 4pcs
・差動波形観察 オシロスコープ

確認内容

・FD-CAN1、FD-CAN2と往復ピンポン送受信確立
・差動信号の波形、データスループット=2Mbps

配線関連

FD-CAN周辺の回路図は以下のとおり掲載しておく。

stm32g474-mcp2562fd-fdcan-schematic
stm32g474-mcp2562fd-fdcan-schematic

実の配線済みテストセットの写真を以下のとおり掲載しておく。

stm32g4-fdcan-test-connection
stm32g4-fdcan-test-connection

マイコン設定

STM32CubeIDEのioc/Pinout & Configuration/Sys Mode and Configuration、Pinout View、ioc/Clock Configrationを以下のとおり掲載しておく。

stm32g4-fdcan-ioc
stm32g4-fdcan-ioc

stm32g4-fdcan-clock
stm32g4-fdcan-clock

FD-CAN設定

FD-CAN関連パラメータの値は、唯一ではなくスループットとサンプリングポイントの兼ね合いを見ながら、STM32CubeIDEが受け入れるまで調整していく。実に使用したパラメータは、以下のとおり掲載しておく。パラメータの計算また調整は、KVASER(オンライン計算サイト)を利用すると便利になる。ただし、Frequency=FD-CANクロック周波数、上図から抽出して、Tolerance=FD-CANクロック周波数公差、本文ではHSIによる値でSTM32G474のデータシートから抽出して、Node Delay= FD-CANトランシーバ遅延(厳密ではない)、本文ではMCP2562FDのデータシートから予め抽出しておく。

stm32g474-fdcan-parameters
stm32g474-fdcan-parameters

決まったパラメータの値は、以下のとおり入力しておく。Nominal Field、Data Fieldに関わるパラメータは別々、FD-CAN2とFD-CAN1のパラメータは同じなので、コピペして良い。

stm32g4-fdcan-parameter
stm32g4-fdcan-parameter

stm32g4-fdcan-fdcan1-interrupt
stm32g4-fdcan-fdcan1-interrupt

リポジトリ

STM32プロジェクトはリポジトリとして、github.com/soarbear/stm32g4-fdcanに公開済み。

送受信データ

FD-CAN2においてFD-CAN1から送信した32バイトデータを受信して、それらのデータに1を足して、FD-CAN1に返す。FD-CAN1においてFD-CAN2から送信した32バイトデータを受信して、それらのデータに1を足して、FD-CAN1に返す。このようにやり取りを繰り返す。受信したデータは以下のとおり掲載しておく。NUCLEOにST-LINKデバッガはオンボードなので、別途ST-LINKデバッガ、シリアルケーブル使わなくても、SWV ITM ConsoleつまりSTM32CubeIDEコンソールにデータを表示させることにした。それに伴ってSWV/SWOの設定は必要になる。SWV/SWOの設定については、本サイトの関連記事「SWO/SWV with STM32CubeIDE」をご参考にしてください。

stm32g4-fdcan-normalMode-rxData
stm32g4-fdcan-normalMode-rxData

差動波形

FD-CAN_H、FD-CAN_Lの差動波形は以下のとおり掲載しておく。

stm32g474-fdcan-wave
stm32g474-fdcan-wave

データビットタイムは0.5usと確認できたので、データフィールドのスループットは2Mbpsと推定される。また、残件事項として他のパラメータAuto Retransmission、Transmit Pauseはとりあえず、Disableにしておいたので、他の機会で動作確認することにする。

参考資料

・「車載ネットワーク入門」、インターフェース2021年12月号
・「NUCLEO-G4 User Manual」、ST Electronics
・「MCP2561/2FD フレキシブル データレート対応高速 CAN トランシーバ」、MICROCHIP
・「Datasheet – STM32G474xB STM32G474xC STM32G474xE」、ST Electronics

あとがき

FD-CAN規格のパラメータは多く、開発に当たって決して短時間で決められるものではない、設計要件に合わせて実験を重ねて確認していく必要がある。

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア