Statistics: Posted by Xiong Yu — Tue Nov 27, 2018 8:21 pm
Code:
unsigned long detectedBaudrate;
while(millis() - start < 11000) {
if(detectedBaudrate = uart_detect_baudrate(UART0)) break;
yield();
delay(100);
}
Serial.println(detectedBaudrate);
unsigned long detectedBaudrate;
while(millis() - start < 11000) {
if(detectedBaudrate = uart_detect_baudrate(UART0)) break;
yield();
delay(100);
}
Serial.println(detectedBaudrate);
Code:
uint32_t uart_detect_baudrate(int uart_nr) {
uint32_t divisor = uart_baudrate_detect(uart_nr, 1);
if(!divisor) return 0;
uint32_t baudrate = UART_CLK_FREQ / divisor;
uint32_t default_rates[] = {300, 600, 1200, 2400, 4800, 9600, 19200,
38400, 57600, 74880, 115200, 230400, 256000, 460800, 921600, 1843200,
3686400};
size_t i;
for(i = 1; i < sizeof(default_rates) / sizeof(default_rates[0]) - 1;
i++) {
if(baudrate <= default_rates[i]) {
if(baudrate - default_rates[i - 1] < default_rates[i] - baudrate)
i--;
break;
}
}
return default_rates[i];
}
Statistics: Posted by JeroenD — Tue Jul 24, 2018 1:52 pm