1 /* mbed Microcontroller Library
2 * Copyright (c) 2006-2013 ARM Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #ifndef MBED_PINNAMES_H
20 #define MBED_PINNAMES_H
36 // On the LPC43xx the MCU pin name and the GPIO pin name are not the same.
37 // Encode SCU and GPIO offsets as a pin identifier
38 #define MBED_PIN(group, num, port, pin) ((SCU_OFF(group,num) << 16) + GPIO_OFF(port,pin))
40 // Decode pin identifier into register, port and pin values
41 #define MBED_SCU_REG(MBED_PIN) (LPC_SCU_BASE + (MBED_PIN >> 16))
42 #define MBED_GPIO_REG(MBED_PIN) (LPC_GPIO_PORT_BASE + 0x2000 + ((MBED_PIN >> (PORT_SHIFT - 2)) & 0x0000003C))
43 #define MBED_GPIO_PORT(MBED_PIN) ((MBED_PIN >> PORT_SHIFT) & 0x0000000F)
44 #define MBED_GPIO_PIN(MBED_PIN) (MBED_PIN & 0x0000001F)
48 // All pins defined. Package determines which are available.
49 // LBGA256 TFBGA180 TFBGA100 LQFP208 LQFP144
50 // GPIO0 [15:0] [15:0] [15:6] [15:0] [15:0]
52 // GPIO1 [15:0] [15:0] [15:0] [15:0] [15:0]
53 // GPIO2 [15:0] [15:0] [15:0] [15:0]
54 // GPIO3 [15:0] [15:0] [7] [15:0] [15:0]
57 // GPIO4 [15:0] [15:0] [15:0] [11]
58 // GPIO5 [26:0] [26:0] [11:0] [25:0] [18]
60 // GPIO6 [30:0] [30:28] [30:20]
62 // GPIO7 [25:0] [4:0] [25:23]
64 // --- --- --- --- ---
65 // Total 164 117 49 131 83
67 // Groups 0x00 - 0x0F : Digital pins
68 // * Digital pins support up to 8 functions
69 // Use func=0 for GPIO0-GPIO4, func=4 for GPIO5-GPIO7
70 // * High-drive pins default to 4 mA but can support 8, 14, 20 mA
71 P0_0 = MBED_PIN(0x00, 0, 0, 0), // GPIO0[0]
72 P0_1 = MBED_PIN(0x00, 1, 0, 1), // GPIO0[1]
74 P1_0 = MBED_PIN(0x01, 0, 0, 4), // GPIO0[4]
75 P1_1 = MBED_PIN(0x01, 1, 0, 8), // GPIO0[8]
76 P1_2 = MBED_PIN(0x01, 2, 0, 9), // GPIO0[9]
77 P1_3 = MBED_PIN(0x01, 3, 0, 10), // GPIO0[10]
78 P1_4 = MBED_PIN(0x01, 4, 0, 11), // GPIO0[11]
79 P1_5 = MBED_PIN(0x01, 5, 1, 8), // GPIO1[8]
80 P1_6 = MBED_PIN(0x01, 6, 1, 9), // GPIO1[9]
81 P1_7 = MBED_PIN(0x01, 7, 1, 0), // GPIO1[0]
82 P1_8 = MBED_PIN(0x01, 8, 1, 1), // GPIO1[1]
83 P1_9 = MBED_PIN(0x01, 9, 1, 2), // GPIO1[2]
84 P1_10 = MBED_PIN(0x01, 10, 1, 3), // GPIO1[3]
85 P1_11 = MBED_PIN(0x01, 11, 1, 4), // GPIO1[4]
86 P1_12 = MBED_PIN(0x01, 12, 1, 5), // GPIO1[5]
87 P1_13 = MBED_PIN(0x01, 13, 1, 6), // GPIO1[6]
88 P1_14 = MBED_PIN(0x01, 14, 1, 7), // GPIO1[7]
89 P1_15 = MBED_PIN(0x01, 15, 0, 2), // GPIO0[2]
90 P1_16 = MBED_PIN(0x01, 16, 0, 3), // GPIO0[3]
91 P1_17 = MBED_PIN(0x01, 17, 0, 12), // GPIO0[12] high-drive
92 P1_18 = MBED_PIN(0x01, 18, 0, 13), // GPIO0[13]
93 P1_19 = MBED_PIN(0x01, 19, NO_GPIO, 0),
94 P1_20 = MBED_PIN(0x01, 20, 0, 15), // GPIO0[15]
96 P2_0 = MBED_PIN(0x02, 0, 5, 0), // GPIO5[0]
97 P2_1 = MBED_PIN(0x02, 1, 5, 1), // GPIO5[1]
98 P2_2 = MBED_PIN(0x02, 2, 5, 2), // GPIO5[2]
99 P2_3 = MBED_PIN(0x02, 3, 5, 3), // GPIO5[3] high-drive
100 P2_4 = MBED_PIN(0x02, 4, 5, 4), // GPIO5[4] high-drive
101 P2_5 = MBED_PIN(0x02, 5, 5, 5), // GPIO5[5] high-drive
102 P2_6 = MBED_PIN(0x02, 6, 5, 6), // GPIO5[6]
103 P2_7 = MBED_PIN(0x02, 7, 0, 7), // GPIO0[7]
104 P2_8 = MBED_PIN(0x02, 8, 5, 7), // GPIO5[7]
105 P2_9 = MBED_PIN(0x02, 9, 1, 10), // GPIO1[10]
106 P2_10 = MBED_PIN(0x02, 10, 0, 14), // GPIO0[14]
107 P2_11 = MBED_PIN(0x02, 11, 1, 11), // GPIO1[11]
108 P2_12 = MBED_PIN(0x02, 12, 1, 12), // GPIO1[12]
109 P2_13 = MBED_PIN(0x02, 13, 1, 13), // GPIO1[13]
111 P3_0 = MBED_PIN(0x03, 0, NO_GPIO, 0),
112 P3_1 = MBED_PIN(0x03, 1, 5, 8), // GPIO5[8]
113 P3_2 = MBED_PIN(0x03, 2, 5, 9), // GPIO5[9]
114 P3_3 = MBED_PIN(0x03, 3, NO_GPIO, 0),
115 P3_4 = MBED_PIN(0x03, 4, 1, 14), // GPIO1[14]
116 P3_5 = MBED_PIN(0x03, 5, 1, 15), // GPIO1[15]
117 P3_6 = MBED_PIN(0x03, 6, 0, 6), // GPIO0[6]
118 P3_7 = MBED_PIN(0x03, 7, 5, 10), // GPIO5[10]
119 P3_8 = MBED_PIN(0x03, 8, 5, 11), // GPIO5[11]
121 P4_0 = MBED_PIN(0x04, 0, 2, 0), // GPIO2[0]
122 P4_1 = MBED_PIN(0x04, 1, 2, 1), // GPIO2[1]
123 P4_2 = MBED_PIN(0x04, 2, 2, 2), // GPIO2[2]
124 P4_3 = MBED_PIN(0x04, 3, 2, 3), // GPIO2[3]
125 P4_4 = MBED_PIN(0x04, 4, 2, 4), // GPIO2[4]
126 P4_5 = MBED_PIN(0x04, 5, 2, 5), // GPIO2[5]
127 P4_6 = MBED_PIN(0x04, 6, 2, 6), // GPIO2[6]
128 P4_7 = MBED_PIN(0x04, 7, NO_GPIO, 0),
129 P4_8 = MBED_PIN(0x04, 8, 5, 12), // GPIO5[12]
130 P4_9 = MBED_PIN(0x04, 9, 5, 13), // GPIO5[13]
131 P4_10 = MBED_PIN(0x04, 10, 5, 14), // GPIO5[14]
133 P5_0 = MBED_PIN(0x05, 0, 2, 9), // GPIO2[9]
134 P5_1 = MBED_PIN(0x05, 1, 2, 10), // GPIO2[10]
135 P5_2 = MBED_PIN(0x05, 2, 2, 11), // GPIO2[11]
136 P5_3 = MBED_PIN(0x05, 3, 2, 12), // GPIO2[12]
137 P5_4 = MBED_PIN(0x05, 4, 2, 13), // GPIO2[13]
138 P5_5 = MBED_PIN(0x05, 5, 2, 14), // GPIO2[14]
139 P5_6 = MBED_PIN(0x05, 6, 2, 15), // GPIO2[15]
140 P5_7 = MBED_PIN(0x05, 7, 2, 7), // GPIO2[7]
142 P6_0 = MBED_PIN(0x06, 0, NO_GPIO, 0),
143 P6_1 = MBED_PIN(0x06, 1, 3, 0), // GPIO3[0]
144 P6_2 = MBED_PIN(0x06, 2, 3, 1), // GPIO3[1]
145 P6_3 = MBED_PIN(0x06, 3, 3, 2), // GPIO3[2]
146 P6_4 = MBED_PIN(0x06, 4, 3, 3), // GPIO3[3]
147 P6_5 = MBED_PIN(0x06, 5, 3, 4), // GPIO3[4]
148 P6_6 = MBED_PIN(0x06, 6, 0, 5), // GPIO0[5]
149 P6_7 = MBED_PIN(0x06, 7, 5, 15), // GPIO5[15]
150 P6_8 = MBED_PIN(0x06, 8, 5, 16), // GPIO5[16]
151 P6_9 = MBED_PIN(0x06, 9, 3, 5), // GPIO3[5]
152 P6_10 = MBED_PIN(0x06, 10, 3, 6), // GPIO3[6]
153 P6_11 = MBED_PIN(0x06, 11, 3, 7), // GPIO3[7]
154 P6_12 = MBED_PIN(0x06, 12, 2, 8), // GPIO2[8]
156 P7_0 = MBED_PIN(0x07, 0, 3, 8), // GPIO3[8]
157 P7_1 = MBED_PIN(0x07, 1, 3, 9), // GPIO3[9]
158 P7_2 = MBED_PIN(0x07, 2, 3, 10), // GPIO3[10]
159 P7_3 = MBED_PIN(0x07, 3, 3, 11), // GPIO3[11]
160 P7_4 = MBED_PIN(0x07, 4, 3, 12), // GPIO3[12]
161 P7_5 = MBED_PIN(0x07, 5, 3, 13), // GPIO3[13]
162 P7_6 = MBED_PIN(0x07, 6, 3, 14), // GPIO3[14]
163 P7_7 = MBED_PIN(0x07, 7, 3, 15), // GPIO3[15]
165 P8_0 = MBED_PIN(0x08, 8, 4, 0), // GPIO4[0] high-drive
166 P8_1 = MBED_PIN(0x09, 0, 4, 1), // GPIO4[1] high-drive
167 P8_2 = MBED_PIN(0x09, 1, 4, 2), // GPIO4[2] high-drive
168 P8_3 = MBED_PIN(0x09, 2, 4, 3), // GPIO4[3]
169 P8_4 = MBED_PIN(0x08, 4, 4, 4), // GPIO4[4]
170 P8_5 = MBED_PIN(0x08, 5, 4, 5), // GPIO4[5]
171 P8_6 = MBED_PIN(0x08, 6, 4, 6), // GPIO4[6]
172 P8_7 = MBED_PIN(0x08, 7, 4, 7), // GPIO4[7]
173 P8_8 = MBED_PIN(0x08, 8, NO_GPIO, 0),
175 P9_0 = MBED_PIN(0x09, 0, 4, 12), // GPIO4[12]
176 P9_1 = MBED_PIN(0x09, 1, 4, 13), // GPIO4[13]
177 P9_2 = MBED_PIN(0x09, 2, 4, 14), // GPIO4[14]
178 P9_3 = MBED_PIN(0x09, 3, 4, 15), // GPIO4[15]
179 P9_4 = MBED_PIN(0x09, 4, 5, 17), // GPIO5[17]
180 P9_5 = MBED_PIN(0x09, 5, 5, 18), // GPIO5[18]
181 P9_6 = MBED_PIN(0x09, 6, 4, 11), // GPIO4[11]
183 PA_0 = MBED_PIN(0x0A, 0, NO_GPIO, 0),
184 PA_1 = MBED_PIN(0x0A, 1, 4, 8), // GPIO4[8] high-drive
185 PA_2 = MBED_PIN(0x0A, 2, 4, 9), // GPIO4[9] high-drive
186 PA_3 = MBED_PIN(0x0A, 3, 4, 10), // GPIO4[10] high-drive
187 PA_4 = MBED_PIN(0x0A, 4, 5, 19), // GPIO5[19]
189 PB_0 = MBED_PIN(0x0B, 0, 5, 20), // GPIO5[20]
190 PB_1 = MBED_PIN(0x0B, 1, 5, 21), // GPIO5[21]
191 PB_2 = MBED_PIN(0x0B, 2, 5, 22), // GPIO5[22]
192 PB_3 = MBED_PIN(0x0B, 3, 5, 23), // GPIO5[23]
193 PB_4 = MBED_PIN(0x0B, 4, 5, 24), // GPIO5[24]
194 PB_5 = MBED_PIN(0x0B, 5, 5, 25), // GPIO5[25]
195 PB_6 = MBED_PIN(0x0B, 6, 5, 26), // GPIO5[26]
197 PC_0 = MBED_PIN(0x0C, 0, NO_GPIO, 0),
198 PC_1 = MBED_PIN(0x0C, 1, 6, 0), // GPIO6[0]
199 PC_2 = MBED_PIN(0x0C, 2, 6, 1), // GPIO6[1]
200 PC_3 = MBED_PIN(0x0C, 3, 6, 2), // GPIO6[2]
201 PC_4 = MBED_PIN(0x0C, 4, 6, 3), // GPIO6[3]
202 PC_5 = MBED_PIN(0x0C, 5, 6, 4), // GPIO6[4]
203 PC_6 = MBED_PIN(0x0C, 6, 6, 5), // GPIO6[5]
204 PC_7 = MBED_PIN(0x0C, 7, 6, 6), // GPIO6[6]
205 PC_8 = MBED_PIN(0x0C, 8, 6, 7), // GPIO6[7]
206 PC_9 = MBED_PIN(0x0C, 9, 6, 8), // GPIO6[8]
207 PC_10 = MBED_PIN(0x0C, 10, 6, 9), // GPIO6[9]
208 PC_11 = MBED_PIN(0x0C, 11, 6, 10), // GPIO6[10]
209 PC_12 = MBED_PIN(0x0C, 12, 6, 11), // GPIO6[11]
210 PC_13 = MBED_PIN(0x0C, 13, 6, 12), // GPIO6[12]
211 PC_14 = MBED_PIN(0x0C, 14, 6, 13), // GPIO6[13]
213 PD_0 = MBED_PIN(0x0D, 0, 6, 14), // GPIO6[14]
214 PD_1 = MBED_PIN(0x0D, 1, 6, 15), // GPIO6[15]
215 PD_2 = MBED_PIN(0x0D, 2, 6, 16), // GPIO6[16]
216 PD_3 = MBED_PIN(0x0D, 3, 6, 17), // GPIO6[17]
217 PD_4 = MBED_PIN(0x0D, 4, 6, 18), // GPIO6[18]
218 PD_5 = MBED_PIN(0x0D, 5, 6, 19), // GPIO6[19]
219 PD_6 = MBED_PIN(0x0D, 6, 6, 20), // GPIO6[20]
220 PD_7 = MBED_PIN(0x0D, 7, 6, 21), // GPIO6[21]
221 PD_8 = MBED_PIN(0x0D, 8, 6, 22), // GPIO6[22]
222 PD_9 = MBED_PIN(0x0D, 9, 6, 23), // GPIO6[23]
223 PD_10 = MBED_PIN(0x0D, 10, 6, 24), // GPIO6[24]
224 PD_11 = MBED_PIN(0x0D, 11, 6, 25), // GPIO6[25]
225 PD_12 = MBED_PIN(0x0D, 12, 6, 26), // GPIO6[26]
226 PD_13 = MBED_PIN(0x0D, 13, 6, 27), // GPIO6[27]
227 PD_14 = MBED_PIN(0x0D, 14, 6, 28), // GPIO6[28]
228 PD_15 = MBED_PIN(0x0D, 15, 6, 29), // GPIO6[29]
229 PD_16 = MBED_PIN(0x0D, 16, 6, 30), // GPIO6[30]
231 PE_0 = MBED_PIN(0x0E, 0, 7, 0), // GPIO7[0]
232 PE_1 = MBED_PIN(0x0E, 1, 7, 1), // GPIO7[1]
233 PE_2 = MBED_PIN(0x0E, 2, 7, 2), // GPIO7[2]
234 PE_3 = MBED_PIN(0x0E, 3, 7, 3), // GPIO7[3]
235 PE_4 = MBED_PIN(0x0E, 4, 7, 4), // GPIO7[4]
236 PE_5 = MBED_PIN(0x0E, 5, 7, 5), // GPIO7[5]
237 PE_6 = MBED_PIN(0x0E, 6, 7, 6), // GPIO7[6]
238 PE_7 = MBED_PIN(0x0E, 7, 7, 7), // GPIO7[7]
239 PE_8 = MBED_PIN(0x0E, 8, 7, 8), // GPIO7[8]
240 PE_9 = MBED_PIN(0x0E, 9, 7, 9), // GPIO7[9]
241 PE_10 = MBED_PIN(0x0E, 10, 7, 10), // GPIO7[10]
242 PE_11 = MBED_PIN(0x0E, 11, 7, 11), // GPIO7[11]
243 PE_12 = MBED_PIN(0x0E, 12, 7, 12), // GPIO7[12]
244 PE_13 = MBED_PIN(0x0E, 13, 7, 13), // GPIO7[13]
245 PE_14 = MBED_PIN(0x0E, 14, 7, 14), // GPIO7[14]
246 PE_15 = MBED_PIN(0x0E, 15, 7, 15), // GPIO7[15]
248 PF_0 = MBED_PIN(0x0F, 0, NO_GPIO, 0),
249 PF_1 = MBED_PIN(0x0F, 1, 7, 16), // GPIO7[16]
250 PF_2 = MBED_PIN(0x0F, 2, 7, 17), // GPIO7[17]
251 PF_3 = MBED_PIN(0x0F, 3, 7, 18), // GPIO7[18]
252 PF_4 = MBED_PIN(0x0F, 4, NO_GPIO, 0),
253 PF_5 = MBED_PIN(0x0F, 5, 7, 19), // GPIO7[19]
254 PF_6 = MBED_PIN(0x0F, 6, 7, 20), // GPIO7[20]
255 PF_7 = MBED_PIN(0x0F, 7, 7, 21), // GPIO7[21]
256 PF_8 = MBED_PIN(0x0F, 8, 7, 22), // GPIO7[22]
257 PF_9 = MBED_PIN(0x0F, 9, 7, 23), // GPIO7[23]
258 PF_10 = MBED_PIN(0x0F, 10, 7, 24), // GPIO7[24]
259 PF_11 = MBED_PIN(0x0F, 11, 7, 25), // GPIO7[25]
261 // GPIO pins from MCU pins
434 // Map mbed pin names to LPC43xx board signals
436 // Group 0x18 : CLKn pins
437 SFP_CLK0 = MBED_PIN(0x18, 0, 0, 0),
438 SFP_CLK1 = MBED_PIN(0x18, 1, 0, 0),
439 SFP_CLK2 = MBED_PIN(0x18, 2, 0, 0),
440 SFP_CLK3 = MBED_PIN(0x18, 3, 0, 0),
442 // Group 0x19 : USB1, I2C0, ADC0, ADC1
443 SFP_USB1 = MBED_PIN(0x19, 0, 0, 0),
444 SFP_I2C0 = MBED_PIN(0x19, 1, 0, 0),
445 SFP_AIO0 = MBED_PIN(0x19, 2, 0, 0), // ADC0 function select register
446 SFP_AIO1 = MBED_PIN(0x19, 3, 0, 0), // ADC1 function select register
447 SFP_AIO2 = MBED_PIN(0x19, 4, 0, 0), // Analog function select register
449 SFP_EMCD = MBED_PIN(0x1A, 0, 0, 0), // EMC clock delay register
451 SFP_INS0 = MBED_PIN(0x1C, 0, 0, 0), // Interrupt select for pin interrupts 0 to 3
452 SFP_INS1 = MBED_PIN(0x1C, 1, 0, 0), // Interrupt select for pin interrupts 4 to 7
455 #define MBED_ADC_NUM(MBED_PIN) ((MBED_PIN >> 5) & 0x0000000F)
456 #define MBED_ADC_CHAN(MBED_PIN) (MBED_PIN & 0x0000001F)
458 // Use pseudo-pin ID also for ADCs, although with special handling
459 SFP_ADC0_0 = MBED_PIN(0x19, 2, 0, 0), // ADC0_0
460 SFP_ADC0_1 = MBED_PIN(0x19, 2, 0, 1), // ADC0_1
461 SFP_ADC0_2 = MBED_PIN(0x19, 2, 0, 2), // ADC0_2
462 SFP_ADC0_3 = MBED_PIN(0x19, 2, 0, 3), // ADC0_3
463 SFP_ADC0_4 = MBED_PIN(0x19, 2, 0, 4), // ADC0_4
464 SFP_ADC0_5 = MBED_PIN(0x19, 2, 0, 5), // ADC0_5
465 SFP_ADC0_6 = MBED_PIN(0x19, 2, 0, 6), // ADC0_6
467 SFP_ADC1_0 = MBED_PIN(0x19, 3, 1, 0), // ADC1_0
468 SFP_ADC1_1 = MBED_PIN(0x19, 3, 1, 1), // ADC1_1
469 SFP_ADC1_2 = MBED_PIN(0x19, 3, 1, 2), // ADC1_2
470 SFP_ADC1_3 = MBED_PIN(0x19, 3, 1, 3), // ADC1_3
471 SFP_ADC1_4 = MBED_PIN(0x19, 3, 1, 4), // ADC1_4
472 SFP_ADC1_5 = MBED_PIN(0x19, 3, 1, 5), // ADC1_5
473 SFP_ADC1_6 = MBED_PIN(0x19, 3, 1, 6), // ADC1_6
474 SFP_ADC1_7 = MBED_PIN(0x19, 3, 1, 7), // ADC1_7
477 // Dedicated pin (no GPIO)
478 P_DED = MBED_PIN(0, 0, NO_GPIO, 0),
481 NC = (int)0xFFFFFFFF,
483 // ---------- LPCXpresso 4337 pins ----------
485 #ifdef BOARD_REV_A // for Rev.A
510 LED_GREEN = GPIO0_14,
583 //P_USB0_TX = SFP_USB1,
584 //P_USB0_RX = SFP_USB1,
590 // ---- ---- ---- ----
591 PWM1 = P1_7, // J9-3 J9-3 S2-3 S2-3
592 PWM2 = P7_6, // J9-8 J9-8 S4-6 S4-6
593 PWM3 = P6_12, // J10-1 J10-1 S10-3 n/p
594 PWM4 = P4_6, // J10-3 J10-3 S2-6 S2-6
595 PWM5 = P7_5, // J8-2 J8-2 S4-4 S4-4
596 PWM6 = P4_1, // J8-3 J8-3 S3-4 S3-4
597 PWM7 = P7_7, // J8-4 J8-4 S4-5 S4-5
598 PWM8 = P2_8, // J12-4 n/p S8-3 n/p
599 PWM9 = P2_9, // J12-6 n/p S9-3 n/p
600 PWM10 = P7_1, // J13-5 n/p S9-8 n/p
601 PWM11 = P7_0, // J13-6 n/p S9-9 n/p
602 PWM12 = P1_5, // J14-7 n/p S10-6 n/p
605 // ---------- End of LPCXpresso 4337 pins ----------
614 PullDefault = PullDown