CY8CKIT-042 でロジアナを作った ~UART編~ [PSoC]
前回の記事では、取得した論理信号の情報を EZI2C で PC に引き渡すことで、毎秒 390 サンプルの速度を出していました。 今回は、 UART を使って、表示させてみます。
回路図は、こうなった
前回同様、PSoC 4 PIONEER Kit (CY8CKIT-042) の中にロジアナと観測対象 (DUT) の回路の両方を入れてしまいました。 変更されたのは、 EXI2C コンポーネントが UART コンポーネントになった所と周期割り込みの仕掛けが追加された事です。
UART コンポーネントは、 115200 bit/s の速度で送信専用に設定されています。 理論的には、毎秒 10k バイトぐらいは出せるのですが、受信側が追い付かない事がわかりました。 そのため、サンプリング周期を割り込みで作り出して、順次、送信します。 この回路の場合、サンプリング周期は毎秒 1000 サンプルになっています。
前回の EZI2C を使った通信方式では、 PC 側でサンプリングタイミングを作り出していました。 ところが、ハンドシェイクを使わない UART の場合には、送信側が一方的にデータを送り出す仕組みなので、 PSoC 側でサンプリングタイミングを作ります。 これが、前回との大きな違いとなっています。
ファームウェアは、こうなった
ファームウェアは、ちょっとだけ複雑になりました。 割り込み処理ルーチン (Interrupt Service Routine; ISR) を宣言して、割り込みが発生したらフラグ "Int_Sample_flag" を立てます。 メインループで、このフラグを検出して、サンプリングの処理を行います。 これで、周期的にサンプリングを行い、データを送出できるようになりました。
データの受信と表示
今回もデータの受信には、 Bridge Control Panel (BCP) を使用します。 CY8CKIT-042 の USB-UART に割り当てられた COM ポートを選択すると、 UART の受信が出来るようになります。 ボーレートなどのプロトコルの設定は、 "Tools" → "Protocol Configuration" で設定できます。
データの受信に使用される構文は、 "rx8 @0Probe" でおしまいです。 この実装の場合、送られてきた8ビットのデータを延々と受信するだけなので、データの始まりも終わりもありません。 複数バイトの受信が必要な場合には、ヘッダやトレーラを設定する事も出来ます。
データを受信した後は、表示を行いますが、サンプル速度が変わったので一画面当たりのサンプル数を変更する必要があります。 UART 版では、サンプル速度が割り込みによって比較的正確に決められています。 ここでは、一画面に22クロック(22秒)を表示するために一画面当たり22000サンプルに設定します。
これで、波形が表示できるようになりました。 今度は、 PC の画面表示能力にボトルネックが現れたように思われます。
プロジェクトアーカイブ
この記事を書くために作成したプロジェクトは、このファイルの拡張子を ZIP に変更して展開すると再現できます。
関連商品
Cypress PSoC4-PIONEER KIT CY8CKIT-042
- 出版社/メーカー: Cypress
- メディア: その他
関連文献
トランジスタ技術増刊 基板付き体験編ARM PSoCで作るMyスペシャル・マイコン 2013年 12月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2013/11/21
- メディア: 雑誌
シリーズ最強!PSoC3ボード+デバッグ・ボード (トライアルシリーズ)
- 作者: 古平 晃洋
- 出版社/メーカー: CQ出版
- 発売日: 2012/05
- メディア: 単行本
コメント 0