mirror of
https://github.com/cesanta/mongoose.git
synced 2026-11-07 16:01:30 +00:00
Improve ESP flasher baud rate setting
Use old baud rate and autodetected divider to calculate new divider. This works better with higher baud rates and drifting clocks. CL: mos: Improve ESP flasher baud rate setting PUBLISHED_FROM=7761e756c3ae7cc76e3b9a4fe3e40d06a779b2e8
This commit is contained in:
1 parent
95a36b1759
commit
0b2e474d52
8 files changed
+43
-23
No files matched your search
@@ -19,9 +19,13 @@
|
||||
|
||||
#include "rom_functions.h"
|
||||
|
||||
void set_baud_rate(uint32_t uart_no, uint32_t baud_rate) {
|
||||
uint32_t master_freq = ets_get_detected_xtal_freq() << 4;
|
||||
master_freq += (baud_rate / 2);
|
||||
uint32_t div = master_freq / baud_rate;
|
||||
uart_div_modify(uart_no, div);
|
||||
uint32_t set_baud_rate(uint32_t uart_no, uint32_t old_baud_rate,
|
||||
uint32_t new_baud_rate) {
|
||||
uint32_t uart_reg = REG_READ(UART_CLKDIV_REG(uart_no));
|
||||
uint32_t uart_div = uart_reg & UART_CLKDIV_M;
|
||||
uint32_t fraction = (uart_reg >> UART_CLKDIV_FRAG_S) & UART_CLKDIV_FRAG_V;
|
||||
uart_div = (uart_div << 4) + fraction;
|
||||
uint32_t master_freq = uart_div * old_baud_rate;
|
||||
uart_div_modify(uart_no, master_freq / new_baud_rate);
|
||||
return uart_div;
|
||||
}
|
||||
Reference in new issue
Block a user