STM32 Primer2をカラーグラフィックLCDとして使う
STM32 Primer2は安価で(秋月電子で¥6,200)、128x128ピクセルのカラーTFT液晶とIrDA赤外線通信モジュールを備えています。これを応用して、マイコンの表示装置として利用します。マイコンはPIC18F2550を使います。
2.ハードウェア
2.1 構成
電源(+5V)はPIC18F2550モジュールのUSBコネクタから取っています。緑のLEDは抵抗内蔵です。ブレッドボード用ジャンパーワイヤーのピンをテープでまとめて、直接PICkit2のコネクタに挿しています。
2.2 回路図
抵抗を外付けするタイプのLEDを使用した場合です。
左クリックで拡大表示します。
2.3 部品表
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ダウンロード基板あり。
無料プリント基板CAD「CADLUS X」の入門書。ダウンロードできるPDF書籍、導入編無料。
STM32 Primer2 の開発環境を整える
STM32 Primer2のプログラミング・メモです。
1.CD-ROMイメージのダウンロード
下記ホームページから、最新のCD-ROM Imageをダウンロードします。ページの下の方にCD-ROM imageがあります。
http://www.stm32circle.com/resources/stm32primer2.php
CD-ROM image - Full CD-ROM provided with the STM32-Primer2
(CD_STM32-Primer_BN14.zip)
2.開発環境のインストール
この時点では、STM Primer2をパソコンに接続しないでください。
<参考> STM32-Primer2 User manual.pdf 「3.3 Install the Ride7 software toolset for ARM」
(1)ダウンロードしたCD-ROM image を解凍し、demo.exeをダブルクリックします。
(2)「Install ARM Toolset」を押します。
(3)Install Ride7 or its componentsをクリックします。
(5)「Finish」を押します。
(6)フォントの関係なのか、「Quit」ボタンが見えません。
Ctrl+Alt+Deleteキーを同時に押して、下記のダイアログでdemo.exeを選び、「プロセスの終了」ボタンを押します。
「はい」を押します。
3.USBドライバのインストール
(1)STM32-Primer2のUSBポート(DEBUG)とパソコンをUSBケーブルで接続します。
(2)「いいえ、今回は接続しません」を選んで、「次へ」を押します。
(3)「一覧または特定の場所からインストールする」を選んで、「次へ」を押します。
(4)「参照」ボタンを押して、C:\Program Files\Raisonance\Ride\Driver \RLinkDrv\Jungo_WinDriver_2000_NT_XPフォルダを選びます。「次へ」を押します。
(5)「完了」を押します。
4.コンパイルとダウンロード、Run
(1)スタートメニューからRaisonance tools > Ride7 > Ride7を起動します。
Ride7を起動したときに下記のエラーが出て、Ride7がうまく動作しないことがあります(OSはWindows XP SP3)。別のPC(こちらもWindows XP SP3)でRide7を起動したところ、エラーは出ませんでした。
(2)メニュー Project > Open Projectで、C:\Program Files\Raisonance\Ride\Exsamples\ARM \Primer\STM32Primer2
\toggle_with_CircleOS\toggle_with_CircleOS.rprjを選択します。
Application.cをダブルクリックして、開きます。
(3)メニュー Project > Make Projectでコンパイルします。
(4)STM32 Primer2の液晶の下の、オレンジのボタンを押して電源を入れます。
(5)メニュー Debug > Startを選択すると、プログラムのダウンロードが始まります。ダウンロードが終了したら、メニュー Debug > Runでプログラムをスタートさせます。
(6)CircleOSが起動し、初期画面になります。オレンジのボタンを押すとメニューが表示されます。メニューの中からApplic.を選び、サブメニューからtoggleを選びます。画面が真っ暗になり、赤と緑のLEDが交互に点滅します。次にメニューを開いたときには、toggleはApplic.の上に表示されます。
(7)オレンジのボタンを押し続けて、STM32 Primer2の電源をOFFします。パソコンには下記のメッセージが出ますので、OKをクリックします。
(8)メニュー File > ExitでRide7を終了します。
<広告>
格安FPGA基板
Xilinx社 Spartan-3A搭載。PicoBlazeサンプル付USBダウンロード基板あり。
無料プリント基板CAD「CADLUS X」の入門書。ダウンロードできるPDF書籍、導入編無料。