PSoC/PSoCのUSBモジュールの使用

このページの目次

USBUARTユーザーモジュールの試用

ここでは、CypressのUSBUARTユーザーモジュールを使用したプログラミングについて、実験しながら使用し、とりあえずUSBUARTを使用し、printf互換関数でPCにデバッグログ出力をできるようにしていきたいと思います。

USBUARTモジュールのPlace

  1. USBUARTモジュールを選択、配置(Place)する
    1. PSoC Designerで、Vide→Device Editorを選択し、Config→Selectionを選択する
      これで、ユーザーモジュール選択の画面になります。
    2. ProtocolsグループのUSBUARTをダブルクリックする
      初期状態では、「USBUART_1」になっていると思います。ここでは、名称変更で「USBUART」にします。これで、USBUARTが選択されます(まだ、配置はされていません)。
    3. Selected User Modulesの
      selectitem.gif
  2. USBUARTの設定を行う
    1. Config→Interconnectを選択する
    2. Selected User ModulesのUSBUARTモジュールを選択する
    3. パラメータを入力する
      UserModuleParams.gif
      こちらに入力します。とりあえずVendorID等は暫定的にCypressのものを設定してみました。このまま入力していただければとりあえず正しく動作しますが、お好きなID/Stringで問題ありません。
  3. APIの生成を行う
    Config→Generate Applicationを選択すると、ユーザーモジュールにアクセスする為のAPI群が生成されます。

main関数にテスト用処理を実装する

  1. main関数へのテスト処理の導入
    main.cが自動生成されていますので、このファイル内のmain()関数に、USBUARTモジュールのヘルプのサンプルコードをコピーしてテストしてみます。 Sample Codeの項目を見てみてコピーペーストします。
USBUARTモジュールの名称によって、API関数プリフィックスが変化します。
ユーザーモジュール名がUSBUARTの時 : USBUART_Start()
ユーザーモジュール名がUSBUART_1の時 : USBUART_1_Start()
  1. Compileする
    F7キーを押すと、コンパイルできます。エラーが出たら、コピーミスがないか、確認してください。
  2. マイコンを書き換える
    MiniProgとPSoCボードの端子を接続し、Program→Program Partを選択します。すると、PSoC Programmerというツールが起動します。 「Program」ボタンがグレー表示で押せない場合は、正常にCompile/ビルドが生成されていない可能性がありますので、一度そちらを確認して下さい。 正常なら「Program」をクリックすると、30秒程度で完了します。

実際にPCと接続してテストを行う為の準備

  1. PCに接続する
    書き換えたら、一度MiniProgをはずし、PSoCマイコンボードのUSBポートとPCのUSBポートとを接続します。すると、新しいハードの追加ウィンドウが出てきます。
  2. infファイルの設定
    今回生成したPSoCのプロジェクトフォルダには、libというフォルダが自動的に生成されています。この中に、Windowsにデバイスとして登録させる為のinfファイルが生成されていますので、libディレクトリを指定します。しばらくすると、デバイスの登録が完了します。
  3. 登録されたCOM番号を確認する
    PCにCOMポートとして登録されたとしても、それがCOMの何番になっているのかがわからないと通信できまんので確認します。
    1. スタートボタンから、コントロールパネルを起動する
    2. システムを選択し、ハードウェア→デバイスマネージャーを選択する。
    3. ポート(COM と LPT)の中を見て、COMの何番か確認する ここまで完了したら、実際に通信ソフトを起動して通信してみましょう。

実際にPCと接続してテストを行う

TeraTerm または、ハイパーターミナル(Windowsの標準アクセサリ)を起動する 通信が開始したら、キーボードの任意のキーを押してみてください。文字が表示されると思います。

ここまでのまとめ

ここまでで、エコーバックの処理が動作している事が確認できました。 地味な動作ですが、表示されているデータは、キーボードから入力されたものが一旦PSoCマイコンに転送され、PSoCマイコンから改めて打ち返されてきたデータです。

UARTでの文字列の出力方法

  • ここでは、USBUARTのユーザーモジュール名を「USBUART」として設定したとして説明します。もし違う名称でモジュールを宣言した場合には、API関数のプリフィックスを変更して下さい。

USBUARTの初期化

以下のようにしてUARTを初期化します。USBUART_Init()がTRUEになれば初期化完了です。

M8C_EnableGInt;
USBUART_Start(USBUART_5V_OPERATION);
while(!USBUART_Init());

文字列の出力

以下のようにして文字列を出力します。以下は、文字列がROM内(const)の場合です。

while (!USBUART_bTxIsReady());        // UART出力可能になるまで待つ
USBUART_CWrite("Hello,world\n\r",13);  // 文字列出力

文字列がRAM内の場合には、以下のようにして出力します。

char str[] = "Hello,world\n\r";
while (!USBUART_bTxIsReady());        // UART出力可能になるまで待つ
USBUART_Write(str,13);               // 文字列出力

16進数値の出力

変数の値を出力した意場合などは、以下のようにします。

int i = 0x32;
while (!USBUART_bTxIsReady());        // UART出力可能になるまで待つ
USBUART_PutSHexInt(i);                // 変数iの値を出力する

ここで指定する値は、ポインタではありませんので、constであるかどうかを気にする必要はありません。

  • USBUART API関数で文字列送出関数を呼び出す場合には、毎回USBUART_bTxIsReady()をして送出可能になっているかどうか確認しましょう。

USBUARTの応用

USBUARTをデバッグに役立てるため、printf関数のサブセットを作成し、デバッグに生かしていきたいと思います。

USBUART用printfの作成




アクセスカウント(累計) : 7820 アクセスカウント(本日) : 1 アクセスカウント(昨日) : 0


添付ファイル: fileUserModuleParams.gif 544件 [詳細] fileselectitem.gif 533件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-01-12 (金) 00:41:50 (4629d)