@@ -547,27 +547,34 @@ uint8_t EspClass::getFlashSourceFrequencyMHz(void) {
547
547
548
548
/* *
549
549
* @brief Read the clock divider from hardware using HAL structures
550
+ * Based on ESP-IDF HAL implementation:
551
+ * - ESP32 classic: Uses SPI1.clock (typedef in spi_flash_ll.h line 52)
552
+ * - All modern chips: Use SPIMEM1.clock (typedef in spimem_flash_ll.h)
550
553
* @return Clock divider value (1 = no division, 2 = divide by 2, etc.)
551
554
*/
552
555
uint8_t EspClass::getFlashClockDivider (void ) {
553
556
#if CONFIG_IDF_TARGET_ESP32
554
- // ESP32 classic: Use SPI0 structure
555
- if (SPI0.clock .clk_equ_sysclk ) {
557
+ // ESP32 classic: Flash uses SPI1 peripheral (not SPI0)
558
+ // See: esp-idf/components/hal/esp32/include/hal/spi_flash_ll.h line 52
559
+ if (SPI1.clock .clk_equ_sysclk ) {
556
560
return 1 ; // 1:1 clock (no divider)
557
561
}
558
- return SPI0 .clock .clkcnt_n + 1 ;
562
+ return SPI1 .clock .clkcnt_n + 1 ;
559
563
#elif CONFIG_IDF_TARGET_ESP32C5
560
- // ESP32-C5: Uses spi_mem_c_clock_reg_t with mem_ prefix
561
- if (SPIMEM0.clock .mem_clk_equ_sysclk ) {
564
+ // ESP32-C5: Flash uses SPIMEM1 with mem_ prefixed fields
565
+ // See: esp-idf/components/hal/esp32c5/include/hal/spimem_flash_ll.h line 42
566
+ if (SPIMEM1.clock .mem_clk_equ_sysclk ) {
562
567
return 1 ; // 1:1 clock (no divider)
563
568
}
564
- return SPIMEM0 .clock .mem_clkcnt_n + 1 ;
569
+ return SPIMEM1 .clock .mem_clkcnt_n + 1 ;
565
570
#else
566
- // (S2, S3, C2, C3, C6, H2, P4): Use SPIMEM0 structure without mem_ prefix
567
- if (SPIMEM0.clock .clk_equ_sysclk ) {
571
+ // (S2, S3, C2, C3, C6, C61, H2, P4): Flash uses SPIMEM1
572
+ // See: esp-idf/components/hal/esp32*/include/hal/spimem_flash_ll.h
573
+ // Example S3: line 38: typedef typeof(SPIMEM1.clock.val) spimem_flash_ll_clock_reg_t;
574
+ if (SPIMEM1.clock .clk_equ_sysclk ) {
568
575
return 1 ; // 1:1 clock (no divider)
569
576
}
570
- return SPIMEM0 .clock .clkcnt_n + 1 ;
577
+ return SPIMEM1 .clock .clkcnt_n + 1 ;
571
578
#endif
572
579
}
573
580
0 commit comments