PIC24FJ64GA002 + ST7735 は一応カラー・チャートの表示まで出来ているつもりでいた。
「1.44inchカラー液晶 + PIC24FJ64GA002 とりあえず初期化と矩形の描画」
最近は PIC32MM0064GPL028 ばっかり使っているので、続きは PIC24FJ64GA002 + ST7735 でなくて PIC32MM0064GPL028 + ST7735 で行こう。
クロック、SPI、待ちのdelay用のタイマー、全てMCCで設定した。
PIC24FJ64GA002 + ST7735 のコードをそのまま持ってきてそのまま使う。
SPIのピンだけ場所が変わるのでそこだけ差し替える。
動かない。
何も表示されない。
PIC24FJ64GA002 + ST7735 で表示されることを確認してそのモジュールをそのまま持ってきているので液晶の問題ではない。
ロジアナで信号を確認するとちゃんと正しいコードが送られている。
謎。
SPIの設定をとりあえず下のようにしてみたらちゃんと動いた。
でも、ロジアナで確認したじゃん。
ロジアナで表示される16進コードだけ見ていては違いがわからないから誤解した。
こうして並べてみるとクロックの立ち上がり、立ち下がりが逆だ。
そもそも、設定を全く見ずに初期設定のままで何とかなると思ってる方が甘いわけだ。
動かなくて悩んでやっとナニコレっていう全く逆の手順。
ここまできてやっとデータシート、じゃなくてSection 23. Serial Peripheral Interface (SPI)というマニュアルを読んでみると下のような図があった。
データ・シートの図は私にはごちゃごちゃでわかりずらいので、自分が斜めに読んであくまでもMCCのEasy Setupの範囲で関係ありそうな部分だけ抜き出してある。
赤枠は、いまとりあえず何だかわからんけど動いている設定だ。
CKEとCKPについては、マニュアルにあるレジスタの説明から端折って来て下に載せた。
SMPも同様に下の通り。
さらに、下はST7735のデータシートの写しだ。
クロックがLowからHighへ変わるところで読み込むよって意味だと思う。
ついでにこの絵も。
わざわざ上向きの矢印が書いてあって分かりやすい。
で、これをPIC32のマニュアルの図と比べると、確かに今動いてる設定は条件に合ってそうだ。
設定を変更する前は、CKP=0, CKE=0 だったので、クロックの下がるところが中央に来ていてうまくなかったんだろうと分かる。
ここまでの理解で行くと、CKP=0, CKE=1 でも良さそうだが、案の定、見た目は問題無く動く。
じゃあ、とにかく立ち上がりを拾うってことで、サンプルの場所を中央から後方へ変えれば、CKP=0, CKE=0 や CKP=1, CKE=1 でもいけるのか。
これは動かなかった。
どこをデータ始めとするかとか、まだここで見ていない設定が関係してくるのだろう。
最後に残るのはそのまだ見ぬ設定なわけだが、当面の疑問は、「PIC24FJ64GA002 + ST7735 でなぜ動いた。」ってことだ。
まあ、どうせ真面目に考えないと思うけど。
1 2 3 4 5 |
// CS A3(10pin) as ST7735_CE // RESET B3( 7pin) as ST7735_RST // A0 A2( 9pin) as ST7735_DC // SDA B9(18pin, SDO1 of SPI1) as ST7735_DIN // SCK B8(17pin, SCK1OUT of SPI1) as ST7735_CLK |
左はモジュールのシルク印刷のまま書いてある。
SDAとSCK以外はどのピンに割り当ててもいいと思う。
右端は、元ネタにしたArduino用のライブラリでの名前で、そのまま使っている。
PIC32MM0064GPL028 関連記事一覧