@@ -39,7 +39,9 @@ extern "C" {
3939
4040// Include HAL layer for flash clock access
4141#include " hal/spi_flash_ll.h"
42- #if !CONFIG_IDF_TARGET_ESP32
42+ #if CONFIG_IDF_TARGET_ESP32
43+ #include " soc/spi_struct.h"
44+ #else
4345#include " hal/spimem_flash_ll.h"
4446#include " soc/spi_mem_struct.h"
4547#endif
@@ -549,18 +551,11 @@ uint8_t EspClass::getFlashSourceFrequencyMHz(void) {
549551 */
550552uint8_t EspClass::getFlashClockDivider (void ) {
551553#if CONFIG_IDF_TARGET_ESP32
552- // ESP32 classic: Read CLOCK register directly (no SPIMEM structure available)
553- volatile uint32_t * clock_reg = (volatile uint32_t *)(DR_REG_SPI0_BASE + 0x14 );
554- uint32_t clock_val = *clock_reg;
555-
556- // Bit 31: if set, clock is 1:1 (no divider)
557- if (clock_val & (1 << 31 )) {
558- return 1 ;
554+ // ESP32 classic: Use SPI0 structure
555+ if (SPI0.clock .clk_equ_sysclk ) {
556+ return 1 ; // 1:1 clock (no divider)
559557 }
560-
561- // Bits 16-23: clkdiv_pre
562- uint8_t clkdiv_pre = (clock_val >> 16 ) & 0xFF ;
563- return clkdiv_pre + 1 ;
558+ return SPI0.clock .clkcnt_n + 1 ;
564559#else
565560 // Modern chips (S2, S3, C2, C3, C5, C6, H2, P4): Use SPIMEM0 structure
566561 if (SPIMEM0.clock .clk_equ_sysclk ) {
0 commit comments