読者です 読者をやめる 読者になる 読者になる

人目よくらむ

雑記です

PSoC5でOLED制御してみる

今まではちょっとPICをかじったりAVRをいじったりしてみたけど、
そろそろ真面目に仕事でも趣味でもマイコンを使えるようになっておこうと思い、
PSoCに手を出すことにした。
USB経由の仮想COMポート経由で制御することが多くなりそうなので
調べてみたところ、PSoC3かPSoC5がよさそうな感じ。


ということで、それらのデバッガーとしても使えるらしい
CY8C5888LTI-LP097という開発キットを買ってみることにした。
秋月で1500円。安い。

 

akizukidenshi.com

そして「イマドキ液晶もなんだし、OLEDだしょ」と、
意味もなく128x64のI2CなOLED(SSD1306コントローラ)をAmazonで購入。

 購入時は999円だったけど今は800円。
なんか類似品で500円くらいのもあるし、なんなんだこれは。安い。ありがたい。


接続していろいろやってみる。
「CyGlobalIntEnable」を入れ忘れて動かない、などのトラブルを乗り越えて、
とりあえずI2Cの通信はうまくいくようになった。

で、下記のGitHubPSocOLED(SSD1306)というそのまんまのサンプルを発見。

github.com


そのまんま動かしてみたところ、なんとなく動いてはいるものの、表示が変。

f:id:oga_wan:20161108004313p:plain


コントラストの設定やスクロールの設定はうまくいっているので、
画像バッファへの書き込みがうまくいっていない様子。
なかなか原因が分からなかったのだが、ようやく判明。

Cypressのフォーラムに同じ症例が報告されていた。

www.cypress.com

どうやらGitHubのサンプルはPSoC4用で、PSoC5の場合は
1回のトランザクションで256バイトまでしか送れないので、
1バイトずつ書き込む処理に変更しなければならないということらしい。

フォーラムのサンプルをそのまんま使ったところ、正常動作できた。

f:id:oga_wan:20161108004949p:plain

ようやくこれからやりたい処理の実装に入れそう。
今日はここまで。