I am trying to minimize the deep sleep current of the TM4C129X microcontroller. Before I start digging into hardware too much I want to verify that the micro is in the proper deep sleep low current state. Here is how the sleep parameters are setup:
// set the deep sleep clock source: use the low-frequency internal osc with // a div/64, disable the MOSC and internal oscillator in deep sleep. SysCtlDeepSleepClockConfigSet( SYSCTL_DSLP_DIV_64, ( SYSCTL_DSLP_OSC_INT30 | SYSCTL_DSLP_PIOSC_PD | SYSCTL_DSLP_MOSC_PD ) ); // set the SRAM and flash to low power modes during sleep SysCtlDeepSleepPowerSet( SYSCTL_FLASH_LOW_POWER | SYSCTL_SRAM_LOW_POWER | SYSCTL_LDO_SLEEP | SYSCTL_TEMP_LOW_POWER ); // Set LDO Voltage to 0.9V SysCtlLDODeepSleepSet( SYSCTL_LDO_0_90V ); // use clock gating for peripherals during sleep SysCtlPeripheralClockGating( true ); // disable most peripherals during deep sleep - these are peripherals which // have been previously enabled at startup. Leave GPIOD enabled, since we // want to wake on a button press SysCtlPeripheralDeepSleepDisable( SYSCTL_PERIPH_ADC0 | SYSCTL_PERIPH_ADC1 | SYSCTL_PERIPH_CAN0 | SYSCTL_PERIPH_CAN1 | SYSCTL_PERIPH_CCM0 | SYSCTL_PERIPH_COMP0 | SYSCTL_PERIPH_EEPROM0 | SYSCTL_PERIPH_EMAC0 | SYSCTL_PERIPH_EPHY0 | SYSCTL_PERIPH_EPI0 | SYSCTL_PERIPH_GPIOA | SYSCTL_PERIPH_GPIOB | SYSCTL_PERIPH_GPIOC | SYSCTL_PERIPH_GPIOE | SYSCTL_PERIPH_GPIOF | SYSCTL_PERIPH_GPIOG | SYSCTL_PERIPH_GPIOH | SYSCTL_PERIPH_GPIOJ | SYSCTL_PERIPH_GPIOK | SYSCTL_PERIPH_GPIOL | SYSCTL_PERIPH_GPIOM | SYSCTL_PERIPH_GPION | SYSCTL_PERIPH_GPIOP | SYSCTL_PERIPH_GPIOQ | SYSCTL_PERIPH_GPIOR | SYSCTL_PERIPH_GPIOS | SYSCTL_PERIPH_GPIOT | SYSCTL_PERIPH_HIBERNATE | SYSCTL_PERIPH_I2C0 | SYSCTL_PERIPH_I2C1 | SYSCTL_PERIPH_I2C2 | SYSCTL_PERIPH_I2C3 | SYSCTL_PERIPH_I2C4 | SYSCTL_PERIPH_I2C5 | SYSCTL_PERIPH_I2C6 | SYSCTL_PERIPH_I2C7 | SYSCTL_PERIPH_I2C8 | SYSCTL_PERIPH_I2C9 | SYSCTL_PERIPH_LCD0 | SYSCTL_PERIPH_ONEWIRE0 | SYSCTL_PERIPH_PWM0 | SYSCTL_PERIPH_PWM1 | SYSCTL_PERIPH_QEI0 | SYSCTL_PERIPH_QEI1 | SYSCTL_PERIPH_SSI0 | SYSCTL_PERIPH_SSI1 | SYSCTL_PERIPH_SSI2 | SYSCTL_PERIPH_SSI3 | SYSCTL_PERIPH_TIMER0 | SYSCTL_PERIPH_TIMER1 | SYSCTL_PERIPH_TIMER2 | SYSCTL_PERIPH_TIMER3 | SYSCTL_PERIPH_TIMER4 | SYSCTL_PERIPH_TIMER5 | SYSCTL_PERIPH_TIMER6 | SYSCTL_PERIPH_TIMER7 | SYSCTL_PERIPH_UART0 | SYSCTL_PERIPH_UART1 | SYSCTL_PERIPH_UART2 | SYSCTL_PERIPH_UART3 | SYSCTL_PERIPH_UART4 | SYSCTL_PERIPH_UART5 | SYSCTL_PERIPH_UART6 | SYSCTL_PERIPH_UART7 | SYSCTL_PERIPH_UDMA | SYSCTL_PERIPH_USB0 | SYSCTL_PERIPH_WDOG0 | SYSCTL_PERIPH_WDOG1 | SYSCTL_PERIPH_WTIMER0 | SYSCTL_PERIPH_WTIMER1 | SYSCTL_PERIPH_WTIMER2 | SYSCTL_PERIPH_WTIMER3 | SYSCTL_PERIPH_WTIMER4 | SYSCTL_PERIPH_WTIMER5 ); // explicitly set GPIOD to enabled during deep-sleep SysCtlPeripheralDeepSleepEnable( SYSCTL_PERIPH_GPIOD );
In the datasheet for the TM4C129XNZCAD in the Current Consumption Table (Page 2183-2185) Note E states "To achieve the lowest possible Deep-Sleep current, one or more wait states must be configured in the MEMTIM0 register. If there are no wait states applied in Run mode, then lowest possible Deep-Sleep current is not achieved."
My question is...do the TivaWare Peripheral Driver APIs configure MEMTIM0 register in order to get the lowest possible current or do I need to modify that? As I have it configured should the micro be in the lowest deep sleep state?