PSoC5LP KitProgのUARTブリッジで921,600baud接続
PSoC Advent Calender 2017の21日目の記事です。
1. PSoC 5LP Prototyping KitのUARTブリッジ機能
PSoC 5LP Prototyping Kit(CY8CKIT-059)に付いているKitProgには、プログラムを書き込む機能以外に、PCとPSoC間をUARTとI2Cで接続してくれるブリッジ機能が内蔵されています。これは、デバッグやPCとのデータ転送にとても便利です。
KitProgのUARTブリッジ機能(USB-UART)からは、予めPSoC(ターゲット)にTX/RXが配線されているので、PSoC側にUARTコンポーネントを追加して、PSoC Creator上で下記のようにピンを接続するだけでOKです。
UARTコンポーネントのTX:P12_7ピン
UARTコンポーネントのRX:P12_6ピン
あとは、UARTコンポーネントに設定したボーレートとPC側のターミナルソフトのボーレートを合わせればよいのです・・・がっ!
やってみると分かるのですが、115,200より高いボーレートだと文字化けしてしまい、あまり高速に接続できないのです(´;ω;`)ウッ…
でも、できればもっと高速に接続したいですよねー。
2. KitProgのUSB-UARTの実際のボーレート
何故文字化けしてしまうのかというと、PC側のターミナルソフトのボーレートが115,200より高いとき、KitProgとPSoC間のボーレートが一般的なシリアル通信の速度と若干異なる速度になるからだそうです。
ということは、PSoCのUARTを上表左側のボーレートに設定すれば、文字化けせずに通信できるはずです。ところが、PSoCのUARTコンポーネントの設定で選べる速度は、一般的なシリアル通信の速度(上表右側)だけなんですよね・・・
2. 解決策
ではどうすればいいのかというと、UARTコンポーネントに「外部クロック」を与えてやればいいそうです!
1. UARTコンポーネントの「Advanced」タブで「External clock」を選択します。このとき「Oversampling rate」で「通信に使用するボーレートの何倍のクロックを与えるか」を指定できますが、デフォルトの「8x」で大丈夫だと思います。
2. クロックコンポーネントを作成して、通信したいボーレートの8倍(あるいはOversampling rateを16xにしていれば16倍)のクロックを設定し、UARTコンポーネントのclockに接続します。
この例では8MHzを与えているので、UARTコンポーネントのボーレートは1Mbaudになります。このとき、上記の対応表を見ると、PC側のターミナルソフトを921,600baud(あるいは1Mbaud)に設定すればよいことが分かります。実際にPC側のTeraTermを921,600baudにして試してみましたが、ちゃんと文字化けせずにPSoCと通信できましたヽ(´▽`)ノ
3. おわりに
PSoC 5LP Prototyping KitのKitProgを使って、115,200より高いボーレートでPCとPSoCをシリアル接続する方法をご紹介しました。デバッグ用途だとそんなに高いボーレートは必要ないかもしれませんが、シリアル経由でお手軽に高速通信したい!という時に、少しでもお役に立てば幸いです!
コメント
コメントを投稿