Petalinux2018.3でキャラクタLCD制御(ST7032i) のバックアップ(No.4)

更新


電気回路/zynq/Petalinux2018.3環境を整える

I2C 経由で繋いだキャラクタ型の液晶ディスプレイ(LCD)を制御する

繋いだのはこれ digikey:NHD-C0216CIZ-FSW-FBW-3V3-ND

16 文字 x 2 行 で白色バックライト付きの LCD

付属の PDF だけだといろいろ情報が足りなくて困るのだけれど、 どうやらこの LCD には ST7032i という有名なコントローラが載っているらしいので、 このキーワードで検索すればいろいろと情報が得られる。

環境

作業履歴 のように Petalinux 2018.3 を基本として作業しています。

LCD は i2c-1 に繋がっているはず。

Petalinux は i2c-1 を認識して dtb に反映してくれています。

Zynq 機器で動作する Ubuntu 18.04LTC のコンソールで、

LANG:console
$ less /boot/system.dts
 ...

 i2c1: i2c@e0005000 {
  compatible = "cdns,i2c-r1p10";
  status = "disabled";
  clocks = <&clkc 39>;
  interrupt-parent = <&intc>;
  interrupts = <0 48 4>;
  reg = <0xe0005000 0x1000>;
  #address-cells = <1>;
  #size-cells = <0>;
 };
 ...

$ sudo grep i2c /var/log/syslog
 Jan 28 15:58:20 zturn2018_3 kernel: i2c /dev entries driver
 Jan 28 15:58:20 zturn2018_3 kernel: cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 24
 Jan 28 15:58:20 zturn2018_3 kernel: cdns-i2c e0005000.i2c: 400 kHz mmio e0005000 irq 25
$ ls -l /dev | grep i2c
 crw------- 1 root     root     89,   0  1月 28 15:58 i2c-0
 crw------- 1 root     root     89,   1  1月 28 15:58 i2c-1

ちゃんと 400kHz クロックになっている。

まずはリセットピンを制御可能にする

LCD との通信

LCD のアドレスは 0x7c だそうで、

$ mkdir lcd-control
$ cd lcd-control
$ git init
$ jed lcd-control.c

Counter: 3320 (from 2010/06/03), today: 6, yesterday: 0