Arduino用のLCDシールドをSTM32F103C8ボードで動かして見ました
Arduino用の廉価なLCDシールドをSTM32F103C8のボードで動かす方法を検討して
対応しました。コードの開発にはArduino用のライブラリをなるべく利用する為に
ラッパーを用意して、それでCPUの違いを吸収する様にしました。その為に
コード作成にかなりの時間がかかりましたが、最終的にやっと目標の結果が得られる
様になりました。以下がその検討内容です。
<Arduino LCD shield の概要>
今回STM32F103C8ボードでの動作を検討したArduino用のLCDシールドは、
2.4/2.8/3.5インチで320x240もしくは480x320のカラーLCDで4線式の
タッチセンサーとSDのカードリーダを装備したもので次の様なものでした。
1.LCDの解像度は 2.4/2.8 : 320x240, 3.5 : 480x320 16bitsカラー
2.LCDのコントローラは8bitsパラレルバス制御方式
3.SPI制御方式のマイクロSDカードスロットを保有
4.4線式タッチスクリーンを保有
5.電源電圧は5V
6.駆動ライブラリ雛形は MCUFRIEND_kbv (改造したものを利用)
[動作状況]
<開発環境>
開発環境としては、Eclipse関連の操作に戸惑いがあったので、Eclipseを
利用しないものとして次のものに変更しました。
<テスト内容>
今回のテストは次の様な内容で、STM32F103C8ボード用に、Arduinoの
ライブラリを移植してこのCPUボード上でArduino のLCDシールドを利用
する時の可能性と動作を確認するものでした。
[目的と結果]
テストの確認目標は次のものでした。
1.Arduino用のLCDシールドを使用する時の問題点と接続方法を確認
2.LCD、SD、タッチスクリーンの組み合わせ動作の確認
結果としては、次の様な状況で、このCPUボード上でもArduinoの場合と
同様にLCDシールドを動作させる事ができました。
1.LCDシールドで利用する機能に相当するピンを割り付ける事で対応
できる事が判りました。
2.アナログ入力に関しては、Arduino以上のピンを割り付けられる事が
判りました。
3.SPI、I2C、UARTに関しては複数のピン割り付けの組み合わせが
可能な事が判りました。
4.ただし、PWM出力に関しては、可能なピン割り付けがArduinoの
場合より少なくなる方法になりました。
5.LCD、SD、タッチスクリーンの組み合わせ動作に関しても、問題なく
動作させられる事が確認できました。
以上の様な状況で、ArduinoのLCDシールドは問題なく利用できる事が判り、
しかも、メモリ容量がUNOより大きいので今まで気にしていたコードサイズの
制限にも比較的余裕が出てきました。また、SPI、I2C、UARTのポートが
複数有るのでハードウェアを利用しての追加機能が実現できる事が判り、
利用価値は高いと思いました。ただし、CPUボードとシールドを接続する
ための特別な配線基板が必要な為、その点が少しやっかいだと思いました。
[テストでの機器の接続]
[コード類]
上記のテスト用に作成したコードは次のURLからダウンロード可能です。
(emIDEを使用)
Code download URL : https://www.dropbox.com/s/8x5yi65lsf7rfnk/emIDE_STM32F103C8_Arduino_LCDshield_test.zip?dl=0
対応しました。コードの開発にはArduino用のライブラリをなるべく利用する為に
ラッパーを用意して、それでCPUの違いを吸収する様にしました。その為に
コード作成にかなりの時間がかかりましたが、最終的にやっと目標の結果が得られる
様になりました。以下がその検討内容です。
<Arduino LCD shield の概要>
今回STM32F103C8ボードでの動作を検討したArduino用のLCDシールドは、
2.4/2.8/3.5インチで320x240もしくは480x320のカラーLCDで4線式の
タッチセンサーとSDのカードリーダを装備したもので次の様なものでした。
1.LCDの解像度は 2.4/2.8 : 320x240, 3.5 : 480x320 16bitsカラー
2.LCDのコントローラは8bitsパラレルバス制御方式
3.SPI制御方式のマイクロSDカードスロットを保有
4.4線式タッチスクリーンを保有
5.電源電圧は5V
6.駆動ライブラリ雛形は MCUFRIEND_kbv (改造したものを利用)
[動作状況]
<開発環境>
開発環境としては、Eclipse関連の操作に戸惑いがあったので、Eclipseを
利用しないものとして次のものに変更しました。
<テスト内容>
今回のテストは次の様な内容で、STM32F103C8ボード用に、Arduinoの
ライブラリを移植してこのCPUボード上でArduino のLCDシールドを利用
する時の可能性と動作を確認するものでした。
[目的と結果]
テストの確認目標は次のものでした。
1.Arduino用のLCDシールドを使用する時の問題点と接続方法を確認
2.LCD、SD、タッチスクリーンの組み合わせ動作の確認
結果としては、次の様な状況で、このCPUボード上でもArduinoの場合と
同様にLCDシールドを動作させる事ができました。
1.LCDシールドで利用する機能に相当するピンを割り付ける事で対応
できる事が判りました。
2.アナログ入力に関しては、Arduino以上のピンを割り付けられる事が
判りました。
3.SPI、I2C、UARTに関しては複数のピン割り付けの組み合わせが
可能な事が判りました。
4.ただし、PWM出力に関しては、可能なピン割り付けがArduinoの
場合より少なくなる方法になりました。
5.LCD、SD、タッチスクリーンの組み合わせ動作に関しても、問題なく
動作させられる事が確認できました。
以上の様な状況で、ArduinoのLCDシールドは問題なく利用できる事が判り、
しかも、メモリ容量がUNOより大きいので今まで気にしていたコードサイズの
制限にも比較的余裕が出てきました。また、SPI、I2C、UARTのポートが
複数有るのでハードウェアを利用しての追加機能が実現できる事が判り、
利用価値は高いと思いました。ただし、CPUボードとシールドを接続する
ための特別な配線基板が必要な為、その点が少しやっかいだと思いました。
[テストでの機器の接続]
[コード類]
上記のテスト用に作成したコードは次のURLからダウンロード可能です。
(emIDEを使用)
Code download URL : https://www.dropbox.com/s/8x5yi65lsf7rfnk/emIDE_STM32F103C8_Arduino_LCDshield_test.zip?dl=0