summaryrefslogtreecommitdiff
path: root/nuttx/configs/lpcxpresso-lpc1768/src/lpcxpresso_internal.h
blob: 43237a0c2bd5424fab0332e1c46d1b65d5f6a661 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
/************************************************************************************
 * configs/lpcxpresso-lpc1768/src/lpcxpresso_internal.h
 * arch/arm/src/board/lpcxpresso_internal.n
 *
 *   Copyright (C) 2011 Gregory Nutt. All rights reserved.
 *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 3. Neither the name NuttX nor the names of its contributors may be
 *    used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 ************************************************************************************/

#ifndef _CONFIGS_LPCXPRESSO_LPC1768_SRC_LPCXPRESSO_INTERNAL_H
#define _CONFIGS_LPCXPRESSO_LPC1768_SRC_LPCXPRESSO_INTERNAL_H

/************************************************************************************
 * Included Files
 ************************************************************************************/

#include <nuttx/config.h>
#include <nuttx/compiler.h>

/************************************************************************************
 * Definitions
 ************************************************************************************/

/* LPCXpresso LPC1768 board pin usage ***********************************************/
/* Pin Description                  Connector On Board       Base Board
 * -------------------------------- --------- -------------- ---------------------
 * P0[0]/RD1/TXD3/SDA1               J6-9     I2C E2PROM SDA TXD3/SDA1
 * P0[1]/TD1/RXD3/SCL                J6-10                   RXD2/SCL1
 * P0[2]/TXD0/AD0[7]                 J6-21    
 * P0[3]/RXD0/AD0[6]                 J6-22    
 * P0[4]/I2SRX-CLK/RD2/CAP2.0        J6-38                   CAN_RX2
 * P0[5]/I2SRX-WS/TD2/CAP2.1         J6-39                   CAN_TX2
 * P0[6]/I2SRX_SDA/SSEL1/MAT2[0]     J6-8                    SSEL1
 * P0[7]/I2STX_CLK/SCK1/MAT2[1]      J6-7                    SCK1
 * P0[8]/I2STX_WS/MISO1/MAT2[2]      J6-6                    MISO1
 * P0[9]/I2STX_SDA/MOSI1/MAT2[3]     J6-5                    MOSI1
 * P0[10]                            J6-40                   TXD2/SDA2
 * P0[11]                            J6-41                   RXD2/SCL2
 * P0[15]/TXD1/SCK0/SCK              J6-13                   TXD1/SCK0
 * P0[16]/RXD1/SSEL0/SSEL            J6-14                   RXD1/SSEL0
 * P0[17]/CTS1/MISO0/MISO            J6-12                   MISO0
 * P0[18]/DCD1/MOSI0/MOSI            J6-11                   MOSI0
 * P0[19]/DSR1/SDA1                  PAD17                   N/A
 * P0[20]/DTR1/SCL1                  PAD18    I2C E2PROM SCL N/A
 * P0[21]/RI1/MCIPWR/RD1             J6-23                  
 * P0[22]/RTS1/TD1                   J6-24    LED            
 * P0[23]/AD0[0]/I2SRX_CLK/CAP3[0]   J6-15                   AD0.0
 * P0[24]/AD0[1]/I2SRX_WS/CAP3[1]    J6-16                   AD0.1
 * P0[25]/AD0[2]/I2SRX_SDA/TXD3      J6-17                   AD0.2
 * P0[26]/AD0[3]/AOUT/RXD3           J6-18                   AD0.3/AOUT
 * P0[27]/SDA0/USB_SDA               J6-25                   
 * P0[28]/SCL0                       J6-26                   
 * P0[29]/USB_D+                     J6-37                   USB_D+
 * P0[30]/USB_D-                     J6-36                   USB_D-
 */

#define LPCXPRESSO_I2C1_EPROM_SDA GPIO_I2C1_SDA_1
#define LPCXPRESSO_I2C1_EPROM_SDL GPIO_I2C1_SCL_2
#define LPCXPRESSO_LED (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT0 | GPIO_PIN22)

