跳到主要内容

ESP32(经典款)外设映射

本文说明 ESP32(双核 Xtensa LX6)片上外设与 TuyaOpen TKL 层软件端口的映射关系。

GPIO

  • 所有 GPIO 引脚均支持中断。
  • TUYA_GPIO_NUM_E 枚举值与物理 GPIO 编号直接 1:1 对应。
  • TUYA_GPIO_NUM_24 映射为 GPIO_NUM_NC不可使用
  • GPIO34 ~ GPIO39 为仅输入引脚,不支持输出模式及上下拉配置。
GPIO 范围TUYA_GPIO_NUM 范围说明
GPIO0 ~ GPIO23TUYA_GPIO_NUM_0 ~ TUYA_GPIO_NUM_23通用 IO
TUYA_GPIO_NUM_24NC,不可使用
GPIO25 ~ GPIO33TUYA_GPIO_NUM_25 ~ TUYA_GPIO_NUM_33通用 IO
GPIO34 ~ GPIO39TUYA_GPIO_NUM_34 ~ TUYA_GPIO_NUM_39仅输入,无输出 / 上下拉

UART

  • 支持 2 路串口。
  • UART0 的 TX / RX 引脚通过 Kconfig 选项 UART_NUM0_TX_PIN / UART_NUM0_RX_PIN 配置,默认为 GPIO1 / GPIO3。
  • UART1 有专用 IO_MUX 引脚,默认引脚可在初始化前通过 tkl_io_pinmux_config() 修改。
修改 UART0 引脚

在项目目录下运行 tos.py config menu 进入板子配置子界面,找到对应选项并输入目标 GPIO 编号,或直接编辑 boards/ESP32/ESP32/Kconfig 中的 default 值,重新构建后生效。

Board PinFunctionSoftware PinSoftware Port
GPIO1(默认)UART0_TXTUYA_GPIO_NUM_1TUYA_UART_NUM_0
GPIO3(默认)UART0_RXTUYA_GPIO_NUM_3TUYA_UART_NUM_0
GPIO10(默认)UART1_TXTUYA_GPIO_NUM_10TUYA_UART_NUM_1
GPIO9(默认)UART1_RXTUYA_GPIO_NUM_9TUYA_UART_NUM_1

I2C

  • 支持 2 路 I2C。
  • 默认引脚可在外设初始化前通过 tkl_io_pinmux_config() 修改。
Board Pin(默认)FunctionSoftware PinSoftware Port
GPIO0I2C0_SCLTUYA_IIC0_SCLTUYA_I2C_NUM_0
GPIO1I2C0_SDATUYA_IIC0_SDATUYA_I2C_NUM_0
GPIO2I2C1_SCLTUYA_IIC1_SCLTUYA_I2C_NUM_1
GPIO3I2C1_SDATUYA_IIC1_SDATUYA_I2C_NUM_1

PWM

  • 支持 6 路 PWM,使用 ESP-IDF LEDC 驱动(LEDC_LOW_SPEED_MODE,12 位分辨率)。
  • 默认引脚可在外设初始化前通过 tkl_io_pinmux_config() 修改。
Board Pin(默认)FunctionSoftware PinSoftware Port
GPIO18PWM0TUYA_PWM0TUYA_PWM_NUM_0
GPIO19PWM1TUYA_PWM1TUYA_PWM_NUM_1
GPIO22PWM2TUYA_PWM2TUYA_PWM_NUM_2
GPIO23PWM3TUYA_PWM3TUYA_PWM_NUM_3
GPIO25PWM4TUYA_PWM4TUYA_PWM_NUM_4
GPIO26PWM5TUYA_PWM5TUYA_PWM_NUM_5

ADC

  • 支持 2 路 ADC,通道通过位掩码(ch_list.data)配置,bit N 对应 ADC_CHANNEL_N
  • 衰减固定为 ADC_ATTEN_DB_12(量程约 0–3.3 V),校准采用 Line-fitting 方案。
  • ADC2 与 Wi-Fi 共用资源,Wi-Fi 激活期间不可读取。

ADC1(TUYA_ADC_NUM_0)

Board PinADC ChannelSoftware Port
GPIO36(VP)ADC1_CH0TUYA_ADC_NUM_0
GPIO37ADC1_CH1TUYA_ADC_NUM_0
GPIO38ADC1_CH2TUYA_ADC_NUM_0
GPIO39(VN)ADC1_CH3TUYA_ADC_NUM_0
GPIO32ADC1_CH4TUYA_ADC_NUM_0
GPIO33ADC1_CH5TUYA_ADC_NUM_0
GPIO34ADC1_CH6TUYA_ADC_NUM_0
GPIO35ADC1_CH7TUYA_ADC_NUM_0

ADC2(TUYA_ADC_NUM_1)

Wi-Fi 冲突

ESP32 ADC2 与 Wi-Fi RF 共用硬件资源,Wi-Fi 激活期间 ADC2 读取将失败。仅在 Wi-Fi 关闭时使用 TUYA_ADC_NUM_1

Board PinADC ChannelSoftware Port
GPIO4ADC2_CH0TUYA_ADC_NUM_1
GPIO0ADC2_CH1TUYA_ADC_NUM_1
GPIO2ADC2_CH2TUYA_ADC_NUM_1
GPIO15ADC2_CH3TUYA_ADC_NUM_1
GPIO13ADC2_CH4TUYA_ADC_NUM_1
GPIO12ADC2_CH5TUYA_ADC_NUM_1
GPIO14ADC2_CH6TUYA_ADC_NUM_1
GPIO27ADC2_CH7TUYA_ADC_NUM_1
GPIO25ADC2_CH8TUYA_ADC_NUM_1
GPIO26ADC2_CH9TUYA_ADC_NUM_1

参考资料