Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
UART(HardwareSerial)の実験(ESP-WROOM-32)

概要

Arduino core for the ESP32を使った、ESP-WROOM-32開発ボードのUART(HardwareSerial)についての実験です。

ソースコードを見ていると、ESP-WROOM-32では、UARTは3組利用することがわかりました。使い方を調べてみました。

Arduino core for the ESP32のインストールのページはこちら

実験

Arduino core for the ESP32のHardwareSerialの定義と、Serial.begin()のコードは、以下のようになっていました。

HardwareSerial Serial(0);

HardwareSerial::HardwareSerial(int uart_nr) : _uart_nr(uart_nr), _uart(NULL) {}

void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, int8_t txPin)
{
    if(_uart_nr == 0 && rxPin < 0 && txPin < 0) {
        rxPin = 3;
        txPin = 1;
    }
    if(_uart_nr == 1 && rxPin < 0 && txPin < 0) {
        rxPin = 9;
        txPin = 10;
    }
    if(_uart_nr == 2 && rxPin < 0 && txPin < 0) {
        rxPin = 16;
        txPin = 17;
    }
    _uart = uartBegin(_uart_nr, baud, config, rxPin, txPin, 256, false);
}

デフォルトでは、Serialが定義されていて、_uart_nrが0に設定されています。残り2個についても、使えそうです。

また、利用するデフォルトのピンは、以下のように設定されています。

_uart_nr RXピン TXピン
0 3 1
1 9 10
2 16 17

ただし、1番に定義されている、9番ピンと10番ピンの組み合わせでは、うまく動作しませんでした(間違っている可能性があるので、ご自分で確認をお願いします)。少し調べたところ、ESP32フォーラムに、以下のような内容が記載されていました。

GPIOs 9 & 10 are connected to the SPI flash chip by default, although only used in QIO mode. It's probably safer to use different pins (almost any apart from 6, 7, 9, 10, 11 which are SPI flash and 1, 3 which are UART0 default pins. Consult the ESP32 Pin List document from here for more.)

例えば、以下のようなコードを使えば、16番ピンと17番ピンを、Serial2として使うことができました。

HardwareSerial Serial2(2);

void setup() {
  // put your setup code here, to run once:
  Serial2.begin(9600);
}

また、以下のようなコードで、26番ピンをRX、27番ピンをTXとして利用することができました。

HardwareSerial Serial2(2);

void setup() {
  // put your setup code here, to run once:
  Serial2.begin(9600, SERIAL_8N1, 26, 27);
}

全てのピンが利用できるかまでは、調べていませんが、複数のHardwareSerialが使えることはわかりました。ESP32開発ボードでは、おそらくは、デフォルトで割り当てのないピン(このページの一番下の図の、ピン番号の横が空白のピン)が使えるのではないかと推測しています。あくまで、推測ですが。

バージョン

Arduino 1.8.3/Arduino core for the ESP32/ESP-WROOM-32



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2017 garretlab all rights reserved.
inserted by FC2 system