Nucleo STM32F446REで自動車ECUとCAN通信するまで(1) 準備編

STM32
スポンサーリンク

自動車ではすっかり一般的となったCAN通信
組み込みではArduinoやRaspberry PiとMCP2515&MCP2551が搭載された基板とでSPI通信を介したCAN通信もお馴染みとなっているところです

しかしながらSPIを2チャンネル駆動できるArduinoは限られており
IoT向けで評判のESP32を用いるのが一番簡単かと思いますが
SPIで一皮噛むところがスマートではないなと思ったりします

今回のコンセプトは

・SPIを使用しないでマイコンから直接CANトランシーバを駆動すること
・CANを2チャンネル駆動できるマイコンを使用すること
・車載ECUとのCAN通信をやりとりすること

として、Arduino互換ボードとして販売されている
STMicroelectronicsのSTM32F446REが搭載されたNucleo-F446REを題材としてCAN通信の構築までを解説します

▲Nucleo-F446REのメリット
・純正Arduinoよりも安い
・高速動作(ARM Cortex-M4、32bit、180MHz、FPU搭載)
・ROM/RAMも十分
・使える機能が豊富
・Arduino互換のピン配(Arduino IDEでも開発可能)

本記事は他のNucleoボード、STM32マイコンにも応用できます
よろしければご覧くださいませ

スポンサーリンク

準備するもの

・開発ボード
 -Nucleo STM32F446RE
・CANトランシーバ
 -3.3Vで動作するもの、または5V用をレベル変換
 -今回は3.3Vで動作可能なTJA1051T/3を使用
・その他
 -USB Mini Type-Bケーブル、ブレッドボード、ジャンパワイヤなど
 -動作確認用にCAN送受信できるデバイスがあるとベター

開発環境のセットアップ

開発環境として下記をインストールします
・IDE:SW4STM32(コーディング、ROM書き込み)
・初期化コード自動生成ツール:STM32CubeMX

初めから他力本願ですが、@KizitoraさんのQiitaの記事が秀逸ですのでそちらを参考にされてください

SW4STM32とCubeMXを用いてNucleo開発環境を整える

ST-Linkドライバインストール

この先はmbedのNucleo-F446REのページを参考に進めます
発売後、一定の期間が経過しているので今後の更新はないように思いますが、もし記事内容が古くなっていた場合は下記URLで最新情報を確認してください

NUCLEO-F446RE | Mbed

上の赤丸をクリックするとmbedのST-Linkドライバ記載ページに飛びます
直リンはこちら

本記事執筆時点(2020/05/03)ではSTSW-LINK009が対象になっています
STSW-LINK009の直リンはこちら

新規の方はアカウントを作成してください
ログイン後、DownloadをクリックするとDLできます

DL後、zipを解凍します
64bitマシンはdpinst_amd64.exe、32bitマシンはdpinst_x86.exeからインストールします
特に選択項目はないので普通に進めていけば大丈夫です

ST-Link Firmwareアップデート

Nucleoは基板上にROM書き込みツールのST-Linkが載っていますが
Firmwareが古いとUSB経由のCOM通信ができないのでアップデートします

mbedページからですと下の赤丸をクリックです
直リンはこちら

赤枠をクリックするとSTのダウンロードページに飛べます
直リンはこちら

ログイン後、DownloadをクリックするとDLできます

▲ここで少し補足
Firmware UpdaterはSTSW-LINK007なんですが
先に記載したドライバはSTSW-LINK009となっていて
ぱっと見では新しそうな009だけでいいのでは?と思うかもしれませんが
007と009の中身は全然別物なんですよね
ややこしいネーミングだ…

さて、DL後、zipを解凍します
下記のパスにあるST-LinkUpgrade.exeを起動します

もしかするとウイルスソフトが反応するかもしれませんが構わず実行します
起動したらDevice Connectをクリックします
(画像は既にUpgradeを済ませているので最新Versionになっています)

Change Typeのチェックはせずに右下のYesを押してFirmware Updateが終わるまで待ちます
正常に終わるとUpgrage is successfulと表示されます

JREのインストール

STM32CubeMXを動作させるためにはJRE(Java Runtime Environment)のインストールが必要です
下記URLからインストールします

https://java.com/ja/download/manual.jsp

64bitマシンの場合は、Windows オフライン(64bit)を選択してください
それ以外でも動作はしますが、起動時に毎回32bit版を検出したというワーニングメッセージが出てしまいます

これで下準備は完了となります
お疲れさまでした

ここ以降はこれまでにインストールしたツールを使用して
コーディングに入るまでの環境構築の作業に入っていきます

STM32CubeMXのプロジェクト作成

ここからはSTM32CubeMXを使用してCAN送受信をするための初期設定をしていきます
行程も多いので、以降は部分的に箇条書き風味で進めます

STM32CubeMXを起動し、File→New Projectを選択

ここで対象のMPUを選択しますが、今回はNucleoなので基板を選択する方がデフォルト設定が多くて便利です
左上の検索窓でF446REと入力して絞り込みます
Boardの列でNucleo-F446REと表示されているところをクリック

その後、右上のStart Projectをクリック

下記メッセージが出るのでYesをクリック

ROM書き込み、USB COM、LED、User Buttonなど、基本的なところが使用可能な状態となります

これでNucleo-F446RE用のプロジェクトの土台作成は完了です
お疲れさまでした

この先は
Nucleo STM32F446REで自動車ECUとCAN通信するまで(2) に続きます

コメント

タイトルとURLをコピーしました