2015/04/04

[nrf51]SB1602はあっさり動いた

以前購入していたSB1602Bという液晶モジュールを、nRF51822で動かすことにした。
I2C低電圧キャラクタ液晶モジュール(16x2行) - SB1602B - ネット販売

ベースは、以前FM3 + TOPPERSで動かしたときのドライバ。
hiro99ma blog: [fm3]I2Cが動かんのはプルアップ抵抗の値か

これをnRF51 SDKで提供されているI2Cインターフェースで置き換えてやる。


nRF51822では、I2CじゃなくてTWIと呼んでいる。
Two Wire Interfaceの略で「I2C compatible」とまで書いている。
なんでI2Cと名乗らないのだろう?という疑問はあるが、ライセンスとか微妙な規定とか、そんなところにあるのかもしれん。
スレーブは対応しておらず、マスターのみとなる。

リファレンスマニュアルにはいろいろと説明が書いてあるのだが、TWIを使うだけであればSDKのAPI仕様があればよさそうだ。
私は、SDK v7.2.0のS110なので、こちらになる。
nRF51 SDK - S110 SoftDevice: Software controlled TWI Master driver

APIとしては2つしかなく、初期化と転送だけだ。
割り切ってるねー。
まあ、読み書きはアドレス値からわかるから勝手にやるよ、というパターンみたいだ。
libusbの転送と同じ感じ。

SB1602というかST7032iというか、とにかくこの液晶モジュールは書込み方向しかないので、元々APIも1種類しか使っておらず、移植は簡単だった。
そして動かしてみると、あっさり動いた。

image

 

これに気をよくして、FeliCa Linkも動かしてみよう。
こっちはmbed用に作ったライブラリを移植するつもりなんだけど、はてさて。


ロジアナZeroPlusのLAP-Cの使い方をメモで残しておこう。

まず、I2C解析するには、I2Cのバスとして扱うためのチャネル設定がいる。
チャネルのコンテキストメニューか、ツールバーのアイコンで「Channels Setup」を選択。
image

これは設定後の画面だが、やり方は、
 ・「Add Bus/Signal」で新しい行を追加する。
 ・新しい行で、バスとみなしたいチャネルにチェックを付ける。
ここでは、0chと1chをSDAとSCLにしたので、0と1にチェックをしている。
ポート名も変更できるので、気になるならやっておくとよい。
image

そしてまたコンテキストメニューかツールバーから「Bus Property」を選択。
image

こんなダイアログが出てくるので、I2C MODULEを選択。
その後「Parameters Config」を押す。
image

選択したバスに応じた設定画面が出てくる。
私は、SDAとSCLのチャネルを変更しただけだ。
image

I2Cの設定としてはこれだけ。

 

ST7032iの設定では200msec待つところがある。
そのため、普通にロジアナでとっていると、時間が足りない。
そういうときは、データ圧縮してやるとよい。
よくわからんが、Glitchみたいなものか?

image

ツールバーのこれでもよい。
image

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。