RTC registers: Add some notes about other register values
Still patchy, but more towards #8.
This commit is contained in:
parent
f146a3c0cd
commit
421acdc40f
1 changed files with 46 additions and 2 deletions
|
@ -3,6 +3,16 @@
|
||||||
* ESP8266 RTC register definitions
|
* ESP8266 RTC register definitions
|
||||||
*
|
*
|
||||||
* Not compatible with ESP SDK register access code.
|
* Not compatible with ESP SDK register access code.
|
||||||
|
*
|
||||||
|
* RTC peripheral remains powered during deep sleep, and RTC clock
|
||||||
|
* is used to wake from deep sleep when RTC.COUNTER == RTC.COUNTER_ALARM.
|
||||||
|
*
|
||||||
|
* "GPIO16" is a special GPIO pin connected to the RTC subsystem,
|
||||||
|
* GPIO16 must be connected to reset to allow wake from deep sleep.
|
||||||
|
*
|
||||||
|
* The contents of scratch registers RTC.SCRATCH[] are preserved
|
||||||
|
* across reset, including wake from sleep (unconfirmed). Contents of
|
||||||
|
* RTCMEM are also preserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ESP_RTC_REGS_H
|
#ifndef _ESP_RTC_REGS_H
|
||||||
|
@ -18,7 +28,7 @@
|
||||||
// Note: GPIO_CFG[3] is also known as PAD_XPD_DCDC_CONF in eagle_soc.h
|
// Note: GPIO_CFG[3] is also known as PAD_XPD_DCDC_CONF in eagle_soc.h
|
||||||
|
|
||||||
struct RTC_REGS {
|
struct RTC_REGS {
|
||||||
uint32_t volatile _unknown0; // 0x00
|
uint32_t volatile CTRL0; // 0x00
|
||||||
uint32_t volatile COUNTER_ALARM; // 0x04
|
uint32_t volatile COUNTER_ALARM; // 0x04
|
||||||
uint32_t volatile RESET_REASON0; // 0x08 //FIXME: need better name
|
uint32_t volatile RESET_REASON0; // 0x08 //FIXME: need better name
|
||||||
uint32_t volatile _unknownc[2]; // 0x0c - 0x10
|
uint32_t volatile _unknownc[2]; // 0x0c - 0x10
|
||||||
|
@ -42,6 +52,14 @@ struct RTC_REGS {
|
||||||
|
|
||||||
_Static_assert(sizeof(struct RTC_REGS) == 0xac, "RTC_REGS is the wrong size");
|
_Static_assert(sizeof(struct RTC_REGS) == 0xac, "RTC_REGS is the wrong size");
|
||||||
|
|
||||||
|
/* Details for CTRL0 register */
|
||||||
|
|
||||||
|
/* Writing this bit causes a software reset but
|
||||||
|
the device then fails in ets_main.c (needs other parameters set?) */
|
||||||
|
#define RTC_CTRL0_BIT31 BIT(31)
|
||||||
|
|
||||||
|
/* Details for RESET_REASONx registers */
|
||||||
|
|
||||||
/* The following are used in sdk_rtc_get_reset_reason(). Details are still a
|
/* The following are used in sdk_rtc_get_reset_reason(). Details are still a
|
||||||
* bit sketchy regarding exactly what they mean/do.. */
|
* bit sketchy regarding exactly what they mean/do.. */
|
||||||
|
|
||||||
|
@ -51,6 +69,32 @@ _Static_assert(sizeof(struct RTC_REGS) == 0xac, "RTC_REGS is the wrong size");
|
||||||
#define RTC_RESET_REASON2_CODE_M 0x0000003f
|
#define RTC_RESET_REASON2_CODE_M 0x0000003f
|
||||||
#define RTC_RESET_REASON2_CODE_S 8
|
#define RTC_RESET_REASON2_CODE_S 8
|
||||||
|
|
||||||
#define RTC_RESET_REASON0_SOMETHING BIT(21)
|
/* Writing this bit causes the ESP to go into some kind of unrecoverable boot loop */
|
||||||
|
#define RTC_RESET_REASON0_BIT20 BIT(20)
|
||||||
|
|
||||||
|
/* Both bits 20 & 21 can be set & cleared from software,
|
||||||
|
BIT21 appears to be checked inside sdk_rtc_get_reset_reason() */
|
||||||
|
#define RTC_RESET_REASON0_BIT21 BIT(21)
|
||||||
|
#define RTC_RESET_REASON0_BIT22 BIT(22)
|
||||||
|
|
||||||
|
/* Details for GPIO_CONF register */
|
||||||
|
|
||||||
|
#define RTC_GPIO_CONF_OUT_ENABLE BIT(0)
|
||||||
|
|
||||||
|
/* Details for GPIO_CFG[3] register controlling GPIO16 (possibly others?) */
|
||||||
|
|
||||||
|
#define RTC_GPIO_CFG3_PIN_PULLUP BIT(2)
|
||||||
|
#define RTC_GPIO_CFG3_PIN_PULLDOWN BIT(3)
|
||||||
|
#define RTC_GPIO_CFG3_PIN_PULLUP_SLEEP BIT(4)
|
||||||
|
#define RTC_GPIO_CFG3_PIN_PULLDOWN_SLEEP BIT(5)
|
||||||
|
|
||||||
|
/* The PIN_FUNC values here are probably similar to the
|
||||||
|
values used to set the iomux registers...? */
|
||||||
|
#define RTC_GPIO_CFG3_PIN_FUNC_M 0x00000043
|
||||||
|
#define RTC_GPIO_CFG3_PIN_FUNC_S 0
|
||||||
|
|
||||||
|
/* This should be the function value needed to have GPIO16 be the alarm
|
||||||
|
output from the RTC. FIXME: Needs to be validated. */
|
||||||
|
#define RTC_GPIO_CFG3_PIN_FUNC_RTC_GPIO0 BIT(0)
|
||||||
|
|
||||||
#endif /* _ESP_RTC_REGS_H */
|
#endif /* _ESP_RTC_REGS_H */
|
||||||
|
|
Loading…
Reference in a new issue