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
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
|
/******************************************************************************
* configs/viewtool-stm32f107/src/viewtool_stm32f107.h
*
* Copyright (C) 2013-2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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_VIEWTOOL_STM32F107_SRC_INTERNAL_H
#define __CONFIGS_VIEWTOOL_STM32F107_SRC_INTERNAL_H
/******************************************************************************
* Included Files
******************************************************************************/
#include <nuttx/config.h>
#include <nuttx/compiler.h>
#include <stdint.h>
/******************************************************************************
* Pre-processor Definitions
******************************************************************************/
/* Configuration **************************************************************/
/* Assume that everything is supported */
#define HAVE_USBDEV 1
#define HAVE_MMCSD 1
/* Handle chip differences */
#if defined(CONFIG_ARCH_CHIP_STM32F103VCT6)
# undef CONFIG_STM32_OTGFS
#elif defined(CONFIG_ARCH_CHIP_STM32F107VC)
# undef CONFIG_STM32_USB
# undef CONFIG_STM32_SDIO
#else
# error Unknown chip on Viewtool board
# undef HAVE_USBDEV
# undef HAVE_MMCSD
#endif
/* Check if USB is enabled */
#if !defined(CONFIG_STM32_OTGFS) && !defined(CONFIG_STM32_USB)
# undef HAVE_USBDEV
#elif !defined(CONFIG_USBDEV)
# warning CONFIG_STM32_OTGFS (F107) or CONFIG_STM32_USB (F103) is enabled but CONFIG_USBDEV is not
# undef HAVE_USB
#endif
/* Can't support MMC/SD features if the SDIO peripheral is disabled */
#ifndef CONFIG_STM32_SDIO
# undef HAVE_MMCSD
#endif
/* Can't support MMC/SD features if mountpoints are disabled */
#ifdef CONFIG_DISABLE_MOUNTPOINT
# undef HAVE_MMCSD
#endif
/* Default MMC/SD slot number/device minor number */
#define VIEWTOOL_MMCSD_SLOTNO 0
/* GPIO Configuration *********************************************************/
/* LEDs
*
* There are four LEDs on the ViewTool STM32F103/F107 board that can be controlled
* by software: LED1 through LED4. All pulled high and can be illuminated by
* driving the output to low
*
* LED1 PA6
* LED2 PA7
* LED3 PB12
* LED4 PB13
*/
#define GPIO_LED1 (GPIO_OUTPUT | GPIO_CNF_OUTPP | GPIO_MODE_50MHz|\
GPIO_OUTPUT_SET | GPIO_PORTA | GPIO_PIN6)
#define GPIO_LED2 (GPIO_OUTPUT | GPIO_CNF_OUTPP | GPIO_MODE_50MHz|\
GPIO_OUTPUT_SET | GPIO_PORTA | GPIO_PIN7)
#define GPIO_LED3 (GPIO_OUTPUT | GPIO_CNF_OUTPP | GPIO_MODE_50MHz|\
GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN12)
#define GPIO_LED4 (GPIO_OUTPUT | GPIO_CNF_OUTPP | GPIO_MODE_50MHz|\
GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN13)
/* Buttons **************************************************************************/
/* All pulled high and will be sensed low when depressed.
*
* SW2 PC11 Needs J42 closed
* SW3 PC12 Needs J43 closed
* SW4 PA0 Needs J44 closed
*/
#define MIN_IRQBUTTON BUTTON_SW2
#define MAX_IRQBUTTON BUTTON_SW4
#define NUM_IRQBUTTONS (BUTTON_SW4 - BUTTON_SW2 + 1)
#define GPIO_SW2 (GPIO_INPUT | GPIO_CNF_INFLOAT | GPIO_MODE_INPUT | \
GPIO_EXTI | GPIO_PORTC | GPIO_PIN11)
#define GPIO_SW3 (GPIO_INPUT | GPIO_CNF_INFLOAT | GPIO_MODE_INPUT | \
GPIO_EXTI | GPIO_PORTC | GPIO_PIN12)
#define GPIO_SW4 (GPIO_INPUT | GPIO_CNF_INFLOAT | GPIO_MODE_INPUT | \
GPIO_EXTI | GPIO_PORTA | GPIO_PIN10)
/* microSD Card Interface
*
* microSD Connector
* -----------------
*
* ----------------------------- ------------------------- --------------------------------
* Connector J17 GPIO CONFIGURATION(s)
* PIN SIGNAL LEGEND (no remapping) DP83848C Board
* --- ------------- ----------- ------------------------- --------------------------------
* 1 VDD 3.3 N/A N/A 3.3
* 2 GND N/A N/A GND
* 3 PC8 SDIO_D0 GPIO_SDIO_D0 D0
* 4 PD2 SDIO_CMD GPIO_SDIO_CMD CMD
* 5 PC12 SDIO_CLK GPIO_SDIO_CK CLK
* 6 PC11 SDIO_D3 GPIO_SDIO_D3 D3
* 7 PC10 SDIO_D2 GPIO_SDIO_D2 D2
* 8 PC9 SDIO_D1 GPIO_SDIO_D1 D1
* 9 PA8 CD Board-specific GPIO input CD
* --- ------------- ----------- ------------------------- --------------------------------
*
* NOTES:
* 1. The STM32F107 does not support the SDIO/memory card interface. So the SD card
* cannot be used with the STM32F107 (unless the pin-out just happens to match up
* with an SPI-based card interface???)
*/
#ifdef CONFIG_ARCH_CHIP_STM32F103VCT6
# define GPIO_SD_CD (GPIO_INPUT | GPIO_CNF_INFLOAT | GPIO_EXTI| \
GPIO_PORTA | GPIO_PIN8)
#endif
/* USB
*
* The Viewtool base board has a USB Mini-B connector. Only USB device can
* be supported with this connector.
*
* ------------------------- ------------------------------------
* USB Connector
* J10 mini-USB GPIO CONFIGURATION(s)
* --- --------- ----------- ------------------------------------
* Pin Signal
* --- --------- ----------- ------------------------------------
* 1 USB_VBUS VDD_USB (No sensing available)
* 2 OTG_DM PA11 GPIO_OTGFS_DM (F107) GPIO_USB_DM (F103)
* 3 OTG_DP PA12 GPIO_OTGFS_DP (F107) GPIO_USB_DP (F103)
* 4 OTG_ID PA10 GPIO_OTGFS_ID (F107)
* 5 Shield N/A N/A
* 6 Shield N/A N/A
* 7 Shield N/A N/A
* 8 Shield N/A N/A
* 9 Shield N/A N/A
* PE11 USB_EN GPIO controlled soft pull-up (if J51 closed)
*
* NOTES:
* 1. GPIO_OTGFS_VBUS (F107) should not be configured. No VBUS sensing
* 2. GPIO_OTGFS_SOF (F107) is not used
* 3. The OTG FS module has is own, internal soft pull-up logic. J51 should
* be open so that PE11 activity does effect USB.
*/
#ifdef CONFIG_ARCH_CHIP_STM32F103VCT6
# define GPIO_USB_PULLUP (GPIO_OUTPUT | GPIO_CNF_OUTOD | GPIO_MODE_50MHz | \
GPIO_OUTPUT_SET | GPIO_PORTE | GPIO_PIN11)
#endif
/* LCD
*
* An LCD may be connected via J11. Only the the STM32F103 supports the FSMC signals
* needed to drive the LCD.
*
* The LCD features an (1) HY32D module with built-in SSD1289 LCD controller, and (a)
* a XPT2046 touch screen controller.
*
* LCD Connector
* -------------
*
* ----------------------------- ------------------------ --------------------------------
* Connector J11 GPIO CONFIGURATION(s)
* PIN SIGNAL LEGEND (F103 only) LCD Module
* --- ------------- ----------- ------------------------ --------------------------------
* 1 VDD_5 NC N/A 5V ---
* 2 GND GND N/A GND ---
* 3 PD14 DATA0 GPIO_NPS_D0 D0 HY32D
* 4 PD15 DATA1 GPIO_NPS_D1 D1 HY32D
* 5 PD0 DATA2 GPIO_NPS_D2 D2 HY32D
* 6 PD1 DATA3 GPIO_NPS_D3 D3 HY32D
* 7 PE7 DATA4 GPIO_NPS_D4 D4 HY32D
* 8 PE8 DATA5 GPIO_NPS_D5 D5 HY32D
* 9 PE9 DATA6 GPIO_NPS_D6 D6 HY32D
* 10 PE10 DATA7 GPIO_NPS_D7 D7 HY32D
* 11 PE11 DATA8 GPIO_NPS_D8 D8 HY32D
* 12 PE12 DATA9 GPIO_NPS_D9 D9 HY32D
* 13 PE13 DATA10 GPIO_NPS_D10 D10 HY32D
* 14 PE14 DATA11 GPIO_NPS_D11 D11 HY32D
* 15 PE15 DATA12 GPIO_NPS_D12 D12 HY32D
* 16 PD8 DATA13 GPIO_NPS_D13 D13 HY32D
* 17 PD9 DATA14 GPIO_NPS_D14 D14 HY32D
* 18 PD10 DATA15 GPIO_NPS_D15 D15 HY32D
* 19 (3) LCD_CS GPIO_NPS_NE1 CS HY32D
* 20 PD11 LCD_RS GPIO_NPS_A16 RS HY32D
* 21 PD5 LCD_R/W GPIO_NPS_NWE WR HY32D
* 22 PD4 LCD_RD GPIO_NPS_NOE RD HY32D
* 23 PB1 LCD_RESET (GPIO) RESET HY32D
* 24 N/C NC N/A TE (unused?)
* 25 VDD_3.3 BL_VCC N/A BLVDD CA6219 (Drives LCD backlight)
* 26 GND BL_GND N/A BLGND CA6219
* 27 PB0 BL_PWM GPIO_TIM3_CH3OUT(2) BL_CNT CA6219
* 28 PC5 LCDTP_IRQ (GPIO) TP_IRQ XPT2046
* 29 PC4 LCDTP_CS (GPIO) TP_CS XPT2046
* 30 PB13 LCDTP_CLK GPIO_SPI2_SCK TP_SCK XPT2046
* 31 PB15 LCDTP_DIN GPIO_SPI2_MOSI TP_SI XPT2046
* 32 PB14 LCDTP_DOUT GPIO_SPI2_MISO TP_SO XPT2046
* 33 VDD_3.3 VDD_3.3 N/A 3.3V ---
* 34 GND GND N/A GND ---
* --- ------------- ----------- ------------------------ --------------------------------
*
* NOTES:
* 1) Only the F103 version of the board supports the FSMC
* 2) No remap
* 3) LCD_CS is controlled by J13 JUMPER4 (under the LCD unfortunately):
*
* 1->2 : PD7 (GPIO_NPS_NE1) enables the multiplexor : 1E\ enable input (active LOW)
* 3->4 : PD13 provides 1A0 input (1A1 is grounded). : 1A0 address input
* So will chip enable to either LCD_CS or
* Flash_CS.
* 5->6 : 1Y0 output to LCD_CS : 1Y0 address output
* 7->8 : 1Y1 output to Flash_CE : 1Y1 address output
*
* Truth Table:
* 1E\ 1A0 1A1 1Y0 1Y1
* --- --- --- --- ---
* HI N/A N/A HI HI
* LO LO LO LO HI
* LO HI LO HI LO
*/
#define GPIO_LCD_RESET (GPIO_OUTPUT | GPIO_CNF_OUTPP | GPIO_MODE_50MHz | \
GPIO_OUTPUT_SET | GPIO_PORTB| GPIO_PIN1)
#define GPIO_LCDTP_IRQ (GPIO_INPUT | GPIO_CNF_INFLOAT | GPIO_MODE_INPUT | \
GPIO_EXTI | GPIO_PORTC | GPIO_PIN5)
#define GPIO_LCDTP_CS (GPIO_OUTPUT | GPIO_CNF_OUTPP | GPIO_MODE_50MHz | \
GPIO_OUTPUT_SET | GPIO_PORTC | GPIO_PIN4)
/************************************************************************************
* Public Functions
************************************************************************************/
#ifndef __ASSEMBLY__
/************************************************************************************
* Name: stm32_spiinitialize
*
* Description:
* Called to configure SPI chip select GPIO pins for the M3 Wildfire board.
*
************************************************************************************/
void weak_function stm32_spiinitialize(void);
/************************************************************************************
* Name: stm32_usbdev_initialize
*
* Description:
* Called from stm32_usbdev_initialize very early in initialization to setup USB-related
* GPIO pins for the Viewtool STM32F107 board.
*
************************************************************************************/
#if defined(CONFIG_STM32_OTGFS) && defined(CONFIG_USBDEV)
void weak_function stm32_usbdev_initialize(void);
#endif
/************************************************************************************
* Name: stm32_sdinitialize
*
* Description:
* Initialize the SPI-based SD card. Requires CONFIG_DISABLE_MOUNTPOINT=n
* and CONFIG_STM32_SPI1=y
*
************************************************************************************/
int stm32_sdinitialize(int minor);
/************************************************************************************
* Name: up_ledinit
*
* Description:
* Configure LEDs. LEDs are left in the OFF state.
*
************************************************************************************/
void stm32_ledinit(void);
#endif /* __ASSEMBLY__ */
#endif /* __CONFIGS_VIEWTOOL_STM32F107_SRC_INTERNAL_H */
|