ラズパイマガジン2015年春号読んで ― 2015/01/26 07:18
ついでにもうひとつ液晶ネタ。
ラズパイマガジン2015年春号買いました。まぁ、基本的に日経Linuxに載ってたラズパイネタを再掲してるだけの雑誌ですが、普通のLinuxは全く使ってない自分には大変有難い(w。
で、本題。元々2014年9月号掲載のaitendoの小型液晶 [M-TM022-SPI(http://www.aitendo.com/product/7277 )で遊ぶ、という記事。
この記事でppm2lcdっつー、ppm画像を表示させるサンプルプログラムがあるんですが、
このプログラム、確かに表示されますが、暫く放って置くと表示させた画像が崩れることがあります。っていうか崩れました。
原因は、main()関数の締めの
bcm2835_spi_end();
bcm2835_close();
のせい。SPIの使用終了を宣言して、通常のGPIOに戻る訳ですが、デフォルトが入力なおかげでMOSI、SCLK、CS、どれも電位的に浮いてしまい、ノイズの影響をもろに受けてしまうのです。
さらに、液晶のコマンド2Cは画面データを渡した後も、再び先頭から上書きされる形で入力を受け続けます。
なので、bcm2835_spi_end()でSPIを手放す前に液晶の画面データ入力受付を止めないと、ノイズで上書きされて崩れる場合が出ます。
特に、バックライトをPWMしてたりすると、バックライトピンのすぐ隣がSCLKなのでバリバリ崩れますw。
対策として一番手っ取り早いのは、bcm2835_spi_end();の前に
lcd_write_cmd(0x00);
を1行書き足すだけでNOPになり治まります。
本来なら、CSだけでもプルアップしておいた方が安全なんですが・・・
ラズパイマガジン2015年春号買いました。まぁ、基本的に日経Linuxに載ってたラズパイネタを再掲してるだけの雑誌ですが、普通のLinuxは全く使ってない自分には大変有難い(w。
で、本題。元々2014年9月号掲載のaitendoの小型液晶 [M-TM022-SPI(http://www.aitendo.com/product/7277 )で遊ぶ、という記事。
この記事でppm2lcdっつー、ppm画像を表示させるサンプルプログラムがあるんですが、
このプログラム、確かに表示されますが、暫く放って置くと表示させた画像が崩れることがあります。っていうか崩れました。
原因は、main()関数の締めの
bcm2835_spi_end();
bcm2835_close();
のせい。SPIの使用終了を宣言して、通常のGPIOに戻る訳ですが、デフォルトが入力なおかげでMOSI、SCLK、CS、どれも電位的に浮いてしまい、ノイズの影響をもろに受けてしまうのです。
さらに、液晶のコマンド2Cは画面データを渡した後も、再び先頭から上書きされる形で入力を受け続けます。
なので、bcm2835_spi_end()でSPIを手放す前に液晶の画面データ入力受付を止めないと、ノイズで上書きされて崩れる場合が出ます。
特に、バックライトをPWMしてたりすると、バックライトピンのすぐ隣がSCLKなのでバリバリ崩れますw。
対策として一番手っ取り早いのは、bcm2835_spi_end();の前に
lcd_write_cmd(0x00);
を1行書き足すだけでNOPになり治まります。
本来なら、CSだけでもプルアップしておいた方が安全なんですが・・・
コメント
トラックバック
このエントリのトラックバックURL: http://mirage-crystal.asablo.jp/blog/2015/01/26/7553880/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。