Library to access LPC17xx peripherals. It uses static inline functions, constant propagation and dead code elimination to be as fast as possible.
Dependents: Chua-VGA Wolfram-1D-VGA WolframRnd-1D-VGA Basin-VGA ... more
power.h@0:7a91348b4a02, 2011-07-03 (annotated)
- Committer:
- Ivop
- Date:
- Sun Jul 03 17:11:55 2011 +0000
- Revision:
- 0:7a91348b4a02
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ivop | 0:7a91348b4a02 | 1 | /* Copyright (C) 2010, 2011 by Ivo van Poorten <ivop@euronet.nl> |
Ivop | 0:7a91348b4a02 | 2 | * This file is licensed under the terms of the GNU Lesser |
Ivop | 0:7a91348b4a02 | 3 | * General Public License, version 3. |
Ivop | 0:7a91348b4a02 | 4 | */ |
Ivop | 0:7a91348b4a02 | 5 | |
Ivop | 0:7a91348b4a02 | 6 | /* see chapter 4 of user manual for details on clocks and power */ |
Ivop | 0:7a91348b4a02 | 7 | |
Ivop | 0:7a91348b4a02 | 8 | #ifndef FASTLIB_POWER_H |
Ivop | 0:7a91348b4a02 | 9 | #define FASTLIB_POWER_H |
Ivop | 0:7a91348b4a02 | 10 | |
Ivop | 0:7a91348b4a02 | 11 | #include "fastlib/common.h" |
Ivop | 0:7a91348b4a02 | 12 | |
Ivop | 0:7a91348b4a02 | 13 | #define FL_PCON ((volatile uint32_t *) 0x400FC0C0) |
Ivop | 0:7a91348b4a02 | 14 | #define FL_PCONP ((volatile uint32_t *) 0x400FC0C4) |
Ivop | 0:7a91348b4a02 | 15 | |
Ivop | 0:7a91348b4a02 | 16 | #define FL_POWER_DOWN (1<<0) |
Ivop | 0:7a91348b4a02 | 17 | #define FL_DEEP_POWER_DOWN (1<<1) |
Ivop | 0:7a91348b4a02 | 18 | #define FL_BROWN_OUT_REDUCED_POWER_MODE (1<<2) |
Ivop | 0:7a91348b4a02 | 19 | #define FL_BROWN_OUT_GLOBAL_DISABLE (1<<3) |
Ivop | 0:7a91348b4a02 | 20 | #define FL_BROWN_OUT_RESET_DISABLE (1<<4) |
Ivop | 0:7a91348b4a02 | 21 | |
Ivop | 0:7a91348b4a02 | 22 | #define FL_FLAG_SLEEP_MODE (1<<8) |
Ivop | 0:7a91348b4a02 | 23 | #define FL_FLAG_DEEP_SLEEP_MODE (1<<9) |
Ivop | 0:7a91348b4a02 | 24 | #define FL_FLAG_POWER_DOWN (1<<10) |
Ivop | 0:7a91348b4a02 | 25 | #define FL_FLAG_DEEP_POWER_DOWN (1<<11) |
Ivop | 0:7a91348b4a02 | 26 | |
Ivop | 0:7a91348b4a02 | 27 | static inline void fl_set_power_mode(const unsigned mode) { |
Ivop | 0:7a91348b4a02 | 28 | *FL_PCON = mode; |
Ivop | 0:7a91348b4a02 | 29 | } |
Ivop | 0:7a91348b4a02 | 30 | |
Ivop | 0:7a91348b4a02 | 31 | static inline unsigned fl_get_power_mode(void) { |
Ivop | 0:7a91348b4a02 | 32 | return *FL_PCON; |
Ivop | 0:7a91348b4a02 | 33 | } |
Ivop | 0:7a91348b4a02 | 34 | |
Ivop | 0:7a91348b4a02 | 35 | #define FL_POWER(peripheral, pos) \ |
Ivop | 0:7a91348b4a02 | 36 | static inline void fl_power_##peripheral(const unsigned on_off) { \ |
Ivop | 0:7a91348b4a02 | 37 | *FL_PCONP &= ~( 1U<<pos); \ |
Ivop | 0:7a91348b4a02 | 38 | *FL_PCONP |= (unsigned)on_off<<pos; \ |
Ivop | 0:7a91348b4a02 | 39 | } |
Ivop | 0:7a91348b4a02 | 40 | |
Ivop | 0:7a91348b4a02 | 41 | FL_POWER(timer0, 1) |
Ivop | 0:7a91348b4a02 | 42 | FL_POWER(timer1, 2) |
Ivop | 0:7a91348b4a02 | 43 | FL_POWER(uart0, 3) |
Ivop | 0:7a91348b4a02 | 44 | FL_POWER(uart1, 4) |
Ivop | 0:7a91348b4a02 | 45 | FL_POWER(pwm1, 6) |
Ivop | 0:7a91348b4a02 | 46 | FL_POWER(i2c0, 7) |
Ivop | 0:7a91348b4a02 | 47 | FL_POWER(spi, 8) |
Ivop | 0:7a91348b4a02 | 48 | FL_POWER(rtc, 9) |
Ivop | 0:7a91348b4a02 | 49 | FL_POWER(ssp1, 10) |
Ivop | 0:7a91348b4a02 | 50 | FL_POWER(adc, 12) |
Ivop | 0:7a91348b4a02 | 51 | FL_POWER(can1, 13) |
Ivop | 0:7a91348b4a02 | 52 | FL_POWER(can2, 14) |
Ivop | 0:7a91348b4a02 | 53 | FL_POWER(gpio, 15) |
Ivop | 0:7a91348b4a02 | 54 | FL_POWER(rit, 16) |
Ivop | 0:7a91348b4a02 | 55 | FL_POWER(mcpwm, 17) |
Ivop | 0:7a91348b4a02 | 56 | FL_POWER(qei, 18) |
Ivop | 0:7a91348b4a02 | 57 | FL_POWER(i2c1, 19) |
Ivop | 0:7a91348b4a02 | 58 | FL_POWER(ssp0, 21) |
Ivop | 0:7a91348b4a02 | 59 | FL_POWER(timer2, 22) |
Ivop | 0:7a91348b4a02 | 60 | FL_POWER(timer3, 23) |
Ivop | 0:7a91348b4a02 | 61 | FL_POWER(uart2, 24) |
Ivop | 0:7a91348b4a02 | 62 | FL_POWER(uart3, 25) |
Ivop | 0:7a91348b4a02 | 63 | FL_POWER(i2c2, 26) |
Ivop | 0:7a91348b4a02 | 64 | FL_POWER(i2s, 27) |
Ivop | 0:7a91348b4a02 | 65 | FL_POWER(gpdma, 29) |
Ivop | 0:7a91348b4a02 | 66 | FL_POWER(enet, 30) |
Ivop | 0:7a91348b4a02 | 67 | FL_POWER(usb, 31) |
Ivop | 0:7a91348b4a02 | 68 | |
Ivop | 0:7a91348b4a02 | 69 | static inline void fl_power_off_all_peripherals(void) { |
Ivop | 0:7a91348b4a02 | 70 | *FL_PCONP = 0; |
Ivop | 0:7a91348b4a02 | 71 | } |
Ivop | 0:7a91348b4a02 | 72 | |
Ivop | 0:7a91348b4a02 | 73 | static inline void fl_power_on_all_peripherals(void) { |
Ivop | 0:7a91348b4a02 | 74 | *FL_PCONP = ~((1<<0) | (1<<5) | (1<<11) | (1<<20) | (1<<28)); |
Ivop | 0:7a91348b4a02 | 75 | } |
Ivop | 0:7a91348b4a02 | 76 | |
Ivop | 0:7a91348b4a02 | 77 | #endif |