PSoCのUSBUART機能でPCとUSB接続する

WS00.gif
今回はPSoC Designerに備わる「USBUART」モジュールをテストしてみた。このUSBUARTは仮想COMポートとして動作するもので、PC上ではシリアルポートとして認識される。PC側のドライバーはWindows標準のusbser.sysを利用するためデバイスドライバーを開発する必要がないなど使い勝手がいい。

WS01.gif
PSoC Desingerを起動したら「Start new project」ボタンから新しいプロジェクトを作成する。

WS02.gif
今回はプロジェクト名を「Test」とした。

WS03.gif
ソースコードはC言語で書くので、「C」を選択する。

USB内蔵のPSoCを利用するためデバイスを変更するため「View Catalog」ボタンを押す。

WS04.gif
ここにはPSoC DesignerがサポートしているPSoCデバイスが一覧されている。この中から「CY8C24794-24LFXI」を選択し「Select」ボタンを押す。

WS05.gif
これで「Part」が「CY8C24794-24LFXI」になった。確認したら「完了」ボタンを押す。

WS06.gif
USBを利用すためのモジュールをプロジェクトに追加する。「Protocol」の「USBUART」を右クリックして現れるメニューから「Select」を選択する。

WS07.gif
これでプロジェクトに「USBUART」が追加された。

WS08.gif
確認したら「Config」メニューの「Interconnect」を選択して詳細設定画面に切り替える。

WS09.gif
まず「USBUART」のアイコンを右クリックして現れたメニューから「Place」を選択して配置する。

WS10.gif
モジュールを配置すると設定できるようになる。左側の画面でUSBに関する設定を行う。
「VendorID」を「aaaa」に、(このベンダーIDは本来はお金を払って認証された番号を利用する。今回はデタラメに設定)
「ProductID」を「bbbb」に、(ベンダーIDとプロダクトIDの組み合わせでUSB機器が特定される。機器が異なる場合はこの値を変える)
「VendorString」を「TestVendor」に、
「ProductString」を「USBUARTTest」に、
「SerialNumberString」を「1234」に、
「DevicePower」を「Bus Powered」に設定する。設定を終えたら「View」メニューの「Application Editor」を選択してソースコードを書く画面に切り替える。

WS11.gif
今回はサンプルソースをそのまま利用する。ツールバーで「Protocols」の「USBUART」を選択して「User Module Datasheet」ボタンを押す。

WS12.gif
するとUSBUARTのデータシートが開く。この中に掲載されているサンプルコードをコピーする。

WS13.gif
そして「main.c」の中に貼り付ける。このとき「USBUART_」の部分をすべて「USBUART_1_」と置き換える。ソースコードの修正が済んだら「Build」メニューからビルドする。


//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules


BYTE Len;
BYTE pData[32];
void main()
{
M8C_EnableGInt; //Enable Global Interrupts
USBUART_1_Start(USBUART_1_5V_OPERATION); //Start USBUART 5V operation
while(!USBUART_1_Init()); //Wait for Device to initialize
while(1)
{
Len = USBUART_1_bGetRxCount(); //Get count of ready data
if (Len)
{
USBUART_1_ReadAll(pData); //Read all data rom RX
while (!USBUART_1_bTxIsReady()); //If TX is ready
USBUART_1_Write(pData, Len); //Echo
}
}
}





_DSC9067.JPG
これが今回利用したUSB PSoCモジュール。ストロベリーリナックスで2100円程度で販売されている。USB機能内蔵PSoC「CY8C24794-24LFXI」が実装された基板とUSBコネクター、ポリスイッチ(定格100mA、200mAで遮断)、MiniProg用のヘッダーのセットだ。

_DSC9073.JPG
これがUSB機能内蔵PSoC「CY8C24794-24LFXI」。手作業でハンダ付けする気にはとてもなれないパッケージなので実装された基板が売られているのは非常にうれしい。

_DSC9074.JPG
さっそく基板にUSBコネクターなどを取り付けた。背の低い順...つまりポリスイッチ、ヘッダー3つ、USBコネクターの順に取り付ける。
ポート部に利用したヘッダーは秋月電子で別途購入したものだ。

_DSC9075.JPG
MiniProgを取り付ける。このとき向きに注意すること!写真のようにMiniProgの正面が外側を向くようにする。
また、PSoCへの書き込み時はUSBケーブルは抜いておくこと。

WS14.gif
PSoC側の準備が整ったらPSoC Programmerで書き込む。
まず「Device Family」で「24x94」を、「Device」で「CY8C24794-24LFXI」を選択する。そして「File Load」ボタンを押し、ビルド作業で出力されたhexファイルを指定する。

WS15.gif
そして「Program」ボタンを押してPSoCへ書き込む。

_DSC9076.JPG
PSoCへの書き込みが済んだら、MiniProgを取り外してUSBケーブルを接続する。

WS17.gif
すると「新しいハードウェアが見つかりました」というメッセージが表示される。ここで「ドライバソフトウェアを検索してインストールします」を選択する。

WS18.gif
しばらくすると「USBUARTTestに付属のディスクを挿入してください」というメッセージが表示される。ここで「ディスクはありません。他の方法を試します」を選択する。

WS19.gif
そして「コンピュータを参照してドライバソフトウェアを検索します」を選択する。

WS20.gif
ここでPSoC Designerで作成したプロジェクトのフォルダの中にある「lib」フォルダを指定する。ここにPSoC Designerが自動的に作成したinfファイルが保存されている。

WS21.gif
するとドライバのインストールが始まる。

WS22.gif
途中、「ドライバソフトウェアの発行元を検証できません」というメッセージが現れたら、「このドライバソフトウェアをインストールします」を選択する。

WS23.gif
これでドライバーのインストールが終了した。

WS24.gif
今回接続したPSoCは「COM6」として認識された。

WS25.gif
動作確認にはハイパーターミナルのような通信ソフトを利用する。Windows Vistaには残念ながらハイパーターミナルがないので、Windows 2000からハイパーターミナルをコピーしてきた。
Windows 2000からC:\WINNT\system32\hypertrm.dllとC:\Program Files\Windows NT\hypertrm.exeの2つのファイルをコピーしてくればとりあえずWindows Vistaでもハイパーターミナルが動くようだ。

WS26.gif
ハイパーターミナルを起動すると古めかしいロゴが表示されて...

WS27.gif
「接続の設定」画面が開く。ここでは適当な名前を入れる。

WS28.gif
次の画面の「接続の方法」では「COM6」を選択する。これを忘れると当然のことながらPSoCの動作確認はできない。

WS29.gif
通信速度はデフォルトのままでいい。おそらくこの値を変更しても通信速度などの挙動は変わらないだろう。

WS30.gif
ハイパーターミナルが起動したらキーボードを適当に打つ。PSoCが正常に動作していれば打った通りの文字が表示される。PSoCが動いていなければ何も表示されない。
「test」と打ったところ、「test」と画面に表示された。正常に動作しているようだ。



カテゴリー「電子工作」 のエントリー