SSブログ

PICでグラフィックLCDとSDカードを使う

 PICを使ってあるものを作ろうと思ったのですが、その過程で検討のためのデータ保存やグラフィック表示を行うことが必要になりました。
余り知識がなかったので勉強がてら基本的な動作をさせるサンプルソフトを作ってみました。
PICはPIC24FJ64GA002を用い、 プログラムはMPLAB X IDE(v5.50) とコンパイラ XC16(v1.70) で作成してあります。
<2022.05.14> dsPIC33FJ64GP802 対応用のソフトも作りました。

使用した回路は図1に示すもので、グラフィックLCDはMSP2807(2.8" 320x240 pixel)を使用し、カードスロットはMSP2807上のSDカードスロットまたは別付けのマイクロSDカードスロットのいずれかを使用できます。実際に書き込める最大サイズは分かりませんが(2GBぐらい?)、KIOXIA EXCERIA 32GB のMicro SD HCで読み書きできました。

写真1
PIC&G_LCD&SD.jpg


図1 回路図
PIC&G_LCD&SD回路.jpg
dsPIC33FJ64GP802を使う場合はPIC24FJ64GA002を替えるだけで、他は共通です。

ハードウェア製作に関する資料、注意等はこちらを参照してください。


ソフトウェア
ダウンロードは以下でできます。
PIC24FJ64GA002用 => GLCD_SD_24F
dsPIC33FJ64GP802用 => GLCD_SD_33F
<2022.05.25> XC16 v2.00 コンパイラではGFX_Libraryでエラーが生じました。解決できない場合はXC16 v1.700をお使いください。
<2023.10.02記>「PICライター(PICerFT)の製作」でPICライターの自作方法を紹介しています。

PIC24FJ64GA002、dsPIC33FJ64GP802 には2つのSPIチャンネルがあるので、2.8"グラフィックLCD MSP2807 (ILI9341搭載)の表示用とSD/マイクロSD カードの読み書き用とを別々に使っています。
今回はSPI1, SPI2をそれぞれG.LCDとSDカードに使っていますが、 SS(CS)ピンだけを別々にすれば一つのSPIで両方を制御することも可能だと思います。(但し同じ周波数のSPIクロックが使えないと周波数の切り替えが必要になって繁雑処理になるでしょう。)

SDカード用のSPIクロック周波数はLCD用(16MHz)より低く4MHzに設定してありますが、これはリード線で結線しているので信号品質の劣化が心配であったためです。 基板でパターンを作ったそれなりの伝送路であればもっと高い周波数(カード側のデバイスが扱える範囲内で)でも問題ないと思います。

SPIのピンアサインを図1の回路の通りにするのでしたらプログラムの変更は不要ですが、ピン接続を変更する際にはレジスタ設定やマクロ定義の変更が必要です。
必要な変更箇所についてはこちらを参照してください。

ファイル関数の種類・機能は限定的です。
ファイルは一旦クローズした後に追加書き込みはできないようで、再度オープンして書き込むと書き込み済みのデータは消去されてしまいます。必要なデータを全て書き込むまでオープンを継続する必要があります。
また、ファイルの削除機能は無いようです。

ライブラリーはインターネット上で出回っているものを改造させていただいて使用しています。
オリジナルのライブラリーと取得先は以下の通りです。
これらのオリジナルライブラリは GLCD_SD_xxx.X の library_originalフォルダに入れてあります。

・SPI用ライブラリー (16bit MCU用)
skSPIlib.c, skSPIlib.h => 「PIC24Fシリアル通信(I2C/SPI/UART)について」内のリンクから skSPIlib.zip * をダウンロード。
・SDカード用ライブラリー
skSDlib.c, skSDlib.h => 「MMC/SDカードを接続し読書きを行って見ます」内のリンクから SD.zip * をダウンロード。SDファルダー内のskSDlib.h, skSDlib.c のみを使う。

*これらのリンクのアドレスをコピーしてブラウザーの新しいタブのURL欄に貼り付けてアクセスする方法でもダウンロードできます。

・グラフィックLCD用ライブラリー
ILI9341.c => ILI9341 TFT display library for mikroC compiler よりダウンロード。
GFX_Library.c => Graphics library for mikroC compiler よりダウンロード。


参考にしたページ
PIC MCU with ILI9341 TFT – Graphics Test Example | mikroC Projects
PIC24Fシリアル通信(I2C/SPI/UART)について
MMC/SDカードを接続し読書きを行って見ます


===== 関連記事 =====
dsPIC33 AD変換データ表示・保存装置
dsPIC33 FFT変換とデータ表示・保存装置


>> ブログ記事一覧へ
nice!(0) 
共通テーマ:趣味・カルチャー

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。