LPC824 low power pin configuration debugger

Publisher:灵感发电站Latest update time:2019-11-26 Source: 51heiKeywords:LPC824 Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

LPC824 has an M0 chip


Although there are some flaws


Good low power consumption


In power-down mode, it is easy to achieve a few uA


The trouble is that you need to carefully adjust the settings of each IO pin


The attached is a list of all configurable pins.


By setting each pin in pinEnergySavingTable


To debug the final power consumption


You need to download the LPC824 library files chip_8xx and chip_common from the NXP official website to support


The microcontroller source program is as follows:


#include "includes.h"

#include "energy.h"


enum {

        INPUT = 0,

        OUTPUT = 1,

};


enum {

        LOW = 0,

        HIGH = 1,

};


const struct struPinEnergySavingTable pinEnergySavingTable[] = {

        {

                .pin = 0,

                .iocon = IOCON_PIO0,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 1,

                .iocon = IOCON_PIO1,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 2,

                .iocon = IOCON_PIO2,

                .dir = 0,

        },                                                                                                //        SWM_FIXED_SWDIO

        {

                .pin = 3,

                .iocon = IOCON_PIO3,

                .dir = 0,

        },                                                                                                //        SWM_FIXED_SWCLK

        {

                .pin = 4,

                .iocon = IOCON_PIO4,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 5,

                .iocon = IOCON_PIO5,

                .dir = 0,

        },                                                                                                //        RESET

        {

                .pin = 6,

                .iocon = IOCON_PIO6,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 7,

                .iocon = IOCON_PIO7,

                .dir = 0,

        },                                                                                                //        SWM_FIXED_ADC0

        {

                .pin = 8,

                .iocon = IOCON_PIO8,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 9,

                .iocon = IOCON_PIO9,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 10,

                .iocon = IOCON_PIO10,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 11,

                .iocon = IOCON_PIO11,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 12,

                .iocon = IOCON_PIO12,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 13,

                .iocon = IOCON_PIO13,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 14,

                .iocon = IOCON_PIO14,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 15,

                .iocon = IOCON_PIO15,

                .dir = 0,

        },

        {

                .pin = 16,

                .iocon = IOCON_PIO16,

                .dir = 1,

                .level = 1,

        },

        {

                .pin = 17,

                .iocon = IOCON_PIO17,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 18,

                .iocon = IOCON_PIO18,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 19,

                .iocon = IOCON_PIO19,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 20,

                .iocon = IOCON_PIO20,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 21,

                .iocon = IOCON_PIO21,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 22,

                .iocon = IOCON_PIO22,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 23,

                .iocon = IOCON_PIO23,

                .dir = 0,

        },

        {

                .pin = 24,

                .iocon = IOCON_PIO24,

                .dir = 0,

        },

        {

                .pin = 25,

                .iocon = IOCON_PIO25,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 26,

                .iocon = IOCON_PIO26,

                .dir = 1,

                .level = 0,

        },

        {

                .pin = 27,

                .iocon = IOCON_PIO27,

                .dir = 1,

                .level = 1,

        },

        {

                .pin = 28,

                .iocon = IOCON_PIO28,

                .dir = 1,

                .level = 0,

        },

};


#define PIN_ENERGY_SAVING_NUM                                                        (sizeof(pinEnergySavingTable) / sizeof(struct struPinEnergySavingTable))


static inline void PinEnergySaving(const struct struPinEnergySavingTable *saving)

{

        Chip_IOCON_PinSetMode(LPC_IOCON, saving->iocon, PIN_MODE_INACTIVE);

        if (saving->dir) {

                Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 0, saving->pin);

                if (saving->level) {

                        Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 0, saving->pin);

                } else {

                        Chip_GPIO_SetPinOutLow(LPC_GPIO_PORT, 0, saving->pin);

                }

        } else {

                Chip_GPIO_SetPinDIRInput(LPC_GPIO_PORT, 0, saving->pin);

        }

}


void EnergyPeripheral(void)

{

        int i;

        

        for (i = 0; i < 9; i++) {

                LPC_SWM->PINASSIGN[i] = 0xFFFFFFFF;

        }

        LPC_SWM->PINENABLE0 |= (1 << (SWM_FIXED_ADC11 + 1)) - 1;

        

        for (i = 0; i < PIN_ENERGY_SAVING_NUM; i++) {

                PinEnergySaving(&pinEnergySavingTable[i]);

        }

}


void PowerDownMode(void)

{

        //        6.7.6.2 Programming Power-down mode

                        

        //        Select the power configuration in Power-down mode in the PDSLEEPCFG

        Chip_SYSCTL_SetDeepSleepPD(SYSCTL_DEEPSLP_BOD_PD | SYSCTL_DEEPSLP_WDTOSC_PD);        

        //        Select the power configuration after wake-up in the PDAWAKECFG

        Chip_SYSCTL_SetWakeup(

                                SYSCTL_SLPWAKE_BOD_PD | 

                                SYSCTL_SLPWAKE_ADC_PD | 

                                SYSCTL_SLPWAKE_SYSOSC_PD | 

                                SYSCTL_SLPWAKE_SYSPLL_PD | 

                                SYSCTL_SLPWAKE_ACMP_PD);

        LPC_SYSCTL->PDRUNCFG = LPC_SYSCTL->PDAWAKECFG;

        //        If any of the available wake-up interrupts are used for wake-up, enable the interrupts in the interrupt wake-up registers

        Chip_SYSCTL_EnablePINTWakeup(0);

        Chip_SYSCTL_EnablePINTWakeup(1);

……………………


Keywords:LPC824 Reference address:LPC824 low power pin configuration debugger

Previous article:LPC1788 multi-channel data acquisition system lower computer + LabVIEW lower computer program
Next article:Cortex-M3 Learning LPC1768 - Button Experiment

Latest Microcontroller Articles
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号