FC2ブログ

2018-11

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

STM32 Primer2をカラーグラフィックLCDとして使う

 STM32 Primer2は安価で(秋月電子で¥6,200)、128x128ピクセルのカラーTFT液晶とIrDA赤外線通信モジュールを備えています。これを応用して、マイコンの表示装置として利用します。マイコンはPIC18F2550を使います。

1.表示例
IrDA_LCD表示例 

2.ハードウェア

2.1 構成 

IrDA-LCD構成  

 電源(+5V)はPIC18F2550モジュールのUSBコネクタから取っています。緑のLEDは抵抗内蔵です。ブレッドボード用ジャンパーワイヤーのピンをテープでまとめて、直接PICkit2のコネクタに挿しています。

IrDA-LCD写真 

2.2 回路図

 抵抗を外付けするタイプのLEDを使用した場合です。 

 左クリックで拡大表示します。

IrDA-LCD回路図  

 

2.3 部品表

IrDA_LCD_部品表 

3.ソフト
 趣味・商用を問わず利用可能ですが、保証はありません。自己責任でお使いください。ソースファイルの転載は不可です。このページにリンクを張ってください。

3.1 表示コマンドの仕様
PIC18F2550のソースirda_lcd.cの中に記述してあるコマンドのサンプルで説明します。

ClearLCD()
画面をクリアします。

Print(010,110,IrDA-LCD Test)
画面に文字を出します。010,110は、書き始めの文字位置のX座標、Y座標です。必ず3桁にします。IrDA-LCD Testは書き出す文字列です。

Line(030,045,105,045,BLACK)
画面に直線を描きます。030,045は描き始めのX座標、Y座標です。105,045は終点のX座標、Y座標です。BLACKは直線の色です。RED、GREEN、BLUEも使えます。

Pixel(004,000,RED,020,021,020,023,020,025,020,027)
画面に点を打ちます。004は点の数です(001~127)。その次の000は使用しませんが、このように入れておいてください(Reserved)。REDは点の色です。BLACK、GREEN、BLUEも使えます。その後は全てX座標、Y座標の繰り返しです。点の数を4にしていますので、4つの座標を指定しています。

3.2 STM32 Primer2のプログラム
 こちらにソースファイル一式IrDA_LCD_STM32.zipを置きます。解凍してC:\DATA\STM32の下に置いてください。

(1)stm32circle.comのSTM32 Primer2 ProjectのPrimer2Test Ver1.1を参考に、STM32 Primer2用ソフトをインストールした時できる\Examples\ARM \Primer\STM32Primer2\toggle_with_CircleOSを改造しています。2009/9/20現在、Primer2TestはVer1.2に上がっています。

(2)Application.cの中のenum MENU_code Application_Handler ( void )の中で、IrDAの受信データが有るかどうかチェックしています。受信データがあればデリミタ=NULLコード(0x0)が来るまで描画コマンドの受信を続けます。MENU_code Application_Handler はCircleOSから定期的に呼ばれます(数十mS毎?)。

(3)下記は115200とすべきところですが、なぜか115.2Kbps×1.5倍のスピードになってしまいますので、1.5で割った値=76800にしています。
  USART_InitStructure.USART_BaudRate = 76800;

(4)コードサイズの制限が有るようです。この制限に引っかかると、プログラムに問題がなくても、コンパイルがfailとなります。そのため、enum MENU_code Application_Ini ( void )の中の不要部分をコメント化しています。

3.3 PIC18F2550のプログラム
 こちらにソースファイル一式IrDA_LCD_PIC.zipを置きます。解凍してC:\DATA\PIC\C18の下に置いてください。

(1)IrDAの送信波形(LEDの点灯タイミング)を調整する部分は、USB-Blasterもどきの製作の「Ver.0.4での高速化の肝」を参考にさせていただきました。
  // IrDA Ver1.0規格 8.68uS/bit, LED ON=1.6uS
  // 実測 8.67uS/bit, 1.67uS
  #define WriteIrDA_Bit(a)

(2)STM32 Primer2側は、pollingで受信データを取り込みますので、コマンドの最初の1文字を送信した後、STM32 Primer2側で連続受信体制が整うのを約80mS待って2文字目以降を送っています。30mSでは、STM Primer2側がときどき取りこぼします。40mSでは取りこぼしはありません。そこで倍の80mS待つことにしました。
STM32 Primer2側でIrDAの受信割り込みを使う方法は、試しましたがうまく動作していません。
  void PutsIrDA(char *Command)
   ・・・
  Delay10KTCYx(100); // wait 83.3mS

4.使い方
(1)PIC18F2550マイコンにプログラムを書き込みます。リセットを解除すると、IrDA送信を開始します。緑LEDが細かく点滅している状態が正常です。

(2)STM32 Primer2にプログラムを書き込みます。書き込み方法は、このブログの2009/8/26「STM32 Primer2 の開発環境を整える」を参考にしてください。

(3)STM32 Primer2でオレンジのボタンを押して電源を入れます。オレンジのボタンを押してメニューを出し、IrDA-LCDを選びます。画面をタッチしても良いのですが、STM32 Primer2を傾けると選択が移動します。IrDA-LCDの所でオレンジのボタンを押します。IrDA-LCDが表示されていないときは、Applic.を選び、サブメニューからIrDA-LCDを選びます。

(4)PIC18F2550マイコン側のIrDAモジュールと、STM32 Primer2のIrDAモジュールを対向させます。このページトップの「表示例」の画面が現れます。

(5)STM32 Primer2でオレンジのボタンを押して、IrDA-LCDのプログラムから抜けます。この操作を行わず、IrDA-LCDのままでIrDAの通信を遮ると、STM32 Primer2がハングアップすることがあります。このときはSTM32 Primer2の裏蓋を外し、電源供給のショートピンを抜き挿しして、初期状態に戻します。

<広告> 
格安FPGA基板
Xilinx社 Spartan-3A搭載。PicoBlazeサンプル付USBダウンロード基板あり。

CADLUS X入門

無料プリント基板CAD「CADLUS X」の入門書。ダウンロードできるPDF書籍、導入編無料

スポンサーサイト

テーマ:ソフトウェア開発 - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

http://suikamura.blog91.fc2.com/tb.php/2-25d24c83
この記事にトラックバックする(FC2ブログユーザー)

«  | ホーム |  »

プロフィール

すいか村

Author:すいか村

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (0)
STM32 Primer2 (2)
プリント基板 (2)
STBee (3)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。