趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

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

   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
  利用しないものとして次のものに変更しました。
   イメージ 2

<テスト内容>
    今回のテストは次の様な内容で、STM32F103C8ボード用に、Arduino
    ライブラリを移植してこのCPUボード上でArduinoLCDシールドを利用
    する時の可能性と動作を確認するものでした。

 [目的と結果]
    テストの確認目標は次のものでした。
         1.Arduino用のLCDシールドを使用する時の問題点と接続方法を確認
         2.LCD、SD、タッチスクリーンの組み合わせ動作の確認

      結果としては、次の様な状況で、このCPUボード上でもArduinoの場合と
      同様にLCDシールドを動作させる事ができました。
         1.LCDシールドで利用する機能に相当するピンを割り付ける事で対応
               できる事が判りました。
         2.アナログ入力に関しては、Arduino以上のピンを割り付けられる事が
               判りました。
         3.SPI、I2C、UARTに関しては複数のピン割り付けの組み合わせが
               可能な事が判りました。
         4.ただし、PWM出力に関しては、可能なピン割り付けがArduino
               場合より少なくなる方法になりました。
         5.LCD、SD、タッチスクリーンの組み合わせ動作に関しても、問題なく
               動作させられる事が確認できました。

      以上の様な状況で、ArduinoLCDシールドは問題なく利用できる事が判り、
      しかも、メモリ容量がUNOより大きいので今まで気にしていたコードサイズの
      制限にも比較的余裕が出てきました。また、SPI、I2C、UARTのポートが
      複数有るのでハードウェアを利用しての追加機能が実現できる事が判り、
      利用価値は高いと思いました。ただし、CPUボードとシールドを接続する
      ための特別な配線基板が必要な為、その点が少しやっかいだと思いました。

 [テストでの機器の接続] 
    イメージ 3

     イメージ 4


 [コード類]
    上記のテスト用に作成したコードは次のURLからダウンロード可能です。
   (emIDEを使用)

     Code download URL : https://www.dropbox.com/s/8x5yi65lsf7rfnk/emIDE_STM32F103C8_Arduino_LCDshield_test.zip?dl=0