ラズピコ VSCodeによるデバッグとUARTで標準入出力

ラズピコ VSCodeによるデバッグとUARTで標準入出力

皆さん こんにちは。

前回は記事が長くなったので環境を構築を終えたところで一区切りしました。

今回は前回作成したプロジェクトを使ってデバッグ機能のおさらいをした後、標準入出力について確認してみます。

接続

もう一度接続の姿図を貼っておきます。
左がデバッガーのPicoprobeで、右がターゲットのラズピコです。

前回作成した Pico Project の Console Options では Console Over UART を選択していました。

この設定ではUARTを標準入出力として使うことができます。

信号の接続

信号の接続は以下の通りです。

信号 Picoprobe ラズピコ
GND 3 3 黒色
SWCLK 4 D1 水色
SWDIO 5 D3 紫色
UART0 RX(ラズピコの受信) 6 2 橙色
UART0 TX(ラズピコの送信) 7 1 黄色

UART0 TX , RX はターゲットのラズピコ側から見た信号になります。

ソースコードを編集する

C:\Users\m3925\Documents\Pico\pico-project-generator\picoUartConsole のディレクトリに picoUartConsole.c のファイルがあります。

m3925の部分は皆さまのユーザー名に置き換えてください。

ジェネレーターがつくるひな形のコードだと1度だけ出力してプログラムが終わってしまうので、エディタで以下のように編集して保存しておきます。
もちろんVSCode上で編集しても問題ありません。

#include <stdio.h>
#include "pico/stdlib.h"

int main()
{
    int c;
    stdio_init_all();
    while (true) {
        c = getchar();
        putchar(c);
    }
    return 0;
}

これで繰り返し入出力処理が行われます。

getchar() : 標準入力

PCから送信した文字がラズピコの UART0 RX からマイコンに届きます。

putchar() : 標準出力

マイコンに届いた文字を UART0 TX から PCに向けて送信します。

起動の手順を確認

それでは前回作成したプロジェクトをつかってVSCodeを起動してみます。

まず Picoのディレクトリに移動して Developer Command Prompt for Pico をダブルクリックして起動します。

起動後、前回作成した op.bat を起動します。

op と入力した後 Enterキーを押して起動します。

OpenOCDはこのまま起動したままにしておきます。

続けて Visual Studio Code for Pico をダブルクリックして起動します。

成功すると、以下のようにデバッグモードで起動することができます。

OpenOCDを起動してからVisual Studio Code for Picoの起動が遅いとタイムアウトのエラーが出ることがあるので気をつけてください。

以下のフローディングパレットでもデバッグ操作が可能ですが、ファンクションキー(Fxx)操作の方が快適ですね。

Start Debugging ( Continue ) : F5
Step Over : F10
Step Into : F11
Toggle Breakpoint : F9

など Run メニューからキーの割り当てを確認してください。

PC側の準備

通信の確認用として Tera Term を使います。

お持ちでない方は こちら からダウンロードしてお使いください。

インストール後、 Tera Term を起動し、シリアルポートでPicoprobeのCOMポートを選択します。

もしCOMポートが複数ある場合には、Picoprobe以外の通信ケーブルをはずしてデバイスマネージャーでCOMポート番号を確認しておきます。

起動後、設定メニューのシリアルポートから以下の設定を行います。

初期状態からスピートを 115200 に変更します。

(通信速度は 115200 bps 固定になっているようです)

それから設定メニューの端末から以下の設定を行います。

初期状態からローカルエコーにチェックを入れます。

プログラムを動作させる

それでは VScode にフォーカスをあてて、F5キーを押してプログラムを動作させます。

Tera Term にフォーカスをあてて、何かキーを押し送信した文字が返ってくれば成功です。

(同じ文字が2つづつ表示される)

送信のラインをはずしてみる

それではターゲットのラズピコの1番ピンにつながっている黄色の線をはずしてみてください。

その状態で Tera Term からキーを押すとどうでしょうか?

一文字づつ表示されるはずです。

これはラズピコでは受け取っているけれど、送信する文字の信号線がはずれているためPCに届かないからです。

標準入出力の設定

VSCodeでCMakeLists.txtをクリックして表示させます。

赤枠部分の pico_enable_stdio_uart(picoUartConsole 1) の ‘1’ が UARTを標準入出力にする設定です。

その下の pico_enable_stdio_usb((picoUartConsole 0) の方は ‘0’ になっています。

これらはどちらかを’1′ または両方を ‘0’ に設定します。

後者を ‘1’ にすると標準入出力に USB を使うことになります。

いかがでしたか?

うまくデバッグできましたか?
また、うまくUART通信できましたか?

お疲れさまでした。

UARTカテゴリの最新記事