こんにちは、ソラです。
最近のマイコンは小さくなって、やれることが多くなってきていますね。
技術の進歩はすごいですね。
その分、マニュアルのページ数も膨大になっています。
全てを読んで理解する人もいると思いますが、私には無理ですね。
はじめに
さて、今回は、マイコンの初期設定を楽にしてくれるツールと その落とし穴について紹介します。
クロックを設定したり、機能を有効にしたり、ポートの設定をしたりと レジスタを一つ一つ設定していくのは大変です。
ただ最近では、その初期設定を手助けしてくれるものがあります。
ルネサスのスマート・コンフィグレータです。
まずは簡単にこちらの機能について紹介したいと思います。
スマートコンフィグレータの設定
今回は、I2C通信とCAN通信ができるように、スマートコンフィグレータで マイコンの初期設定をします。
I2C通信はすべてスマートコンフィグレータで設定します。
CAN通信は、ポート設定部分しかサポートされていませんので、そこだけ設定します。
GUIで行えるので、わかりやすいです。



設定したいものを選択し、コード生成ボタンでソースコードが生成されます。
※詳細の使い方などは、ルネサスのサイトを確認してください。
イメージ図
スマートコンフィグレータの設定、出力イメージは以下です。

出力コード
以下は実際に出力されるコードです。
必要な処理(CAN処理、I2C処理)を追加していきます。

落とし穴1つ目
このまま実行するとCANが動きません。
生成されたR_Pins_Create()がありますが、どこからも呼ばれていません。
そのため、CANのポート設定ができていませんでした。
そこで、以下のように修正します。

CANが動作するようになりました。
落とし穴2つ目
今度はI2Cの通信がうまくいきません。
R_Pins_Create()の中には、I2Cのポート設定も含まれています。
R_Pins_Create()のI2Cのポート設定が正しい場合は、問題なく動作します。
しかし、今回生成したR_Pins_Create()では、意図した設定となっていませんでした。
R_Pins_Create()に出力されるI2Cのポート設定は、ポートを有効にする設定のみ。
I2C機能で出力される設定は、ポートの有効に対してどのように通信するかの設定も含む。
そのため、I2Cのポートの設定が有効にするだけの状態に上書きされてしまい、おかしくなってしまったのです。
解決するためには、 後から正しい設定で上書きされるようにR_Pins_Create()を先に呼んでください。

または、R_Pins_Create()の必要な設定(今回はCANの設定)のみ、使用するように変更してください。
※予期せぬエラーを回避するためには、必要なものだけをコピーして使用する、こちらの方法を推奨します。

これでようやく、CANとI2Cの両方の機能が使えるようになりました。
あとがき
私は、I2Cの通信が動かない理由がなかなか分からず、解決までに時間が掛かってしまいました。
同じように、はまらないように気を付けてください。
自動で作成してくれるのは、ありがたいですが、
最終的には、生成されたものとマニュアルを見て確認する必要があるのではないでしょうか。
関連記事
-
-
第1回 Visual C++で作成したDLL内のクラスをC#で利用する方法
こんにちは、ILCです。 Visual C++ (以下 VC++)で作成されたDynamic...
公開日:2024.01.19 更新日:2024.01.19
tag : Windows
-
第1回 ラズパイを使用したBLE通信 ~ ディスプレイ、キーボード、マウスを接続しないで設定 前編 ~
こんにちは、GTです。よろしくお願いします。 最近業務でラズパイのBluetooth機能を使...
公開日:2021.12.24 更新日:2021.12.24
tag : Bluetooth Raspberry Pi
-
-
【新機能探訪】Android 13から導入された『アプリごとの言語設定』
こんにちは、KNSKです。よろしくお願いします。 今回は Android13の新機能である『...
公開日:2022.12.09 更新日:2022.12.09
tag : スマートデバイス
-
第3回 ラズパイを使用したBLE通信 ~ A/D変換・D/A変換を用いた入出力編 ~
こんにちは、GTです。よろしくお願いします。 第3回の今回は、ラズパイの入出力についてご紹介...
公開日:2023.02.24 更新日:2023.02.24
tag : Bluetooth BLE Raspberry Pi