NodeMCU - включить UART1 / 2 на ESP32

Я создал прошивку, как описано здесь: https://nodemcu.readthedocs.io/en/dev-esp32/build/

Но я не могу заставить работать аппаратный UART 1 или 2. Есть ли какой-то конкретный компонент, который должен быть включен (и он не включен по умолчанию), чтобы он заработал?

вот мой тестовый код:

uart_id = 2

local function on_data(data)
    print("IN: ", tostring(data))
end

local function on_error(data)
    print("ERR: ", tostring(data))
end

local cnt = 0;
local function on_timer()
    print(". "..cnt)
    cnt = cnt + 1
    uart.write(uart_id, "# " .. cnt .. "\n")
end

local tmrObj = tmr.create()
tmrObj:register(5000, tmr.ALARM_AUTO, on_timer)
tmrObj:start()

uart.setup(uart_id, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1, 1)
uart.on(uart_id, "data", '\r', on_data)
uart.on(uart_id, "error", on_error)
uart.setmode(uart_id, uart.MODE_UART)
uart.start(uart_id)

person Maciej Miklas    schedule 29.04.2019    source источник


Ответы (1)


Прошивка в порядке, uart.setup была некорректной. ПИН-коды отсутствовали, и по какой-то причине ПИН-коды по умолчанию не работали, это нормально:

uart.setup(uart_id, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1, {rx = 16, tx = 17})
person Maciej Miklas    schedule 29.04.2019
comment
Отлично, что ты исправил. Если вы считаете, что в нашей документации чего-то не хватает, поднимите PR, чтобы улучшить ее. - person Marcel Stör; 29.04.2019
comment
Документация предполагает, что контакты не являются обязательными в методе настройки, это можно улучшить. Я знаю, что вы можете назначить любой PIN-код, но вы можете поменять местами с {rx = 17, tx = 16} на {rx = 16, tx = 17}, в таком случае документация будет отражать маркировку на плате разработчика. - person Maciej Miklas; 30.04.2019