2015年1月30日金曜日

PSoC 4 Pioneer KitでI2C LCD

Strawberry LinuxさんのI2C LCDを動作させてみた
http://strawberry-linux.com/catalog/items?code=27021

まずはArduinoで動作確認


Arduinoのすすめさんが公開されているI2CLiquidCrystalライブラリを使った
http://n.mtng.org/ele/arduino/i2c.html

使ったサンプルスケッチ(Hello World)ではLCDを5V駆動させるようになっているようだ

ライブラリの中は見ていないが、このLCDに使われているコントローラーのST7032iでは
Bonというパラメーターで5V、3.3V駆動を切り替えられるようだ
http://strawberry-linux.com/support/27021/1176395

初期化後の波形は


7c:00:38 7c:00:39


7C:00:14 7c:00:74

でStrawberryLinuxさんのドキュメント(i2c_lcd-an003.pdf)とほとんど同じ(^q^/

3e → 7cはAddress表記の7bitと8bitの違い
最後の70 → 74はコントラストの設定値の違いだ

PSoC 4 Pioneer Kitで動かしてみる

PSoC Creatorでプロジェクトを作って動作チェック


ACKがこない(^q^;

PullUp用のRを5.6Ωから3.3kΩに下げてみる


波形は多少きれいになったがやはりACKが来ない(^q^;

何度か動かしてみるとACKがくるときもあったのでLCDのRESET PINも制御してみることにした

最初にやったAruduinoの例ではRESET PINは制御していない(VDDに直結)


ACK来た!GJ(^q^/

が、ACKは来たものの、そのあとのコマンドが続かない(@q@;

ソースをいじってLED点灯をステップごとに入れたりしてあれこれ試行錯誤しているうちに気づいた!

グローバル割込みを許可する前にLCDの初期化コマンドを流していた(^q^;;;;

ソースの中のグローバル割込みを許可するCyGlobalIntEnableを先頭に持ってきて


GJ(^q^/


気づいたこととか

Arduinoはやっぱり頼りになる

今までの積み重ねの層の厚さはさすが!
いろいろな方が試されているのでWebで検索すれば何らかのヒントが見つかることが多い

困ったときはArduinoである

PSoC 4 Pioneer KitのRGB LEDはデバッグに便利

3bitあるのでデジタル出力で8つの状態が表現できる

TopDesignでcy_pinをDrag&DropしてConfigureで多少設定してやればすぐ使えるし
LED3個ではなくRGB LEDなので考えなくても直感的に(赤・青・緑・黄・紫などで)把握できる

今回のテストプロジェクトはGitHubで公開しています
https://github.com/ryood/PSoC-I2C-LCD-Test

0 件のコメント:

コメントを投稿