EZ-USB FX2LPでLチカ

引き続きEZ-USB FX2LP。
早速ウゴウゴルーガ
まずは定番のLチカだ(あれ、なんだか既視感が・・・)

プロジェクトを作成

  • Keil uVision 2を起動する、最近開いたプロジェクトが開く場合には、"Project" -> "Close Project"で閉じる
  • "Project" -> "New Project..."を選択する
  • 適当なプロジェクトフォルダーを作り、プロジェクトファイルを保存する、筆者は(開発キットのルート)\Firmwareの下に"Blink"フォルダーを作り、プロジェクト名を"Blink"とした
  • "Select Device for Target 'Target 17"というウィンドウが開くので、"Cypress Semiconductor" -> "EX-USB FX2"を選択する

ライブラリー、ビルドオプションを設定する

  • "Project" -> "Components, Environment and Books"を選択する
  • 開いたウィンドウで"Folder Extentions"タブを選択する
    • "Use Settings from TOOLS.ini"のチェックボックスを外す
    • "BIN"が"C:\Keil\C51\BIN\"となっていることを確認
    • "INC"に"(開発キットのルート)\Target\Inc\;C:\Keil\C51\INC\"を追加
    • "LIB"に"C:\Keil\C51\LIB\"を追加
    • "OK"で設定を抜ける
  • "Project" -> "Option for Target'Target 1'"を選択する
    • "Output"タブの"Create HEX File"にチェックを入れる
    • "B51 Locate"タブの"Use Memory Layout from Target Dialog"のチェックを外し、"Code Range"を0x80に、"Xdata Range"を0x1000にする
    • "OK"で設定を抜ける

Lチカを実装

  • "File" -> "New..."を選択
  • 開いたテキストファイルに以下を実装
#define ALLOCATE_EXTERN
#include "fx2.h"
#include "fx2regs.h"

main()
{
	OEA = 0xFE; // set PA7 to PA1 as output, PA0 as input
	IOA = 0x00;

	while(TRUE)
	{
		if (IOA & 0x01 == 0x01) // if PA0 is "H"
			IOA = 0xFF; // set all other A port pins to "H"
		else
			IOA = 0x00; // set all other A port pins to "L"
	}
}
  • "File" -> "Save"を選択して保存する、筆者はファイル名を"blink.c"とした
  • "Project" -> "Components, Environment and Books"を選択する
  • "Project Components"タブで、"Add Files"ボタンを押し、上記で保存したファイルを指定して"Add"を押す

ビルド

  • "Project" -> "Build Target"を選択

これでCyControl.exeでフラッシュできるFWが出来上がる。
ファームウェアは"プロジェクト名.hex"となる。
早速CyControl.exeで焼いてみる。

実機に焼く

  • EZ-USB FX2LPのボードをPCに接続
  • (開発キットのルート)\Windows Applications\Application Source files\c_sharp\controlcenter\bin\Releaseの"CyControl.exe"を起動
  • "Program" -> "FX2" -> "RAM"で先ほどビルドしたFWを選択

PA0のピンは弱くプルアップされているので、この状態でPA7 - PA1はすべて"H"になっているはずだ。
LEDのアノードをPA1につなぐと点灯する。
PA0にGNDをつなぐと、LEDが消える。