![]()
今回はPSoC Designerに備わる「USBUART」モジュールをテストしてみた。このUSBUARTは仮想COMポートとして動作するもので、PC上ではシリアルポートとして認識される。PC側のドライバーはWindows標準のusbser.sysを利用するためデバイスドライバーを開発する必要がないなど使い勝手がいい。
![]()
PSoC Desingerを起動したら「Start new project」ボタンから新しいプロジェクトを作成する。
![]()
ソースコードはC言語で書くので、「C」を選択する。
USB内蔵のPSoCを利用するためデバイスを変更するため「View Catalog」ボタンを押す。
![]()
ここにはPSoC DesignerがサポートしているPSoCデバイスが一覧されている。この中から「CY8C24794-24LFXI」を選択し「Select」ボタンを押す。
![]()
これで「Part」が「CY8C24794-24LFXI」になった。確認したら「完了」ボタンを押す。
![]()
USBを利用すためのモジュールをプロジェクトに追加する。「Protocol」の「USBUART」を右クリックして現れるメニューから「Select」を選択する。
![]()
確認したら「Config」メニューの「Interconnect」を選択して詳細設定画面に切り替える。
![]()
まず「USBUART」のアイコンを右クリックして現れたメニューから「Place」を選択して配置する。
![]()
モジュールを配置すると設定できるようになる。左側の画面でUSBに関する設定を行う。
「VendorID」を「aaaa」に、(このベンダーIDは本来はお金を払って認証された番号を利用する。今回はデタラメに設定)
「ProductID」を「bbbb」に、(ベンダーIDとプロダクトIDの組み合わせでUSB機器が特定される。機器が異なる場合はこの値を変える)
「VendorString」を「TestVendor」に、
「ProductString」を「USBUARTTest」に、
「SerialNumberString」を「1234」に、
「DevicePower」を「Bus Powered」に設定する。設定を終えたら「View」メニューの「Application Editor」を選択してソースコードを書く画面に切り替える。
![]()
今回はサンプルソースをそのまま利用する。ツールバーで「Protocols」の「USBUART」を選択して「User Module Datasheet」ボタンを押す。
![]()
するとUSBUARTのデータシートが開く。この中に掲載されているサンプルコードをコピーする。
![]()
そして「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
}
}
}
これが今回利用したUSB PSoCモジュール。ストロベリーリナックスで2100円程度で販売されている。USB機能内蔵PSoC「CY8C24794-24LFXI」が実装された基板とUSBコネクター、ポリスイッチ(定格100mA、200mAで遮断)、MiniProg用のヘッダーのセットだ。
これがUSB機能内蔵PSoC「CY8C24794-24LFXI」。手作業でハンダ付けする気にはとてもなれないパッケージなので実装された基板が売られているのは非常にうれしい。
さっそく基板にUSBコネクターなどを取り付けた。背の低い順...つまりポリスイッチ、ヘッダー3つ、USBコネクターの順に取り付ける。
ポート部に利用したヘッダーは秋月電子で別途購入したものだ。
MiniProgを取り付ける。このとき向きに注意すること!写真のようにMiniProgの正面が外側を向くようにする。
また、PSoCへの書き込み時はUSBケーブルは抜いておくこと。
![]()
PSoC側の準備が整ったらPSoC Programmerで書き込む。
まず「Device Family」で「24x94」を、「Device」で「CY8C24794-24LFXI」を選択する。そして「File Load」ボタンを押し、ビルド作業で出力されたhexファイルを指定する。
PSoCへの書き込みが済んだら、MiniProgを取り外してUSBケーブルを接続する。
![]()
すると「新しいハードウェアが見つかりました」というメッセージが表示される。ここで「ドライバソフトウェアを検索してインストールします」を選択する。
![]()
しばらくすると「USBUARTTestに付属のディスクを挿入してください」というメッセージが表示される。ここで「ディスクはありません。他の方法を試します」を選択する。
![]()
そして「コンピュータを参照してドライバソフトウェアを検索します」を選択する。
![]()
ここでPSoC Designerで作成したプロジェクトのフォルダの中にある「lib」フォルダを指定する。ここにPSoC Designerが自動的に作成したinfファイルが保存されている。
![]()
途中、「ドライバソフトウェアの発行元を検証できません」というメッセージが現れたら、「このドライバソフトウェアをインストールします」を選択する。
![]()
動作確認にはハイパーターミナルのような通信ソフトを利用する。Windows Vistaには残念ながらハイパーターミナルがないので、Windows 2000からハイパーターミナルをコピーしてきた。
Windows 2000からC:\WINNT\system32\hypertrm.dllとC:\Program Files\Windows NT\hypertrm.exeの2つのファイルをコピーしてくればとりあえずWindows Vistaでもハイパーターミナルが動くようだ。

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

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

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

通信速度はデフォルトのままでいい。おそらくこの値を変更しても通信速度などの挙動は変わらないだろう。
![]()
ハイパーターミナルが起動したらキーボードを適当に打つ。PSoCが正常に動作していれば打った通りの文字が表示される。PSoCが動いていなければ何も表示されない。
「test」と打ったところ、「test」と画面に表示された。正常に動作しているようだ。