/* P1[0]/ENET-TXD0                   J6-34?  TXD0            TX-(Ethernet PHY)
 * P1[1]/ENET_TXD1                   J6-35?  TXD1            TX+(Ethernet PHY)
 * P1[4]/ENET_TX_EN                          TXEN            N/A
 * P1[8]/ENET_CRS                            CRS_DV/MODE2    N/A
 * P1[9]/ENET_RXD0                   J6-32?  RXD0/MODE0      RD-(Ethernet PHY)
 * P1[10]/ENET_RXD1                  J6-33?  RXD1/MODE1      RD+(Ethernet PHY)
 * P1[14]/ENET_RX_ER                         RXER/PHYAD0     N/A
 * P1[15]/ENET_REF_CLK                       REFCLK          N/A
 * P1[16]/ENET_MDC                           MDC             N/A
 * P1[17]/ENET_MDIO                          MDIO            N/A
 * P1[18]/USB_UP_LED/PWM1[1]/CAP1[0] PAD1                    N/A
 * P1[19]/MC0A/USB_PPWR/N_CAP1.1     PAD2                    N/A
 * P1[20]/MCFB0/PWM1.2/SCK0          PAD3                    N/A
 * P1[21]/MCABORT/PWM1.3/SSEL0       PAD4                    N/A
 * P1[22]/MC0B/USB-PWRD/MAT1.0       PAD5                    N/A
 * P1[23]/MCFB1/PWM1.4/MISO0         PAD6                    N/A
 * P1[24]/MCFB2/PWM1.5/MOSI0         PAD7                    N/A
 * P1[25]/MC1A/MAT1.1                PAD8                    N/A
 * P1[26]/MC1B/PWM1.6/CAP0.0         PAD9                    N/A
 * P1[27]/CLKOUT/USB-OVRCR-N/CAP0.1  PAD10                   N/A
 * P1[28]/MC2A/PCAP1.0/MAT0.0        PAD11                   N/A
 * P1[29]/MC2B/PCAP1.1/MAT0.1        PAD12                   N/A
 * P1[30]/VBUS/AD0[4]                J6-19                   AD0.4
 * P1[31]/SCK1/AD0[5]                J6-20                   AD0.5
 *
 * P2[0]/PWM1.1/TXD1                 J6-42                   PWM1.1
 * P2[1]/PWM1.2/RXD1                 J6-43                   PWM1.2
 * P2[2]/PWM1.3/CTS1/TRACEDATA[3]    J6-44                   PWM1.3
 * P2[3]/PWM1.4/DCD1/TRACEDATA[2]    J6-45                   PWM1.4
 * P2[4]/PWM1.5/DSR1/TRACEDATA[1]    J6-46                   PWM1.5
 * P2[5]/PWM1[6]/DTR1/TRACEDATA[0]   J6-47                   PWM1.6
 * P2[6]/PCAP1[0]/RI1/TRACECLK       J6-48    
 * P2[7]/RD2/RTS1                    J6-49    
 * P2[8]/TD2/TXD2                    J6-50    
 * P2[9]/USB_CONNECT/RXD2            PAD19   USB Pullup      N/A
 * P2[10]/EINT0/NMI                  J6-51    
 * P2[11]/EINT1/I2STX_CLK            J6-52    
 * P2[12]/EINT2/I2STX_WS             J6-53    
 * P2[13]/EINT3/I2STX_SDA            J6-27                 
 */

#define LPCXPRESSO_USB_PULLUP (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN9)

/* P3[25]/MAT0.0/PWM1.2              PAD13                   N/A
 * P3[26]/STCLK/MAT0.1/PWM1.3        PAD14                   N/A
 *
 * P4[28]/RX-MCLK/MAT2.0/TXD3        PAD15                   N/A
 * P4[29]/TX-MCLK/MAT2.1/RXD3        PAD16                   N/A
 */
 
/* SD Slot
 *
 *      Base-board  J4/J6 LPC1768
 * SD   Signal      Pin   Pin
 * ---  ----------- ----- --------
 * CS   PIO1_11*     55   P2.2        (See LPCXPRESSO_SD_CS)
 * DIN  PIO0_9-MOSI   5   P0.9 MOSI1  (See GPIO_SSP1_MOSI in lpc17_internal.h)
 * DOUT PIO0_8-MISO   6   P0.8 MISO1  (See GPIO_SSP1_MISO in lpc17_internal.h)
 * CLK  PIO2_11-SCK   7   P0.9 SCK1   (See GPIO_SSP1_SCK in board.h)
 * CD   PIO2_10      52   P2.11       (See LPCXPRESSO_SD_CD)
 */

