2019年7月21日日曜日

ESP32/arduino:GPIOについて

目的:

ESP32-WROOM32 の GPIO 設定について纏める。

GPIO 一覧:

GPIO 一覧を下表に纏める。


ピン名称 No. GPIO ADC その他 主な 用途 リセット時状態 備考
入力EN PU/PD
IO0 25 GPIO0         TOUCH1 EN PU ブートストラップ
TXD0 35 GPIO1     TXD     EN PU UART に使用
IO2 24 GPIO2 ADC2 A12 HSPIWP HS2_DATA0 TOUCH2 EN PD ブートストラップ
RXD0 34 GPIO3     RXD     EN PU UART に使用
IO4 26 GPIO4 ADC2 A10 HSPIHD HS2_DATA1 TOUCH0 EN PD  
IO5 29 GPIO5     SS     EN PU ブートストラップ
SCK/CLK 20 GPIO6     SCK     EN PU 使用不可
SDO/SD0 21 GPIO7     SDO     EN PU 使用不可
SDI/SD1 22 GPIO8     SDI     EN PU 使用不可
SHD/SD2 17 GPIO9     SHD     EN PU 使用不可
SWP/SD3 18 GPIO10     SWP     EN PU 使用不可
SCS/CMD 19 GPIO11     SCS     EN PU 使用不可
IO12 14 GPIO12 ADC2 A15 HSPIQ HS2_DATA2 TOUCH5 EN PD ブートストラップ
IO13 16 GPIO13 ADC2 A14 HSPID HS2_DATA3 TOUCH4 EN    
IO14 13 GPIO14 ADC2 A16 HSPICLK HS2_SCK TOUCH6 EN    
IO15 23 GPIO15 ADC2 A13 HSPICS0 HS2_CMD TOUCH3 EN PU ブートストラップ
IO16 27 GPIO16           EN    
IO17 28 GPIO17           EN    
IO18 30 GPIO18     VSPICLK     EN    
IO19 31 GPIO19     VSPIQ     EN    
IO21 33 GPIO21     VSPIHD SDA   EN    
IO22 36 GPIO22     VSPIWP SCL   EN    
IO23 37 GPIO23     VSPID     EN    
IO25 10 GPIO25 ADC2 A18 DAC1     DIS    
IO26 11 GPIO26 ADC2 A19 DAC2     DIS    
IO27 12 GPIO27 ADC2 A17     TOUCH7 EN    
IO32 8 GPIO32 ADC1 A4     TOUCH9 DIS    
IO33 9 GPIO33 ADC1 A5     TOUCH8 DIS    
IO34 6 GPIO34 ADC1 A6       DIS   入力のみ, PU/PD 無し
IO35 7 GPIO35 ADC1 A7       DIS   入力のみ, PU/PD 無し
SENSOR_VP 4 GPIO36 ADC1 A0 SVP     DIS   入力のみ, PU/PD 無し
SENSOR_VN 5 GPIO39 ADC1 A3 SVN     DIS   入力のみ, PU/PD 無し

*No. は ESP32-WROOM32 の ピンNo.
*GPIO6~11 は使用不可 (ESP32-WROOM-32内で SPIフラッシュメモリに使用)
*GPIO 0,2,5,12,15 は 起動モード設定に使用される為、外部での プルアップ、プルダウン時は注意する必要がある。
*GPIO 34~39 は 入力専用で、内部プルアップ/プルダウンは無い。


GPIO設定方法:

ピンモード設定

pinMode( GPIO No. ,  モード ) ;

モード : OUTPUT      出力に設定
      INPUT        入力に設定
      INPUT_PULLUP   入力 (内臓プルアップ付き) に設定

例 :
GPIO13 を プルアップ付き 入力 に設定
pinMode (13, INPUT_PULLUP) ;
GPIO27 を出力に設定し、'High' を出力
pinMode (27,OUTPUT) ;
digitalWrite (27, HIGH) ;

内臓プルアップ/プルダウン 設定

プルアップ設定は pinMode の INPUT_PULLUP 設定でできるが、プルダウンはできない。
プルダウン設定は、以下の方法で設定可能。

gpio_set_pull_mode( GPIO_NUM , PULL_MODE) ;

GPIO_NUM :  GPIO_NUM_0 ~ GPIO_NUM_39
PULL_MODE : GPIO_PULLUP_ONLY      プルアップ
       GPIO_PULLDOWN_ONLY    プルダウン
       GPIO_PULLUP_PULLDOWN   プルアップ、プルダウン 両方
       GPIO_FLOATING        プルアップ/プルダウン 無し
プルアップ/プルダウン の抵抗値は  20KΩ~50KΩ。

例 :
GPIO13 を プルダウン付き 入力 に設定
pinMode (13, INPUT) ;
gpio_set_pull_mode( GPIO_NUM_13, GPIO_PULLDOWN_ONLY) ;


2 件のコメント: