mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-07-01 14:16:19 +08:00
Merge branch 'feature/support_40MHz_XTAL' into 'master'
feat(esp8266): Support 40MHz XTAL See merge request sdk/ESP8266_RTOS_SDK!1555
This commit is contained in:
@ -553,7 +553,24 @@ void __assert_func(const char *file, int line, const char *func, const char *exp
|
|||||||
#include "esp8266/pin_mux_register.h"
|
#include "esp8266/pin_mux_register.h"
|
||||||
#include "esp8266/rom_functions.h"
|
#include "esp8266/rom_functions.h"
|
||||||
|
|
||||||
#define BOOTLOADER_CONSOLE_CLK_FREQ 52 * 1000 * 1000
|
#define BOOTLOADER_CONSOLE_CLK_FREQ ((CONFIG_ESP8266_XTAL_FREQ * 2) * 1000 * 1000)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* XTAL=26MHz, UART baudrate=74880 (default)
|
||||||
|
* XTAL=40MHz, UART baudrate=115200 (default)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if CONFIG_ESP_CONSOLE_UART_NUM == 0
|
||||||
|
# if CONFIG_ESP8266_XTAL_FREQ == 26 && CONFIG_ESP_CONSOLE_UART_BAUDRATE == 74880
|
||||||
|
# define ESP8266_MODIFY_UART_BAUDRATE 0
|
||||||
|
# elif CONFIG_ESP8266_XTAL_FREQ == 40 && CONFIG_ESP_CONSOLE_UART_BAUDRATE == 115200
|
||||||
|
# define ESP8266_MODIFY_UART_BAUDRATE 0
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ESP8266_MODIFY_UART_BAUDRATE
|
||||||
|
# define ESP8266_MODIFY_UART_BAUDRATE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int _bss_start;
|
extern int _bss_start;
|
||||||
extern int _bss_end;
|
extern int _bss_end;
|
||||||
@ -595,7 +612,19 @@ static void uart_console_configure(void)
|
|||||||
CLEAR_PERI_REG_MASK(UART_CONF0(CONFIG_ESP_CONSOLE_UART_NUM), UART_RXFIFO_RST | UART_TXFIFO_RST);
|
CLEAR_PERI_REG_MASK(UART_CONF0(CONFIG_ESP_CONSOLE_UART_NUM), UART_RXFIFO_RST | UART_TXFIFO_RST);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ESP_CONSOLE_UART_BAUDRATE
|
#if ESP8266_MODIFY_UART_BAUDRATE
|
||||||
|
|
||||||
|
/* Wait UART TX over */
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
int uart_status = REG_READ(UART_STATUS(CONFIG_ESP_CONSOLE_UART_NUM));
|
||||||
|
int tx_bytes = (uart_status >> UART_TXFIFO_CNT_S) & UART_TXFIFO_CNT;
|
||||||
|
|
||||||
|
if (!tx_bytes) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uart_div_modify(CONFIG_ESP_CONSOLE_UART_NUM, BOOTLOADER_CONSOLE_CLK_FREQ / CONFIG_ESP_CONSOLE_UART_BAUDRATE);
|
uart_div_modify(CONFIG_ESP_CONSOLE_UART_NUM, BOOTLOADER_CONSOLE_CLK_FREQ / CONFIG_ESP_CONSOLE_UART_BAUDRATE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,26 @@ config ESP8266_NMI_WDT
|
|||||||
Enable this non-mask watch dog can help users to debug blocking code
|
Enable this non-mask watch dog can help users to debug blocking code
|
||||||
when CPU is at critical state(disable interrupt).
|
when CPU is at critical state(disable interrupt).
|
||||||
|
|
||||||
|
|
||||||
|
choice ESP8266_XTAL_FREQ_SEL
|
||||||
|
prompt "Main XTAL frequency"
|
||||||
|
default ESP8266_XTAL_FREQ_26
|
||||||
|
help
|
||||||
|
ESP8266 currently supports the following XTAL frequencies:
|
||||||
|
|
||||||
|
- 26 MHz
|
||||||
|
- 40 MHz
|
||||||
|
config ESP8266_XTAL_FREQ_40
|
||||||
|
bool "40 MHz"
|
||||||
|
config ESP8266_XTAL_FREQ_26
|
||||||
|
bool "26 MHz"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config ESP8266_XTAL_FREQ
|
||||||
|
int
|
||||||
|
default 40 if ESP8266_XTAL_FREQ_40
|
||||||
|
default 26 if ESP8266_XTAL_FREQ_26
|
||||||
|
|
||||||
choice ESP8266_DEFAULT_CPU_FREQ_MHZ
|
choice ESP8266_DEFAULT_CPU_FREQ_MHZ
|
||||||
prompt "CPU frequency"
|
prompt "CPU frequency"
|
||||||
default ESP8266_DEFAULT_CPU_FREQ_160
|
default ESP8266_DEFAULT_CPU_FREQ_160
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include "sdkconfig.h"
|
||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@ -75,6 +75,15 @@ typedef enum {
|
|||||||
PHY_MODULE_COUNT //!< Number of items
|
PHY_MODULE_COUNT //!< Number of items
|
||||||
} phy_rf_module_t;
|
} phy_rf_module_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Outside XTAL 40MHz: 0, 26MHz: 1
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_ESP8266_XTAL_FREQ_40
|
||||||
|
#define ESP8266_XTAL_FLAG (0)
|
||||||
|
#elif defined(CONFIG_ESP8266_XTAL_FREQ_26)
|
||||||
|
#define ESP8266_XTAL_FLAG (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get PHY init data
|
* @brief Get PHY init data
|
||||||
*
|
*
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "esp_phy_init.h"
|
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
#include "esp_phy_init.h"
|
||||||
|
|
||||||
// constrain a value between 'low' and 'high', inclusive
|
// constrain a value between 'low' and 'high', inclusive
|
||||||
#define LIMIT(val, low, high) ((val < low) ? low : (val > high) ? high : val)
|
#define LIMIT(val, low, high) ((val < low) ? low : (val > high) ? high : val)
|
||||||
@ -75,7 +75,7 @@ static const esp_phy_init_data_t phy_init_data= { {
|
|||||||
0x03,
|
0x03,
|
||||||
0x04,
|
0x04,
|
||||||
0x05,
|
0x05,
|
||||||
0x01,
|
ESP8266_XTAL_FLAG,
|
||||||
0x00,
|
0x00,
|
||||||
0x00,
|
0x00,
|
||||||
0x00,
|
0x00,
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CRYSTAL_USED 26
|
#define CRYSTAL_USED CONFIG_ESP8266_XTAL_FREQ
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ESP_MAC_WIFI_STA,
|
ESP_MAC_WIFI_STA,
|
||||||
|
Reference in New Issue
Block a user