USB device support for Wonder, Leopard and Happy Gecko. See
details on configuration etc on the previous commit.
Known issue: USBAudio does not work reliably on Happy Gecko.
** Overview
This commit provides USB device-mode drivers for Silicon Labs chips.
The code is based on the SiLabs USB driver that is part of the
Simplicity dev environment.
Because Mbed USBDevice class wants to control the USB transactions
itself, large parts of the higher level code originally present in the
driver have been stripped out. An attempt has been made to keep Mbed
code separate enough that patches can be applied with minor effort, if
needed.
** Use of dynamic memory
Due to requirements imposed by the USB hardware, the driver needs read
and write buffers for every enabled endpoint. Since information on
what EPs will be used is only available during runtime, dynamic memory
allocation is used to minimize memory usage.
If needed, dynamic memory use can be disabled via a flag in
usbconfig.h. In this case, please read the documentation to see what
limitations this imposes. Static memory usage can also be reduced by
limiting the maximum number of active endpoints - see configuration in
usbconfig.h and USBEndpoints_EFM32.h.
** Power management
Driver supports the new SiLabs functionality in Mbed sleep(). Normal
sleep (EM1) is always available, and deep sleep (EM2) is available
when USB is either disconnected or suspended. How and when different
sleep modes are made possible can be configured in usbconfig.h
** Supported hardware
Current release officially supports, and has only been tested on Giant
Gecko. Upcoming releases will add support for other SiLabs platforms
on Mbed.
Line 244 changed PclkFreq*2 to PcklFreq
Line 246 changed PclkFreq to PclkFreq*2
This is proposed as the current pwmout_api.c gives the wrong period/frequency when using e.g."mypwm.period_ms(1);"
For PWM1 1ms gave 500Hz and PWM2,3 and 4 gave 2KHz
Applied to source as above and re-compiled this gave 1KHz outputs for all PWM's selected
Tried on NUCLEO STM32F401RE will effect other NUCLEO-STM32F4 as above
HAL Clocks are as follows for the F401RE Board: PCLK1=42000000 PCLK2=84000000 HCLK=84000000
Kind Regards
Martin
In a previous commit, the content of twi_master.h did not allow the invocation
of the c functions specified by the file from a cpp context. This commit wraps
the contents of the header file with the appropriate ifdefs.
Rather than indefinitely adding platforms to a #define list that use
the internal RC oscillator instead of an external crystal, let platforms
define this and the 'core code' can be platform agnostic.
Note, that this also allows people to use this symbol in libraries.
There's one notable example in the BLE_API that can now be refactored to
the same method, hopefully saving someone some unpleasant debugging
when their platform doesn't work because of a missing platform dependent
define in the high level API.
Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
After this change it will no longer be necessary to list all
the platforms that require the LFCKL to be the internal RC oscillator,
instead we specify it as a property of the platform.
Applications and libraries can use the TARGET_NRF_LFCLK_RC symbol to
filter for platforms that don't have an external crystal.
Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
This commit adds the ability for a compile flag to be set from targets.py
which changes the soft device to s110.
The compile flag is: MCU_NRF51_16K_S110. In order to avoid duplication
of the startup file, for the 16K parts we introduce an S110 or S130
scatter file. This means all 16K platforms must define
MCU_NRF51_16K
and ONE of
MCU_NRF51_16K_S110 or MCU_NRF51_16K_S130
Based on an earlier commit by Mihail but modified to avoid copy/paste
of the startup code for S110/S130
Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
This adds the BBC micro:bit platform, based on NRF51822
Initially, add the platform to use whatever version of softdevice is the
default for the NRF51822-based platforms.
Originally written by James, modified for new target inheritance by
Jonathan Austin:
Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
This commit is based on Nordic's fix for an abnormality in some releases
of the nrf51822 silicon.
Without this fix, the I2C bus locks up and doesn't reset properly. The
fix resets the TWI master on powerup.
For more information see
https://www.nordicsemi.com/eng/nordic/download_resource/24634/6/47696154
Nordic Product Anomaly ID 56.
Unlike other Nordic platforms, the wallbot doesn't use numbered I2C
ports. This makes it difficult to refer to a platforms's I2C pins from
common code.
This fix leaves the original wallbot definitions, but adds the more
'standard' ones too.
Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
* add class to support both versions - 16K and 32K
* add class to support 2 modes - BOOT and (F)OTA
* change all classes to use the corresponding parent class