cc3200: Add GPIO25 to the pins list of the WiPy and the WiPy-SD.
This allows to properly initialize the system led and add it to the sleep module so that it can be restored when resuming from suspended mode.
This commit is contained in:
parent
4729a212b1
commit
26d230419c
|
@ -41,6 +41,7 @@
|
||||||
#define MICROPY_SAFE_BOOT_PRCM PRCM_GPIOA2
|
#define MICROPY_SAFE_BOOT_PRCM PRCM_GPIOA2
|
||||||
#define MICROPY_SYS_LED_PORT GPIOA1_BASE
|
#define MICROPY_SYS_LED_PORT GPIOA1_BASE
|
||||||
#define MICROPY_SAFE_BOOT_PORT GPIOA2_BASE
|
#define MICROPY_SAFE_BOOT_PORT GPIOA2_BASE
|
||||||
|
#define MICROPY_SYS_LED_GPIO pin_GPIO9
|
||||||
#define MICROPY_SYS_LED_PIN_NUM PIN_64 // GPIO9
|
#define MICROPY_SYS_LED_PIN_NUM PIN_64 // GPIO9
|
||||||
#define MICROPY_SAFE_BOOT_PIN_NUM PIN_15 // GPIO22
|
#define MICROPY_SAFE_BOOT_PIN_NUM PIN_15 // GPIO22
|
||||||
#define MICROPY_SYS_LED_PORT_PIN GPIO_PIN_1
|
#define MICROPY_SYS_LED_PORT_PIN GPIO_PIN_1
|
||||||
|
|
|
@ -41,9 +41,10 @@
|
||||||
#define MICROPY_SAFE_BOOT_PRCM PRCM_GPIOA3
|
#define MICROPY_SAFE_BOOT_PRCM PRCM_GPIOA3
|
||||||
#define MICROPY_SYS_LED_PORT GPIOA3_BASE
|
#define MICROPY_SYS_LED_PORT GPIOA3_BASE
|
||||||
#define MICROPY_SAFE_BOOT_PORT GPIOA3_BASE
|
#define MICROPY_SAFE_BOOT_PORT GPIOA3_BASE
|
||||||
#define MICROPY_SYS_LED_PIN_NUM PIN_21
|
#define MICROPY_SYS_LED_GPIO pin_GPIO25
|
||||||
#define MICROPY_SAFE_BOOT_PIN_NUM PIN_18
|
#define MICROPY_SYS_LED_PIN_NUM PIN_21 // GPIO25 (SOP2)
|
||||||
#define MICROPY_SYS_LED_PORT_PIN GPIO_PIN_1 // GPIO25 (SOP2)
|
#define MICROPY_SAFE_BOOT_PIN_NUM PIN_18 // GPIO28
|
||||||
#define MICROPY_SAFE_BOOT_PORT_PIN GPIO_PIN_4 // GPIO28
|
#define MICROPY_SYS_LED_PORT_PIN GPIO_PIN_1
|
||||||
|
#define MICROPY_SAFE_BOOT_PORT_PIN GPIO_PIN_4
|
||||||
|
|
||||||
#define MICROPY_PORT_SFLASH_BLOCK_COUNT 96
|
#define MICROPY_PORT_SFLASH_BLOCK_COUNT 96
|
||||||
|
|
|
@ -22,3 +22,4 @@ R11,GPIO3
|
||||||
R12,GPIO0
|
R12,GPIO0
|
||||||
R13,GPIO4
|
R13,GPIO4
|
||||||
R14,GPIO5
|
R14,GPIO5
|
||||||
|
HBL,GPIO25
|
||||||
|
|
|
|
@ -41,9 +41,10 @@
|
||||||
#define MICROPY_SAFE_BOOT_PRCM PRCM_GPIOA3
|
#define MICROPY_SAFE_BOOT_PRCM PRCM_GPIOA3
|
||||||
#define MICROPY_SYS_LED_PORT GPIOA3_BASE
|
#define MICROPY_SYS_LED_PORT GPIOA3_BASE
|
||||||
#define MICROPY_SAFE_BOOT_PORT GPIOA3_BASE
|
#define MICROPY_SAFE_BOOT_PORT GPIOA3_BASE
|
||||||
#define MICROPY_SYS_LED_PIN_NUM PIN_21
|
#define MICROPY_SYS_LED_GPIO pin_GPIO25
|
||||||
#define MICROPY_SAFE_BOOT_PIN_NUM PIN_18
|
#define MICROPY_SYS_LED_PIN_NUM PIN_21 // GPIO25 (SOP2)
|
||||||
#define MICROPY_SYS_LED_PORT_PIN GPIO_PIN_1 // GPIO25 (SOP2)
|
#define MICROPY_SAFE_BOOT_PIN_NUM PIN_18 // GPIO28
|
||||||
#define MICROPY_SAFE_BOOT_PORT_PIN GPIO_PIN_4 // GPIO28
|
#define MICROPY_SYS_LED_PORT_PIN GPIO_PIN_1
|
||||||
|
#define MICROPY_SAFE_BOOT_PORT_PIN GPIO_PIN_4
|
||||||
|
|
||||||
#define MICROPY_PORT_SFLASH_BLOCK_COUNT 96
|
#define MICROPY_PORT_SFLASH_BLOCK_COUNT 96
|
||||||
|
|
|
@ -22,3 +22,4 @@ R11,GPIO3
|
||||||
R12,GPIO0
|
R12,GPIO0
|
||||||
R13,GPIO4
|
R13,GPIO4
|
||||||
R14,GPIO5
|
R14,GPIO5
|
||||||
|
HBL,GPIO25
|
||||||
|
|
|
|
@ -40,6 +40,10 @@
|
||||||
#include "hw_common_reg.h"
|
#include "hw_common_reg.h"
|
||||||
#include "pin.h"
|
#include "pin.h"
|
||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
|
#ifndef BOOTLOADER
|
||||||
|
#include "pybpin.h"
|
||||||
|
#include "pins.h"
|
||||||
|
#endif
|
||||||
#include "rom.h"
|
#include "rom.h"
|
||||||
#include "rom_map.h"
|
#include "rom_map.h"
|
||||||
#include "prcm.h"
|
#include "prcm.h"
|
||||||
|
@ -64,40 +68,29 @@ struct mperror_heart_beat {
|
||||||
uint32_t on_time;
|
uint32_t on_time;
|
||||||
bool beating;
|
bool beating;
|
||||||
bool enabled;
|
bool enabled;
|
||||||
} mperror_heart_beat;
|
} mperror_heart_beat = {.off_time = 0, .on_time = 0, .beating = false, .enabled = false};
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
DEFINE PRIVATE FUNCTIONS
|
|
||||||
******************************************************************************/
|
|
||||||
STATIC void mperror_heartbeat_switch_off (void) {
|
|
||||||
MAP_GPIOPinWrite(MICROPY_SYS_LED_PORT, MICROPY_SYS_LED_PORT_PIN, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
DEFINE PUBLIC FUNCTIONS
|
DEFINE PUBLIC FUNCTIONS
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
void mperror_init0 (void) {
|
void mperror_init0 (void) {
|
||||||
// Enable SYS GPIOs peripheral clocks
|
#ifdef BOOTLOADER
|
||||||
|
// enable the system led and the safe boot pin peripheral clocks
|
||||||
MAP_PRCMPeripheralClkEnable(MICROPY_SYS_LED_PRCM, PRCM_RUN_MODE_CLK | PRCM_SLP_MODE_CLK);
|
MAP_PRCMPeripheralClkEnable(MICROPY_SYS_LED_PRCM, PRCM_RUN_MODE_CLK | PRCM_SLP_MODE_CLK);
|
||||||
#ifdef BOOTLOADER
|
|
||||||
MAP_PRCMPeripheralClkEnable(MICROPY_SAFE_BOOT_PRCM, PRCM_RUN_MODE_CLK | PRCM_SLP_MODE_CLK);
|
MAP_PRCMPeripheralClkEnable(MICROPY_SAFE_BOOT_PRCM, PRCM_RUN_MODE_CLK | PRCM_SLP_MODE_CLK);
|
||||||
#endif
|
// configure the safe boot pin
|
||||||
|
|
||||||
// Configure the bld
|
|
||||||
MAP_PinTypeGPIO(MICROPY_SYS_LED_PIN_NUM, PIN_MODE_0, false);
|
|
||||||
MAP_PinConfigSet(MICROPY_SYS_LED_PIN_NUM, PIN_STRENGTH_6MA, PIN_TYPE_STD);
|
|
||||||
MAP_GPIODirModeSet(MICROPY_SYS_LED_PORT, MICROPY_SYS_LED_PORT_PIN, GPIO_DIR_MODE_OUT);
|
|
||||||
|
|
||||||
#ifdef BOOTLOADER
|
|
||||||
// Configure the safe boot pin
|
|
||||||
MAP_PinTypeGPIO(MICROPY_SAFE_BOOT_PIN_NUM, PIN_MODE_0, false);
|
MAP_PinTypeGPIO(MICROPY_SAFE_BOOT_PIN_NUM, PIN_MODE_0, false);
|
||||||
MAP_PinConfigSet(MICROPY_SAFE_BOOT_PIN_NUM, PIN_STRENGTH_4MA, PIN_TYPE_STD_PD);
|
MAP_PinConfigSet(MICROPY_SAFE_BOOT_PIN_NUM, PIN_STRENGTH_4MA, PIN_TYPE_STD_PD);
|
||||||
MAP_GPIODirModeSet(MICROPY_SAFE_BOOT_PORT, MICROPY_SAFE_BOOT_PORT_PIN, GPIO_DIR_MODE_IN);
|
MAP_GPIODirModeSet(MICROPY_SAFE_BOOT_PORT, MICROPY_SAFE_BOOT_PORT_PIN, GPIO_DIR_MODE_IN);
|
||||||
|
// configure the bld
|
||||||
|
MAP_PinTypeGPIO(MICROPY_SYS_LED_PIN_NUM, PIN_MODE_0, false);
|
||||||
|
MAP_PinConfigSet(MICROPY_SYS_LED_PIN_NUM, PIN_STRENGTH_6MA, PIN_TYPE_STD);
|
||||||
|
MAP_GPIODirModeSet(MICROPY_SYS_LED_PORT, MICROPY_SYS_LED_PORT_PIN, GPIO_DIR_MODE_OUT);
|
||||||
|
#else
|
||||||
|
// configure the system led
|
||||||
|
pin_config ((pin_obj_t *)&MICROPY_SYS_LED_GPIO, PIN_MODE_0, GPIO_DIR_MODE_OUT, PIN_TYPE_STD, PIN_STRENGTH_6MA);
|
||||||
#endif
|
#endif
|
||||||
|
mperror_heartbeat_switch_off();
|
||||||
mperror_heart_beat.on_time = 0;
|
|
||||||
mperror_heart_beat.off_time = 0;
|
|
||||||
mperror_heart_beat.beating = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void mperror_bootloader_check_reset_cause (void) {
|
void mperror_bootloader_check_reset_cause (void) {
|
||||||
|
@ -114,7 +107,7 @@ void mperror_bootloader_check_reset_cause (void) {
|
||||||
HWREG(0x4402F024) &= 0xF7FFFFFF;
|
HWREG(0x4402F024) &= 0xF7FFFFFF;
|
||||||
|
|
||||||
// since the reset cause will be changed, we must store the right reason
|
// since the reset cause will be changed, we must store the right reason
|
||||||
// so that the application knows we booting the next time
|
// so that the application knows it when booting for the next time
|
||||||
PRCMSignalWDTReset();
|
PRCMSignalWDTReset();
|
||||||
|
|
||||||
MAP_PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR);
|
MAP_PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR);
|
||||||
|
@ -142,6 +135,12 @@ void mperror_enable_heartbeat (void) {
|
||||||
mperror_heart_beat.enabled = true;
|
mperror_heart_beat.enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mperror_heartbeat_switch_off (void) {
|
||||||
|
mperror_heart_beat.on_time = 0;
|
||||||
|
mperror_heart_beat.off_time = 0;
|
||||||
|
MAP_GPIOPinWrite(MICROPY_SYS_LED_PORT, MICROPY_SYS_LED_PORT_PIN, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void mperror_disable_heartbeat (void) {
|
void mperror_disable_heartbeat (void) {
|
||||||
mperror_heart_beat.enabled = false;
|
mperror_heart_beat.enabled = false;
|
||||||
mperror_heartbeat_switch_off();
|
mperror_heartbeat_switch_off();
|
||||||
|
@ -157,7 +156,7 @@ void mperror_heartbeat_signal (void) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ((mperror_heart_beat.off_time = HAL_GetTick()) - mperror_heart_beat.on_time > MPERROR_HEARTBEAT_ON_MS) {
|
if ((mperror_heart_beat.off_time = HAL_GetTick()) - mperror_heart_beat.on_time > MPERROR_HEARTBEAT_ON_MS) {
|
||||||
mperror_heartbeat_switch_off();
|
MAP_GPIOPinWrite(MICROPY_SYS_LED_PORT, MICROPY_SYS_LED_PORT_PIN, 0);
|
||||||
mperror_heart_beat.beating = false;
|
mperror_heart_beat.beating = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ void mperror_bootloader_check_reset_cause (void);
|
||||||
void mperror_deinit_sfe_pin (void);
|
void mperror_deinit_sfe_pin (void);
|
||||||
void mperror_signal_error (void);
|
void mperror_signal_error (void);
|
||||||
void mperror_enable_heartbeat (void);
|
void mperror_enable_heartbeat (void);
|
||||||
|
void mperror_heartbeat_switch_off (void);
|
||||||
void mperror_disable_heartbeat (void);
|
void mperror_disable_heartbeat (void);
|
||||||
void mperror_heartbeat_signal (void);
|
void mperror_heartbeat_signal (void);
|
||||||
|
|
||||||
|
|
|
@ -325,6 +325,9 @@ STATIC NORETURN void pybsleep_suspend_enter (void) {
|
||||||
// park the gpio pins
|
// park the gpio pins
|
||||||
pybsleep_iopark();
|
pybsleep_iopark();
|
||||||
|
|
||||||
|
// turn-off the heartbeat led
|
||||||
|
mperror_heartbeat_switch_off();
|
||||||
|
|
||||||
// store the cpu registers
|
// store the cpu registers
|
||||||
sleep_store();
|
sleep_store();
|
||||||
|
|
||||||
|
@ -384,9 +387,6 @@ void pybsleep_suspend_exit (void) {
|
||||||
// reinitialize simplelink's bus
|
// reinitialize simplelink's bus
|
||||||
sl_IfOpen (NULL, 0);
|
sl_IfOpen (NULL, 0);
|
||||||
|
|
||||||
// initialize the system led
|
|
||||||
mperror_init0();
|
|
||||||
|
|
||||||
// restore the configuration of all active peripherals
|
// restore the configuration of all active peripherals
|
||||||
pybsleep_obj_wakeup();
|
pybsleep_obj_wakeup();
|
||||||
|
|
||||||
|
@ -610,6 +610,7 @@ STATIC mp_obj_t pyb_sleep_hibernate (mp_obj_t self_in) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wlan_stop(SL_STOP_TIMEOUT);
|
wlan_stop(SL_STOP_TIMEOUT);
|
||||||
|
mperror_heartbeat_switch_off();
|
||||||
pybsleep_flash_powerdown();
|
pybsleep_flash_powerdown();
|
||||||
MAP_PRCMHibernateEnter();
|
MAP_PRCMHibernateEnter();
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
|
|
|
@ -118,10 +118,10 @@ soft_reset:
|
||||||
mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR_)); // current dir (or base dir of the script)
|
mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR_)); // current dir (or base dir of the script)
|
||||||
|
|
||||||
// execute all basic initializations
|
// execute all basic initializations
|
||||||
mperror_init0();
|
|
||||||
mpexception_init0();
|
mpexception_init0();
|
||||||
mpcallback_init0();
|
mpcallback_init0();
|
||||||
pybsleep_init0();
|
pybsleep_init0();
|
||||||
|
mperror_init0();
|
||||||
uart_init0();
|
uart_init0();
|
||||||
pin_init0();
|
pin_init0();
|
||||||
readline_init0();
|
readline_init0();
|
||||||
|
|
Loading…
Reference in New Issue