Skip to content

ESP8266 CTS/RTS fails in stop_uart_hw_flow_ctrl() #9196

Closed
@ccli8

Description

@ccli8

Description

I am evaluating ESP8266 CTS/RST on Nuvoton target, for example on NUMAKER_PFM_M487. For this test, I have UART CTS/RTS/RST connected besides UART Rx/Tx, For enabling CTS/RTS and reset functions, I pass these pins to ESP8266 driver as below:

static ESP8266Interface esp(D1, D0, false, A2, A3, D2);

Without any change to ESP8266 driver, I am very easy to meet _esp.stop_uart_hw_flow_ctrl() failure:

mbed-os/components/wifi\esp8266-driver/ESP8266Interface.cpp (no change):

nsapi_error_t ESP8266Interface::_init(void)
{
    if (!_initialized) {
        _hw_reset();
        if (!_esp.at_available()) {
            return NSAPI_ERROR_DEVICE_ERROR;
        }
        if (!_esp.stop_uart_hw_flow_ctrl()) {
            return NSAPI_ERROR_DEVICE_ERROR;
        }
        if (!_esp.reset()) {
            return NSAPI_ERROR_DEVICE_ERROR;
        }

AT log of _esp.stop_uart_hw_flow_ctrl() failure:

Start WiFi test
Start Connection ...

Using WiFi

Connecting to WiFi..
AT> AT
AT? OK
%n
AT< rlAT< ▒
▒AT< ll`b▒▒▒
▒▒r▒▒AT< ready
AT! WIFI
AT? %*12[^"]
%n
AT= CONNECTED

AT? OK
%n
AT(Timeout)
AT> AT
AT? OK
%n
AT< AT
AT= OK


AT> AT+UART_CUR=115200,8,1,0,0
AT? OK
%n
AT? OK
AT+UART_CUR=115200,8
AT< ,1,0,0
AT< OK
AT< AT+OK
AT? %n
AT(Timeout)

If I re-try _esp.stop_uart_hw_flow_ctrl() like below, it can work. And the ESP8266 CTS/RTS function is workable after this modification.

mbed-os/components/wifi\esp8266-driver/ESP8266Interface.cpp (retry _esp.stop_uart_hw_flow_ctrl()):

nsapi_error_t ESP8266Interface::_init(void)
{
    if (!_initialized) {
        _hw_reset();
        if (!_esp.at_available()) {
            return NSAPI_ERROR_DEVICE_ERROR;
        }
        if (!_esp.stop_uart_hw_flow_ctrl()) {
            
            if (!_esp.stop_uart_hw_flow_ctrl()) {
                return NSAPI_ERROR_DEVICE_ERROR;
            }
            
        }
        if (!_esp.reset()) {
            return NSAPI_ERROR_DEVICE_ERROR;
        }

AT log of retrying _esp.stop_uart_hw_flow_ctrl() failure:

Start WiFi test
Start Connection ...

Using WiFi

Connecting to WiFi..
AT> AT
AT? OK
%n
AT< rlAT< ▒
▒AT< ll`b▒▒▒
▒▒r▒▒AT< ready
AT! WIFI
AT? %*12[^"]
%n
AT= CONNECTED

AT? OK
%n
AT(Timeout)
AT> AT
AT? OK
%n
AT< AT
AT= OK


AT> AT+UART_CUR=115200,8,1,0,0
AT? OK
%n
AT? OK
AT+UART_CUR=115200,
AT< 8,1,0,0
AT< OK
AT< GOT IP
AT(Timeout)
AT? %n
AT(Timeout)
AT> AT+UART_CUR=115200,8,1,0,0
AT? OK
%n
AT< AT+UART_CUR=115200,8,1,0,0
AT= OK


AT> AT+RST
AT? OK
%n
AT< AT+RST
AT= OK

mbed-os SHA
70956ee (origin/master, origin/HEAD, master) Merge pull request #8955 from ARMmbed/dreemkiller_LPC54608_fix

ESP8266 AT version
1.6.2

ESP8266 SDK version
2.2.1

Related issue

#9088

Issue request type

[ ] Question
[ ] Enhancement
[x] Bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions