* The TXDATCTL register was used even if only the control signals were modified which caused extra data to be transmitted. * The RXDAT register does not only contain the received data, but also control information in bits 16 to 20. The old code did not mask out the control information and in rare cases that would cause the returned data to include too much information (i.e. received 0xaa as data but the function returned 0x300aa). * The LPC1549 uses a Switch Matric (SWM) to allow any pin to have any function. This is not used in the old code which simply assigned the first instance of the SPI class to SPI0 and the second instance to SPI1. The third instance would result in a call to error(). This behaviour is not at all working with real world examples where the SPI bus contains more than two peripherals. The third peripheral would cause the platform to end up in error(). The solution is to modify the get_available_spi() function to first see if the MISO/MOSI/SCLK and SSEL pins are already configured for use as either SPI0 or SPI1. If the exact same pins are already used then the SPIx will be reused. If one or more pins are different then another SPIx will be used (or if both are alredy in use then error()). With this change it is now possible to do this: MyFlash f(D11,D12,D13); // Will use SPI0 MyTemp t(D11,D12,D13); // Will use SPI0 SDFileSystem s(D11,D12,D13,"sd"); // Will use SPI0 MyDisplay d(D11,D12,D13); // Will use SPI0 The old/existing code would have resulted in this MyFlash f(D11,D12,D13); // Will use SPI0 MyTemp t(D11,D12,D13); // Will use SPI1 SDFileSystem s(D11,D12,D13,"sd"); // error() MyDisplay d(D11,D12,D13); // Will never be called |
||
---|---|---|
libraries | ||
travis | ||
workspace_tools | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
MANIFEST.in | ||
README.md | ||
setup.py |
README.md
mbed SDK
The mbed Software Development Kit (SDK) is a C/C++ microcontroller software platform relied upon by tens of thousands of developers to build projects fast.
The SDK is licensed under the permissive Apache 2.0 licence, so you can use it in both commercial and personal projects with confidence.
The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
Documentation
- Tools: how to setup and use the build system.
- mbed library internals
- Adding a new target microcontroller
Supported Microcontrollers and Boards
View all on the mbed Platforms page.
NXP:
- mbed LPC1768 (Cortex-M3)
- u-blox C027 LPC1768 (Cortex-M3)
- mbed LPC11U24 (Cortex-M0)
- EA LPC11U35 (Cortex-M0)
- mbed LPC2368 (ARM7TDMI-S)
- LPC810 (Cortex-M0+)
- LPC812 (Cortex-M0+)
- EA LPC4088 (Cortex-M4)
- LPC4330 (Cortex-M4 + Cortex-M0)
- LPC1347 (Cortex-M3)
- LPC1114 (Cortex-M0)
- LPC11C24 (Cortex-M0)
- LPC1549 (Cortex-M3)
- LPC800-MAX (Cortex-M0+)
- DipCortex-M0 (Cortex-M0)
- DipCortex-M3 (Cortex-M3)
- BlueBoard-LPC11U24 (Cortex-M0)
- LPCCAPPUCCINO (Cortex-M0)
Freescale:
- FRDM-K20D50M (Cortex-M4)
- FRDM-KL05Z (Cortex-M0+)
- FRDM-KL25Z (Cortex-M0+)
- FRDM-KL46Z (Cortex-M0+)
- FRDM-K64F (Cortex-M4)
STMicroelectronics:
- Nucleo-F103RB (Cortex-M3)
- Nucleo-L152RE (Cortex-M3)
- Nucleo-F030R8 (Cortex-M0)
- Nucleo-F401RE (Cortex-M4)
- Nucleo-F302R8 (Cortex-M4)
- STM32F4XX (Cortex-M4F)
- STM32F3XX (Cortex-M4F)
- STM32F0-Discovery (Cortex-M0)
- STM32VL-Discovery (Cortex-M3)
- STM32F3-Discovery (Cortex-M4F)
- STM32F4-Discovery (Cortex-M4F)
Nordic:
- nRF51822-mKIT (Cortex-M0)
Supported Toolchains and IDEs
- GCC ARM: GNU Tools for ARM Embedded Processors
- ARMCC (standard library and MicroLib): uVision
- IAR: IAR Embedded Workbench
- GCC code_red: Red Suite
- GCC CodeSourcery: Sourcery CodeBench
API Documentation
- RTOS API
- TCP/IP Socket API (Transports: Ethernet, WiFi, 3G)
- USB Device API
- USB Host API
- DSP API
- Flash File Systems: SD, USB MSD, semihosted
- Peripheral Drivers API
Community
For discussing the development of the mbed SDK itself (Addition/support of microcontrollers/toolchains, build and test system, Hardware Abstraction Layer API, etc) please join our mbed-devel mailing list.
For every topic regarding the use of the mbed SDK, rather than its development, please post on the mbed.org forum, or the mbed.org Q&A.
For reporting issues in the mbed libraries please open a ticket on the issue tracker of the relevant mbed official library.