mbed library sources
Fork of mbed-src by
targets/hal/TARGET_NXP/TARGET_LPC43XX/README.txt@222:96162ccfbf43, 2014-06-06 (annotated)
- Committer:
- mbed_official
- Date:
- Fri Jun 06 11:00:08 2014 +0100
- Revision:
- 222:96162ccfbf43
- Parent:
- 20:4263a77256ae
Synchronized with git revision eba3f25ec69f8e2431a49e87daf5ea829b0d7ed0
Full URL: https://github.com/mbedmicro/mbed/commit/eba3f25ec69f8e2431a49e87daf5ea829b0d7ed0/
[LPC1549] Fixed potential build error by GCC
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bogdanm | 20:4263a77256ae | 1 | mbed port to NXP LPC43xx |
bogdanm | 20:4263a77256ae | 2 | ======================== |
bogdanm | 20:4263a77256ae | 3 | Updated: 06/24/13 |
bogdanm | 20:4263a77256ae | 4 | |
bogdanm | 20:4263a77256ae | 5 | The NXP LPC43xx microcontrollers are the first to include multiple Cortex-M |
bogdanm | 20:4263a77256ae | 6 | cores in a single microcontroller package. This port allows mbed developers |
bogdanm | 20:4263a77256ae | 7 | to take advantage of the LPC43xx in their application using APIs that they |
bogdanm | 20:4263a77256ae | 8 | are familiar with. Some of the key features of the LPC43xx include: |
bogdanm | 20:4263a77256ae | 9 | |
bogdanm | 20:4263a77256ae | 10 | * Dual core ARM Cortex-M4/M0 both capable of up to 204 MHz |
bogdanm | 20:4263a77256ae | 11 | * Up to 264 KB SRAM, 1 MB internal flash |
bogdanm | 20:4263a77256ae | 12 | * Two High-speed USB 2.0 interfaces |
bogdanm | 20:4263a77256ae | 13 | * Ethernet MAC |
bogdanm | 20:4263a77256ae | 14 | * LCD interface |
bogdanm | 20:4263a77256ae | 15 | * Quad-SPI Flash Interface (SPIFI) |
bogdanm | 20:4263a77256ae | 16 | * State Configurable Timer (SCT) |
bogdanm | 20:4263a77256ae | 17 | * Serial GPIO (SGPIO) |
bogdanm | 20:4263a77256ae | 18 | * Up to 164 GPIO |
bogdanm | 20:4263a77256ae | 19 | |
bogdanm | 20:4263a77256ae | 20 | The NXP LPC18xx is a single core Cortex-M3 implementation that is compatible |
bogdanm | 20:4263a77256ae | 21 | with the LPC43XX for cost-sensitive applications not requiring multiple cores. |
bogdanm | 20:4263a77256ae | 22 | |
bogdanm | 20:4263a77256ae | 23 | mbed port to the LPC43XX - Micromint USA <support@micromint.com> |
bogdanm | 20:4263a77256ae | 24 | |
bogdanm | 20:4263a77256ae | 25 | Compatibility |
bogdanm | 20:4263a77256ae | 26 | ------------- |
bogdanm | 20:4263a77256ae | 27 | * This port has been tested with the following boards: |
bogdanm | 20:4263a77256ae | 28 | Board MCU RAM/Flash |
bogdanm | 20:4263a77256ae | 29 | Micromint Bambino 200 LPC4330 264K SRAM/4 MB SPIFI flash |
bogdanm | 20:4263a77256ae | 30 | |
bogdanm | 20:4263a77256ae | 31 | * Ethernet, USB and microSD filesystem drivers will be available when the |
bogdanm | 20:4263a77256ae | 32 | Bambino 200E is released. |
bogdanm | 20:4263a77256ae | 33 | |
bogdanm | 20:4263a77256ae | 34 | * This port uses offline toolchains. Development and testing has been done |
bogdanm | 20:4263a77256ae | 35 | mainly with the Keil MDK 4.70. Some testing has been done with IAR 6.5. |
bogdanm | 20:4263a77256ae | 36 | Eventually Keil, IAR and GCC CodeRed will be supported. |
bogdanm | 20:4263a77256ae | 37 | |
bogdanm | 20:4263a77256ae | 38 | * CMSIS-DAP debugging is not currently implemented. To debug use a JTAG. |
bogdanm | 20:4263a77256ae | 39 | The NXP DFU tool can be used for flash programming. |
bogdanm | 20:4263a77256ae | 40 | |
bogdanm | 20:4263a77256ae | 41 | * This port should support NXP LPC43XX and LPC18XX variants with a single |
bogdanm | 20:4263a77256ae | 42 | codebase. The core declaration specifies the binaries to be built: |
bogdanm | 20:4263a77256ae | 43 | mbed define CMSIS define MCU Target |
bogdanm | 20:4263a77256ae | 44 | __CORTEX_M4 CORE_M4 LPC43xx Cortex-M4 |
bogdanm | 20:4263a77256ae | 45 | __CORTEX_M0 CORE_M0 LPC43xx Cortex-M0 |
bogdanm | 20:4263a77256ae | 46 | __CORTEX_M3 CORE_M3 LPC18xx Cortex-M3 |
bogdanm | 20:4263a77256ae | 47 | These MCUs all share the peripheral IP, common driver code is feasible. |
bogdanm | 20:4263a77256ae | 48 | Yet each variant can have different memory segments, peripherals, etc. |
bogdanm | 20:4263a77256ae | 49 | Plus, each board design can integrate different external peripherals |
bogdanm | 20:4263a77256ae | 50 | or interfaces. A future release of the mbed SDK and its build tools will |
bogdanm | 20:4263a77256ae | 51 | support specifying the target board when building binaries. At this time |
bogdanm | 20:4263a77256ae | 52 | building binaries for different targets requires an external project or |
bogdanm | 20:4263a77256ae | 53 | Makefile. |
bogdanm | 20:4263a77256ae | 54 | |
bogdanm | 20:4263a77256ae | 55 | * No testing has been done with LPC18xx hardware. At the very least supporting |
bogdanm | 20:4263a77256ae | 56 | the LPC18xx would require different compiler flags, additional CMSIS core_cm3 |
bogdanm | 20:4263a77256ae | 57 | code as well as minor driver code changes. |
bogdanm | 20:4263a77256ae | 58 | |
bogdanm | 20:4263a77256ae | 59 | Notes |
bogdanm | 20:4263a77256ae | 60 | ----- |
bogdanm | 20:4263a77256ae | 61 | * On the LPC43xx the hardware pin name and the GPIO pin name are not the same, |
bogdanm | 20:4263a77256ae | 62 | requiring different offsets for the SCU and GPIO registers. To simplify logic |
bogdanm | 20:4263a77256ae | 63 | the pin identifier encodes the offsets. Macros are used for decoding. |
bogdanm | 20:4263a77256ae | 64 | For example, P6_11 corresponds to GPIO3[7] and is encoded/decoded as follows: |
bogdanm | 20:4263a77256ae | 65 | |
bogdanm | 20:4263a77256ae | 66 | P6_11 = MBED_PIN(0x06, 11, 3, 7) = 0x032C0067 |
bogdanm | 20:4263a77256ae | 67 | |
bogdanm | 20:4263a77256ae | 68 | MBED_SCU_REG(P6_11) = 0x4008632C MBED_GPIO_PORT(P6_11) = 3 |
bogdanm | 20:4263a77256ae | 69 | MBED_GPIO_REG(P6_11) = 0x400F4000 MBED_GPIO_PIN(P6_11) = 7 |
bogdanm | 20:4263a77256ae | 70 | |
bogdanm | 20:4263a77256ae | 71 | * The LPC43xx implements GPIO pin and group interrupts. Any pin in the 8 32-bit |
bogdanm | 20:4263a77256ae | 72 | GPIO ports can interrupt (LPC4350 supports up to 164). On group interrupts a |
bogdanm | 20:4263a77256ae | 73 | pin can only interrupt on the rising or falling edge, not both as required |
bogdanm | 20:4263a77256ae | 74 | by the mbed InterruptIn class. Also, group interrupts can't be cleared |
bogdanm | 20:4263a77256ae | 75 | individually. This implementation uses pin interrupts (8 on M4/M3, 1 on M0). |
bogdanm | 20:4263a77256ae | 76 | A future implementation may provide group interrupt support. |