diff options
| author | hathach <[email protected]> | 2012-12-04 18:18:29 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2012-12-04 18:18:29 +0700 |
| commit | f31ade6151089a0d6d99b73c23a7a6e1a538c268 (patch) | |
| tree | 10dbf649bf16f6a6ce4fd9d9e66c1401ad1918a0 /demos | |
| parent | 82820a206666a6415148b0d26985ac5c7a9eb279 (diff) | |
add board abstract layer
rename arch to mcu
Diffstat (limited to 'demos')
| -rw-r--r-- | demos/boards/board.h | 86 | ||||
| -rw-r--r-- | demos/boards/board_lpcexpresso1347.c | 64 | ||||
| -rw-r--r-- | demos/boards/board_ngx4330_explorer.c | 93 | ||||
| -rw-r--r-- | demos/device/keyboard/.cproject | 16 | ||||
| -rw-r--r-- | demos/device/keyboard/.project | 9 | ||||
| -rw-r--r-- | demos/device/keyboard/main.c | 81 |
6 files changed, 294 insertions, 55 deletions
diff --git a/demos/boards/board.h b/demos/boards/board.h new file mode 100644 index 000000000..c3bdd6e48 --- /dev/null +++ b/demos/boards/board.h @@ -0,0 +1,86 @@ +/* + * board.h + * + * Created on: Dec 4, 2012 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * All rights reserved. + * + * 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. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + * This file is part of the tiny usb stack. + */ + +/** \file + * \brief TBD + * + * \note TBD + */ + +/** + * \defgroup Group_Board Boards + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_BOARD_H_ +#define _TUSB_BOARD_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#include <stdint.h> + + /// n-th Bit +#ifndef BIT +#define BIT(n) (1 << (n)) +#endif + +#ifndef BOARD +#define BOARD BOARD_NGX4330_EXPLORER +#endif + +#define BOARD_NGX4330_EXPLORER 1 +#define BOARD_LPCXPRESSO1347 2 + +//#ifdef BOARD == BOARD_NGX4330_EXPLORER +//#include "board_ngx4330_explorer.h" +//#endif + +/// Init board peripherals : Clock, UART, LEDs, Buttons +void board_init(void); +void board_leds(uint32_t mask, uint32_t state); + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_BOARD_H_ */ + +/** @} */ diff --git a/demos/boards/board_lpcexpresso1347.c b/demos/boards/board_lpcexpresso1347.c new file mode 100644 index 000000000..9b3179687 --- /dev/null +++ b/demos/boards/board_lpcexpresso1347.c @@ -0,0 +1,64 @@ +/* + * board_lpcexpresso1347.c + * + * Created on: Dec 4, 2012 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * All rights reserved. + * + * 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. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + * This file is part of the tiny usb stack. + */ + +#include "board.h" + +#if BOARD == BOARD_LPCXPRESSO1347 + +#include "LPC13Uxx.h" + +#define CFG_LED_PORT (0) +#define CFG_LED_PIN (7) +#define CFG_LED_ON (1) +#define CFG_LED_OFF (0) + +void board_init(void) +{ + SystemInit(); + systickInit(1); + GPIOInit(); + GPIOSetDir(CFG_LED_PORT, CFG_LED_PIN, 1); + LPC_GPIO->CLR[CFG_LED_PORT] = (1 << CFG_LED_PIN); +} + +void board_leds(uint32_t mask, uint32_t state) +{ + if (mask) + GPIOSetBitValue(CFG_LED_PORT, CFG_LED_PIN, state); +} + +#endif diff --git a/demos/boards/board_ngx4330_explorer.c b/demos/boards/board_ngx4330_explorer.c new file mode 100644 index 000000000..6ab9c0e27 --- /dev/null +++ b/demos/boards/board_ngx4330_explorer.c @@ -0,0 +1,93 @@ +/* + * board_ngx4330_explorer.c + * + * Created on: Dec 4, 2012 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * All rights reserved. + * + * 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. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + * This file is part of the tiny usb stack. + */ + +#include "board.h" + +#if BOARD == BOARD_NGX4330_EXPLORER + +#include "lpc43xx_uart.h" +#include "lpc43xx_scu.h" +#include "lpc43xx_cgu.h" +#include "lpc43xx_gpio.h" +#include "lpc43xx_timer.h" +#include "lpc43xx_i2c.h" +#include "lpc43xx_gpdma.h" +#include "lpc43xx_i2s.h" +#include "lpc43xx_emc.h" + +#define BOARD_MAX_LEDS 2 +const static struct { + uint8_t port; + uint8_t pin; +}leds[BOARD_MAX_LEDS] = { {1, 11}, {1,12} }; + +void board_init(void) +{ + CGU_Init(); + SysTick_Config( CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/1000 ); /* 1 ms Timer */ + + /* Turn on 5V USB VBUS TODO Should be Host-only */ + scu_pinmux(0x2, 6, MD_PUP | MD_EZI, FUNC4); // P2_6 USB1_PWR_EN, USB1 VBus function + scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // P2_5 USB1_VBUS, MUST CONFIGURE THIS SIGNAL FOR USB1 NORMAL OPERATION + + /* Turn on 5V USB VBUS TODO Should be Host-only */ +#if 1 //(BOARD == BOARD_XPLORER) + scu_pinmux(0x1, 7, MD_PUP | MD_EZI, FUNC4); // P1_7 USB0_PWR_EN, USB0 VBus function Xplorer +#else + scu_pinmux(0x2, 3, MD_PUP | MD_EZI, FUNC7); // P2_3 USB0_PWR_EN, USB0 VBus function Farnell +#endif + + // Leds Init + uint8_t i; + for (i=0; i<BOARD_MAX_LEDS; i++) + { + scu_pinmux(leds[i].port, leds[i].pin, MD_PUP|MD_EZI|MD_ZI, FUNC0); + GPIO_SetDir(leds[i].port, BIT(leds[i].pin), 1); // output + } +} + +void board_leds(uint32_t mask, uint32_t state) +{ + uint8_t i; + for(i=0; i<BOARD_MAX_LEDS; i++) + { + if ( mask & BIT(i) ) + (mask & state) ? GPIO_SetValue(leds[i].port, BIT(leds[i].pin)) : GPIO_ClearValue(leds[i].port, BIT(leds[i].pin)) ; + } +} + +#endif diff --git a/demos/device/keyboard/.cproject b/demos/device/keyboard/.cproject index 19402f70d..ac7e5142b 100644 --- a/demos/device/keyboard/.cproject +++ b/demos/device/keyboard/.cproject @@ -29,13 +29,17 @@ <option id="com.crt.advproject.gcc.thumb.697143257" name="Thumb mode" superClass="com.crt.advproject.gcc.thumb" value="true" valueType="boolean"/> <option id="gnu.c.compiler.option.preprocessor.def.symbols.371325215" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols"> <listOptionValue builtIn="false" value="__REDLIB__"/> + <listOptionValue builtIn="false" value="BOARD=BOARD_LPCXPRESSO1347"/> + <listOptionValue builtIn="false" value="MCU=MCU_LPC134X"/> <listOptionValue builtIn="false" value="DEBUG"/> <listOptionValue builtIn="false" value="__CODE_RED"/> </option> <option id="gnu.c.compiler.option.misc.other.204394496" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections" valueType="string"/> <option id="gnu.c.compiler.option.include.paths.1207481236" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> - <listOptionValue builtIn="false" value=""${workspace_loc:/CMSISv2p10_LPC13Uxx/inc}""/> - <listOptionValue builtIn="false" value=""${workspace_loc:/LPC13Uxx_DriverLib/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/CDL/CMSISv2p10_LPC13Uxx/lpcinc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/boards}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/CDL/CMSISv2p10_LPC13Uxx/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/CDL/LPC13UxxLib/inc}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/tinyusb/tinyusb}""/> </option> <option id="gnu.c.compiler.option.include.files.318820756" name="Include files (-include)" superClass="gnu.c.compiler.option.include.files"/> @@ -59,13 +63,11 @@ <listOptionValue builtIn="false" value="--gc-sections"/> </option> <option id="gnu.c.link.option.paths.1465143173" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths"> - <listOptionValue builtIn="false" value=""${workspace_loc:/CMSISv2p10_LPC13Uxx/Debug}""/> - <listOptionValue builtIn="false" value=""${workspace_loc:/LPC13Uxx_DriverLib/Debug}""/> - <listOptionValue builtIn="false" value=""${workspace_loc:/tinyusb/Debug}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/CDL/LPC13Uxx}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/tinyusb/lpc134x}""/> </option> <option id="gnu.c.link.option.libs.447978281" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs"> - <listOptionValue builtIn="false" value="CMSISv2p10_LPC13Uxx"/> - <listOptionValue builtIn="false" value="LPC13Uxx_DriverLib"/> + <listOptionValue builtIn="false" value="CDL"/> <listOptionValue builtIn="false" value="tinyusb"/> </option> <option id="com.crt.advproject.link.gcc.hdrlib.1111642583" name="Use C library" superClass="com.crt.advproject.link.gcc.hdrlib" value="com.crt.advproject.gcc.link.hdrlib.codered.nohost" valueType="enumerated"/> diff --git a/demos/device/keyboard/.project b/demos/device/keyboard/.project index 200a329db..dd46f5734 100644 --- a/demos/device/keyboard/.project +++ b/demos/device/keyboard/.project @@ -3,8 +3,6 @@ <name>device_keyboard</name> <comment></comment> <projects> - <project>CMSISv2p10_LPC13Uxx</project> - <project>LPC13Uxx_DriverLib</project> <project>tinyusb</project> </projects> <buildSpec> @@ -82,4 +80,11 @@ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> </natures> + <linkedResources> + <link> + <name>boards</name> + <type>2</type> + <locationURI>PARENT-2-PROJECT_LOC/boards</locationURI> + </link> + </linkedResources> </projectDescription> diff --git a/demos/device/keyboard/main.c b/demos/device/keyboard/main.c index b610e6567..859139997 100644 --- a/demos/device/keyboard/main.c +++ b/demos/device/keyboard/main.c @@ -4,6 +4,7 @@ #include <cr_section_macros.h> #include <NXP/crp.h> +#include "board.h" #include "tusb.h" // Variable to store CRP value in. Will be placed automatically @@ -16,19 +17,7 @@ int main(void) uint32_t currentSecond, lastSecond; currentSecond = lastSecond = 0; - SystemInit(); - - systickInit(1); - GPIOInit(); - - #define CFG_LED_PORT (0) - #define CFG_LED_PIN (7) - #define CFG_LED_ON (1) - #define CFG_LED_OFF (0) - - GPIOSetDir(CFG_LED_PORT, CFG_LED_PIN, 1); - LPC_GPIO->CLR[CFG_LED_PORT] = (1 << CFG_LED_PIN); - + board_init(); tusb_init(); while (1) @@ -38,7 +27,7 @@ int main(void) { /* Toggle LED once per second */ lastSecond = currentSecond; - GPIOSetBitValue(CFG_LED_PORT, CFG_LED_PIN, lastSecond % 2); + board_leds(0x01, lastSecond%2); #ifndef CFG_CLASS_CDC if (usb_isConfigured()) @@ -55,38 +44,38 @@ int main(void) #endif } - #ifdef CFG_CLASS_CDC - if (usb_isConfigured()) - { - uint8_t cdc_char; - if( tusb_cdc_getc(&cdc_char) ) - { - switch (cdc_char) - { - #ifdef CFG_CLASS_HID_KEYBOARD - case '1' : - { - uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'}; - tusb_hid_keyboard_sendKeys(0x08, keys, 1); // windows + E --> open explorer - } - break; - #endif - - #ifdef CFG_CLASS_HID_MOUSE - case '2' : - tusb_hid_mouse_send(0, 10, 10); - break; - #endif - - default : - cdc_char = toupper(cdc_char); - tusb_cdc_putc(cdc_char); - break; - - } - } - } -#endif +// #ifdef CFG_CLASS_CDC +// if (usb_isConfigured()) +// { +// uint8_t cdc_char; +// if( tusb_cdc_getc(&cdc_char) ) +// { +// switch (cdc_char) +// { +// #ifdef CFG_CLASS_HID_KEYBOARD +// case '1' : +// { +// uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'}; +// tusb_hid_keyboard_sendKeys(0x08, keys, 1); // windows + E --> open explorer +// } +// break; +// #endif +// +// #ifdef CFG_CLASS_HID_MOUSE +// case '2' : +// tusb_hid_mouse_send(0, 10, 10); +// break; +// #endif +// +// default : +// cdc_char = toupper(cdc_char); +// tusb_cdc_putc(cdc_char); +// break; +// +// } +// } +// } +//#endif } return 0; |
