@@ -647,12 +647,13 @@ unsigned long uartBaudrateDetect(uart_t *uart, bool flg)
647
647
648
648
while (hw -> rxd_cnt .rxd_edge_cnt < 30 ) { // UART_PULSE_NUM(uart_num)
649
649
if (flg ) return 0 ;
650
- ets_delay_us (1000 );
650
+ // ets_delay_us(1000);
651
+ delay (1 );
651
652
}
652
653
653
654
UART_MUTEX_LOCK ();
654
- // log_i("lowpulse_min_cnt = %d hightpulse_min_cnt = %d", hw->lowpulse.min_cnt , hw->highpulse.min_cnt );
655
- unsigned long ret = (hw -> lowpulse .lowpulse_min_cnt + hw -> highpulse .highpulse_min_cnt + 2 ) / 2 ;
655
+ log_i ("rxd_edge_cnt = %d lowpulse_min_cnt = %d hightpulse_min_cnt = %d" , hw -> rxd_cnt . rxd_edge_cnt , hw -> lowpulse .lowpulse_min_cnt , hw -> highpulse .highpulse_min_cnt );
656
+ unsigned long ret = (hw -> lowpulse .lowpulse_min_cnt + hw -> highpulse .highpulse_min_cnt ) >> 1 ;
656
657
UART_MUTEX_UNLOCK ();
657
658
658
659
return ret ;
@@ -669,6 +670,7 @@ unsigned long uartBaudrateDetect(uart_t *uart, bool flg)
669
670
UART_MUTEX_UNLOCK ();
670
671
671
672
return ret ;
673
+ #endif
672
674
#endif
673
675
return 0 ;
674
676
}
@@ -714,11 +716,14 @@ void uartStartDetectBaudrate(uart_t *uart) {
714
716
//hw->conf0.autobaud_en = 0;
715
717
//hw->conf0.autobaud_en = 1;
716
718
#elif CONFIG_IDF_TARGET_ESP32S3
719
+ // log_v("Start Init HW for baud detection");
717
720
uart_dev_t * hw = UART_LL_GET_HW (uart -> num );
718
- hw -> rx_filt .glitch_filt = 0x08 ;
721
+ hw -> rx_filt .glitch_filt = 1 ;
719
722
hw -> rx_filt .glitch_filt_en = 1 ;
720
723
hw -> conf0 .autobaud_en = 0 ;
721
724
hw -> conf0 .autobaud_en = 1 ;
725
+ // log_v("End Init HW for baud detection");
726
+
722
727
#else
723
728
uart_dev_t * hw = UART_LL_GET_HW (uart -> num );
724
729
hw -> auto_baud .glitch_filt = 0x08 ;
@@ -763,32 +768,44 @@ uartDetectBaudrate(uart_t *uart)
763
768
#ifdef CONFIG_IDF_TARGET_ESP32S3
764
769
hw -> conf0 .autobaud_en = 0 ;
765
770
766
- uart_sclk_t clk_src ;
767
- uart_ll_get_sclk (hw , & clk_src );
771
+ // uart_sclk_t clk_src;
772
+ // uart_ll_get_sclk(hw, &clk_src);
768
773
769
- switch (clk_src )
770
- {
771
- case UART_SCLK_APB :
772
- baudrate = getApbFrequency () / divisor ;
773
- break ;
774
+ const uint32_t sclk_freq = uart_ll_get_sclk_freq (hw );
775
+ // const uart_clkdiv_reg_t div_reg = {.val = hw->clkdiv.val};
776
+ // const uint32_t div16 = ( (div_reg.clkdiv * 16) + div_reg.clkdiv_frag );
774
777
775
- #if SOC_UART_SUPPORT_RTC_CLK
776
- case UART_SCLK_RTC :
777
- // baudrate = rtc_clk_slow_freq_get_hz() / divisor;
778
- log_e ("Currently unsupported clock source: UART_SCLK_RTC" );
779
- return 0 ;
780
- #endif
778
+ // log_v("Divisor: %d", divisor);
779
+ // log_v("Divider: %d", div16);
781
780
782
- #if SOC_UART_SUPPORT_XTAL_CLK
783
- case UART_SCLK_XTAL :
784
- baudrate = (getXtalFrequencyMhz () * 1000000 ) / divisor ;
785
- break ;
786
- #endif
787
-
788
- default :
789
- log_e ("You should not ended up here! Unsupported clock source: %d" , clk_src );
790
- return 0 ;
791
- }
781
+
782
+ baudrate = sclk_freq / (divisor * 2 );
783
+
784
+ // switch(clk_src)
785
+ // {
786
+ // case UART_SCLK_APB:
787
+ // log_v("Clock is APB");
788
+ // baudrate = getApbFrequency() / divisor;
789
+ // break;
790
+
791
+ // #if SOC_UART_SUPPORT_RTC_CLK
792
+ // case UART_SCLK_RTC:
793
+ // // baudrate = rtc_clk_slow_freq_get_hz() / divisor;
794
+ // log_e("Currently unsupported clock source: UART_SCLK_RTC");
795
+ // return 0;
796
+ // #endif
797
+
798
+ // #if SOC_UART_SUPPORT_XTAL_CLK
799
+ // case UART_SCLK_XTAL:
800
+ // log_v("Clock is XTAL");
801
+ // baudrate = (getXtalFrequencyMhz() * 1000000) / divisor;
802
+ // break;
803
+ // #endif
804
+
805
+ // default:
806
+ // log_e("You should not ended up here! Unsupported clock source: %d", clk_src);
807
+ // return 0;
808
+ // }
792
809
793
810
#else
794
811
hw -> auto_baud .en = 0 ;
0 commit comments