ESP32-EVBを使って、esp-idfのuart_echoサンプルを試してみたいと思います。
esp-idf/examples/peripherals/uart_echo/main/uart_echo_example_main.c
サンプルをコピーします
1 |
$ cp -r esp-idf/examples/peripherals/uart_echo ./ |
ESP32-EVBのシリアルポートを確認します
1 |
$ ls /dev/tty.* |
/dev/tty.wchusbserial1410
である事が確認出来ます。
makeの設定をします
1 2 |
$ cd uart_echo $ make menuconfig |
コンパイルしたプログラムを書き込むためのESP32-EVBのシリアルポートを設定します。
ここで接続についての確認をしてみます。
UEXTで GPIO4/U1TXD GPIO36/U1RXD が使えそうです。
USB to UARTでは GPIO3/U0RXD GPIO1/U0TXD が使われています。

またPINアサインは以下のようになっています(参考)
サンプルコードでは、フロー制御がonになっていますが
通常パソコンのUSB-UARTでは使わないのでoffにしたいと思います。
UEXTが接続し易いので
GPIO4/U1TXD GPIO36/U1RXD
で実装してみます。
コピーしたサンプルのプラグラムを以下のように変更します。
$ emacs main/uart_echo_example_main.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include <stdio.h> #include <string.h> #include <stdlib.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "nvs_flash.h" #include "driver/uart.h" #include "freertos/queue.h" #include "esp_log.h" #include "soc/uart_struct.h" // GPIO4-26 U1TX GPIO36-4 U1RX #define ECHO_TEST_TXD (4) #define ECHO_TEST_RXD (36) #define BUF_SIZE (1024) static void echo_task() { const int uart_num = UART_NUM_1; uart_config_t uart_config = { .baud_rate = 115200, .data_bits = UART_DATA_8_BITS, .parity = UART_PARITY_DISABLE, .stop_bits = UART_STOP_BITS_1, .flow_ctrl = UART_HW_FLOWCTRL_DISABLE, .rx_flow_ctrl_thresh = 122, }; uart_param_config(uart_num, &uart_config); uart_set_pin(uart_num, ECHO_TEST_TXD, ECHO_TEST_RXD, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); uart_driver_install(uart_num, BUF_SIZE * 2, 0, 0, NULL, 0); uint8_t* data = (uint8_t*) malloc(BUF_SIZE); while(1) { int len = uart_read_bytes(uart_num, data, BUF_SIZE, 20 / portTICK_RATE_MS); uart_write_bytes(uart_num, (const char*) data, len); } } void app_main() { xTaskCreate(echo_task, "uart_echo_task", 1024, NULL, 10, NULL); } |
別に用意したUSB-SerialとESP32-EVBを
お互いのTXをRXへRXをTXに繋ぎます。
GNDも接続しておきます。

コンパイルして、転送します。
1 |
$ make flash |
以下の様に表示されれば正常にESP32にプログラムが書き込まれています。
動作を確認してみます。
Serial Echoプログラムなので
シリアルコンソールから文字を入力したら
そのまま同じ文字が返されます。
CoolTeamで接続して確認します。
設定は以下のように行います。
文字を入力すると入力した文字がそのまま返される事が確認できます。
GPIO4/U1TXD GPIO36/U1RXDを利用したUARTによるシリアル通信の動作を確認できました。
Software Engineer #Unity #iOS