#define LPCXPRESSO_SD_CS (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT2 | GPIO_PIN2)
#ifdef CONFIG_GPIO_IRQ
#  define LPCXPRESSO_SD_CD (GPIO_INTBOTH | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN11)
#else
#  define LPCXPRESSO_SD_CD (GPIO_INPUT   | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN11)
#endif

/* USB:
 *
 *   Base-board          J4/J6 LPC1768
 *   Signal              Pin   Pin
 *   ------------------- ----- --------
 *   USB_DM              36    P0.30/USB-D-
 *   USB_DP              37    P0.29/USB-D+
 *   N/C                 N/C   P1.18/USB-UP-LED/PWM1.1/CAP1.0
 *   PIO1_3 (not used)   19    P1.30/VBUS/AD0.4
 *   N/C                 N/C   P2.9/USB-CONNECT/RXD2 (See Notes)
 *   ------------------- ----- --------
 *   PIO0_6-USB_CONNECT* 23    P0.21/RI1/RD1
 *   PIO0_3-VBUS_SENSE   39    P0.5/I2SRX-WS/TD2/CAP2.1
 *
 * Notes:
 * - The standard USB CONNECT (P0.9) provides USB D+ pullup on board the
 *   LPCXpresso card; it should be un-necessary to use the based board
 *   version of the pullup.
 * - No changes to jumper settings are required.  There are few USB-
 *   related jumpers on the based board, but none are required:
 *   - J14 must be set to permit GPIO control of the base board USB
 *     connect pin. NOT USED
 *   - J12 must be set to permit GPIO control of the USB vbus sense pin
 * - The standard VBUS (P1.30) is not connected.  As a consequence, the
 *   USB driver will not correctly respond to USB insertion or removal
 *   events.
 * - The standard USB LED (P1.18) is not connected.
 */

#define LPCXPRESSO_USB_CONNECT (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT0 | GPIO_PIN21)
#ifdef CONFIG_GPIO_IRQ
#  define LPCXPRESSO_USB_VBUSSENSE (GPIO_INTBOTH | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN5)
#else
#  define LPCXPRESSO_USB_VBUSSENSE (GPIO_INPUT   | GPIO_PULLUP | GPIO_PORT0 | GPIO_PIN5)
#endif

/* 96x64 White OLED with I2C/SPI interface
 *
 *  ----------------------------+-------+-------------- -----------------------------
 *  LPC1758 Pin                 | J4/6  | Base Board    Description
 *  ----------------------------+-------+-------------- -----------------------------
 *  P2.1/PWM1.2/RXD1            |  43   | PIO1_10       FAN5331 Power Control (SHDN#)
 *  P0.6/I2SRX-SDA/SSEL1/MAT2.0 |   8   | PIO0_2        OLED chip select (CS#)
 *  P2.7/RD2/RTS1               |  49   | PIO2_7        OLED command/data (D/C#)
 *  P0.7/I2STX-CLK/SCK1/MAT2.1  |   7   | PIO2_11-SCK   OLED clock (D0)
 *  P0.9/I2STX-SDA/MOSI1/MAT2.3 |   5   | PIO0_9-MOSI   OLED data in (D1)
 *  ----------------------------+-------+-------------- -----------------------------
 */

#define LPCXPRESSO_OLED_POWER (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN1)
#define LPCXPRESSO_OLED_CS    (GPIO_OUTPUT | GPIO_VALUE_ONE  | GPIO_PORT0 | GPIO_PIN6)
#define LPCXPRESSO_OLED_DC    (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN7)

/************************************************************************************
 * Public Types
 ************************************************************************************/

/************************************************************************************
 * Public data
 ************************************************************************************/

#ifndef __ASSEMBLY__

/************************************************************************************
 * Public Functions
 ************************************************************************************/

/************************************************************************************
 * Name: lpc17_sspinitialize
 *
 * Description:
 *   Called to configure SPI chip select GPIO pins for the LPCXpresso board.
 *
 ************************************************************************************/

extern void weak_function lpc17_sspinitialize(void);

#endif /* __ASSEMBLY__ */
#endif /* _CONFIGS_LPCXPRESSO_LPC1768_SRC_LPCXPRESSO_INTERNAL_H */