Skip to content

Commit a9f3ba8

Browse files
authored
Refactor getFlashClockDivider for ESP32 target
1 parent 59c3ee7 commit a9f3ba8

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

cores/esp32/Esp.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
550552
uint8_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

Comments
 (0)