Reading old messages in UART1 (changing baudrate, buffer flush...)
Posted: Tue Oct 23, 2018 9:38 am
Hi there.
My idf version is v3.0-dev-1597-g2ddee729.
I use the UART's like this:
-UART0: communicate with other uC.
-UART1: communicate with a GSM
-UART2: print debug messages
I'm using the function of loboris example for PPPos and GSM, to send and receive to module via UART. (https://github.com/loboris/ESP32-PPPOS-EXAMPLE)
https://pastebin.com/2UEg7Vmg
I have to change baudrate of module GSM or else I'm receiving FCS drops when downloading (viewtopic.php?f=17&t=1496&start=30#p29823)
So here's my sequence when it goes correctly (always first time it executes):
The problem occurs when I want to reset the module. I reset the module by setting it's RESET signal low and then HIGH.
Then I try to do the sequence again, and sometimes I'm getting messages from UART like they're duplicated or like old data messages.
And when an error like this happens, it keeps happening until I reset the power
For example:
or for example in this one, the first AT is reading the response of a past "AT+CGDATA="PPP"
Is uart_flush() not working? (it's being called before sending an AT command)
Also tried to delete uart driver and install it again with new baudrate, instead of using uart_get_baudrate(), but same result.
Also noticed that a esp_restart() don't solve the problem
My idf version is v3.0-dev-1597-g2ddee729.
I use the UART's like this:
-UART0: communicate with other uC.
-UART1: communicate with a GSM
-UART2: print debug messages
I'm using the function of loboris example for PPPos and GSM, to send and receive to module via UART. (https://github.com/loboris/ESP32-PPPOS-EXAMPLE)
https://pastebin.com/2UEg7Vmg
I have to change baudrate of module GSM or else I'm receiving FCS drops when downloading (viewtopic.php?f=17&t=1496&start=30#p29823)
So here's my sequence when it goes correctly (always first time it executes):
Code: Select all
//Starting UART1 at 115200
AT COMMAND: [AT..]
AT RESPONSE: [..OK..]
AT COMMAND: [ATE0..]
AT RESPONSE: [..OK..]
AT COMMAND: [AT+IPR="19200"..]
AT RESPONSE: [..OK..]
//Changing UART1 baudrate to 19200 after AT+IPR="19200" executes ok
AT COMMAND: [AT+CFUN=1.]
AT RESPONSE: [..OK..]
AT COMMAND: [AT+CSQ..]
AT RESPONSE: [..+CSQ: 11,99....OK..]
AT COMMAND: [AT+CPIN?..]
AT RESPONSE: [..+CPIN: READY....OK..]
Skip command: [AT+CPIN="1234"..]
AT COMMAND: [AT+CREG?..]
AT RESPONSE: [..+CREG: 0,1....OK..]
AT COMMAND: [AT+CGDCONT=1,"IP","myApnUrl"..]
AT RESPONSE: [..OK..]
AT COMMAND: [AT+CGDATA="PPP",1..]
AT RESPONSE: [..CONNECT 14400000..]
status_cb: Connected
ipaddr = 10.156.191.53
gateway = 10.64.64.64
netmask = 255.255.255.255
ip6addr = ::
Then I try to do the sequence again, and sometimes I'm getting messages from UART like they're duplicated or like old data messages.
And when an error like this happens, it keeps happening until I reset the power
For example:
Code: Select all
AT COMMAND: [AT..]
AT RESPONSE: [....OK...]
AT COMMAND: [ATE0..]
AT BAD RESPONSE: [......RDY..]
GSM: Wrong response [1], restarting...
Skip command: [AT..]
AT COMMAND: [ATE0..]
AT BAD RESPONSE: [AT...O]
GSM: Wrong response [2], restarting...
Skip command: [AT..]
AT COMMAND: [ATE0..]
AT BAD RESPONSE: [K..ATE]
GSM: Wrong response [3], restarting...
Skip command: [AT..]
AT COMMAND: [ATE0..]
AT RESPONSE: [0...OK]
AT COMMAND: [AT+IPR="19200"..]
AT RESPONSE: [....OK]
AT COMMAND: [AT+CFUN=1.]
AT RESPONSE: [....OK]
AT COMMAND: [AT+CSQ..]
AT BAD RESPONSE: [....OK....OK....OK...]
Code: Select all
GSM: Resetting GSM module...
//RESET pin low
GSM: Reset module done
//RESET pin high
GSM: start AT conf sequence
AT COMMAND: [AT..]
AT BAD RESPONSE: [CT 144000]
GSM: Wrong response [1], restarting...
AT COMMAND: [AT..]
AT BAD RESPONSE: [00.......]
GSM: Wrong response [2], restarting...
AT COMMAND: [AT..]
AT RESPONSE: [g.AT...OK]
AT COMMAND: [ATE0..]
AT BAD RESPONSE: [..AT.]
GSM: Wrong response [1], restarting...
Skip command: [AT..]
AT COMMAND: [ATE0..]
AT BAD RESPONSE: [AT...O]
GSM: Wrong response [2], restarting...
Skip command: [AT..]
AT COMMAND: [ATE0..]
AT BAD RESPONSE: [K..ATE]
GSM: Wrong response [3], restarting...
Skip command: [AT..]
AT COMMAND: [ATE0..]
AT RESPONSE: [0...OK]
AT COMMAND: [AT+IPR="19200"..]
AT RESPONSE: [....OK]
AT COMMAND: [AT+CFUN=1.]
AT RESPONSE: [....OK]
AT COMMAND: [AT+CSQ..]
AT BAD RESPONSE: [....OK....OK....OK...]
GSM: Wrong response [1], restarting...
Also tried to delete uart driver and install it again with new baudrate, instead of using uart_get_baudrate(), but same result.
Also noticed that a esp_restart() don't solve the problem