]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_M4F_M0_LPC43xx_Keil/system/scu.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_M4F_M0_LPC43xx_Keil / system / scu.h
1 /***********************************************************************\r
2  * $Id: scu.h 8389 2011-10-19 13:53:14Z nxp28536 $\r
3  *\r
4  * Project: LPC43xx Common\r
5  *\r
6  * Description:\r
7  *     Header file for PINMUX configuration\r
8  *\r
9  ***********************************************************************\r
10  * Software that is described herein is for illustrative purposes only\r
11  * which provides customers with programming information regarding the\r
12  * products. This software is supplied "AS IS" without any warranties.\r
13  * NXP Semiconductors assumes no responsibility or liability for the\r
14  * use of the software, conveys no license or title under any patent,\r
15  * copyright, or mask work right to the product. NXP Semiconductors\r
16  * reserves the right to make changes in the software without\r
17  * notification. NXP Semiconductors also make no representation or\r
18  * warranty that such application will be suitable for the specified\r
19  * use without further testing or modification.\r
20  **********************************************************************/\r
21 #ifndef __SCU_H \r
22 #define __SCU_H\r
23 \r
24 #define PORT_OFFSET 0x80\r
25 #define PIN_OFFSET  0x04\r
26 \r
27 /* Pin modes */\r
28 #define MD_PUP  (0x0<<3)\r
29 #define MD_BUK  (0x1<<3)\r
30 #define MD_PLN  (0x2<<3)\r
31 #define MD_PDN  (0x3<<3)\r
32 #define MD_EHS  (0x1<<5)\r
33 #define MD_EZI  (0x1<<6)\r
34 #define MD_ZI   (0x1<<7)\r
35 #define MD_EHD0 (0x1<<8)\r
36 #define MD_EHD1 (0x1<<8)\r
37 #define MD_PLN_FAST (MD_PLN | MD_EHS | MD_EZI | MD_ZI)\r
38 \r
39 /* Pin modes\r
40 *  ========= \r
41 *  The EPUN and EPD bits in the SFS registers allow the selection of weak on-chip\r
42 *  pull-up or pull-down resistors with a typical value of 50 kOhm for each pin or the\r
43 *  selection of the repeater mode.\r
44 *  The possible on-chip resistor configurations are pull-up enabled, pull-down enabled, or no\r
45 *  pull-up/pull-down. The default value is pull-up enabled.\r
46 *\r
47 *  The repeater mode enables the pull-up resistor if the pin is at a logic HIGH and enables\r
48 *  the pull-down resistor if the pin is at a logic LOW. This causes the pin to retain its last\r
49 *  known state if it is configured as an input and is not driven externally. Repeater mode may\r
50 *  typically be used to prevent a pin from floating (and potentially using significant power if it\r
51 *  floats to an indeterminate state) if it is temporarily not driven.\r
52 *  \r
53 *  To be able to receive a digital signal, the input buffer must be enabled through bit EZI in\r
54 *  the pin configuration registers. By default, the input buffer is disabled.\r
55 *  For pads that support both a digital and an analog function, the input buffer must be\r
56 *  disabled before enabling the analog function\r
57 *  \r
58 *  All digital pins support a programmable glitch filter (bit ZIF), which can be switched on or\r
59 *  off. By default, the glitch filter is on. The glitch filter should be disabled for\r
60 *  clocking signals with frequencies higher than 30 MHz.\r
61 *  \r
62 *  Normal-drive and high-speed pins support a programmable slew rate (bit EHS) to select\r
63 *  between lower noise and low speed or higher noise and high speed . The typical\r
64 *  frequencies supported are 50 MHz/80 MHz for normal-drive pins and 75 MHz/180 MHz for\r
65 *  high-speed pins.\r
66 */\r
67 \r
68 /* these definitions allow to set or clear single configuration bits */\r
69 #define PDN_SET                 (1 << 3)\r
70 #define PDN_CLR                 (0)\r
71 #define PUP_SET                 (0)\r
72 #define PUP_CLR                 (1 << 4)\r
73 \r
74 /* these definitions allow to configure the port in one specific mode */\r
75 /* within scu_pinmux() function */\r
76 #define PDN_ENABLE              (0x3 << 3)      /* pull down */\r
77 #define PUP_ENABLE              (0x0 << 3)      /* pull up */\r
78 #define REPEATER_ENABLE (0x1 << 3)  /* repeater */\r
79 #define PLAIN_ENABLE    (0x2 << 3)      /* no pull up, no pull down (plain) */\r
80 \r
81 #define SLEWRATE_SLOW   (0)\r
82 #define SLEWRATE_FAST   (1 << 5)\r
83 \r
84 /* enable / disable the input buffer */\r
85 #define INBUF_ENABLE      (1 << 6)\r
86 #define INBUF_DISABLE     (0)\r
87 \r
88 /* enable / disable the filter */\r
89 #define FILTER_ENABLE     (0)\r
90 #define FILTER_DISABLE    (1 << 7)\r
91 \r
92 /* define the drive strenght */\r
93 #define DRIVE_8MA         (0x1 << 8)    // Drive strength of 8mA\r
94 #define DRIVE_14MA        (0x1 << 9)    // Drive strength of 14mA\r
95 #define DRIVE_20MA        (0x3 << 8)    // Drive strength of 20mA\r
96 \r
97 \r
98 \r
99 // Configuration examples for external memory bus pins\r
100 #define EMC_OUT    (PUP_CLR | SLEWRATE_FAST | FILTER_DISABLE) \r
101 #define EMC_IO     (PUP_CLR | SLEWRATE_FAST | INBUF_ENABLE | FILTER_DISABLE)\r
102 \r
103 // Configuration examples \r
104 #define CLK_OUT    (PUP_CLR | SLEWRATE_FAST | FILTER_DISABLE) \r
105 #define CLK_IN     (PUP_CLR | SLEWRATE_FAST | INBUF_ENABLE | FILTER_DISABLE)\r
106 \r
107 /* Pin functions */\r
108 #define FUNC0 0x0\r
109 #define FUNC1 0x1\r
110 #define FUNC2 0x2\r
111 #define FUNC3 0x3\r
112 #define FUNC4 0x4\r
113 #define FUNC5 0x5\r
114 #define FUNC6 0x6\r
115 #define FUNC7 0x7\r
116 \r
117 extern void scu_pinmux(unsigned port, unsigned pin, unsigned mode, unsigned func);\r
118 \r
119 #define LPC_SCU_PIN(po, pi)   (*(volatile int         *) (LPC_SCU_BASE + ((po) * 0x80) + ((pi) * 0x4))    )\r
120 #define LPC_SCU_CLK(c)        (*(volatile int         *) (LPC_SCU_BASE + 0xC00 + ((c) * 0x4))    )\r
121 \r
122 \r
123 #endif /* end __SCU_H */\r
124 /*****************************************************************************\r
125 **                            End Of File\r
126 ******************************************************************************/\r