This commit adds I2C timing value automatic calculation algorithm
for all supported families added. This patch improves I2C timing calculation
according to I2C input clock and I2C bus speed.
This commit also allows user to change the system clock and I2C input clock.
Related issue: #12907
Pull request type:
[x] Patch update (Bug fix / Target update / Docs update / Test update / Refactor)
[] Feature update (New feature / Functionality change / New API)
[] Major update (Breaking change E.g. Return code change / API behaviour change)
Test results:
[] No Tests required for this change (E.g docs only update)
[x] Covered by existing mbed-os tests (Greentea or Unittest)
[] Tests / results supplied as part of this PR
Signed-off-by: Affrin Pinhero <affrin.pinhero@hcl.com>
dac_write (used by AnalogOut.write) calls HAL_DAC_Start
every time. It is required to call HAL_DAC_Start only once.
HAL_DAC_Start uses internally HAL_Delay(1) making AnalogOut
not suitable for use in high speed application.
This change removes call to HAL_DAC_Start in dac_write and
moves it to analogout_init.
Refactor all ST targets to be CMake buildsystem targets. This removes
the need for checking MBED_TARGET_LABELS repeatedly and allows us to be
more flexible in the way we include MBED_TARGET source in the build.
A side effect of this is it will allow us to support custom targets
without breaking the build for 'standard' targets, as we use CMake's
standard mechanism for adding build rules to the build system, rather
than implementing our own layer of logic to exclude files not needed for
the target being built. Using this approach, if an MBED_TARGET is not
linked to using `target_link_libraries` its source files will not be
added to the build. This means custom target source can be added to the
user's application CMakeLists.txt without polluting the build system
when trying to compile for a standard MBED_TARGET.
they have two RAMs at two distinct locations:
RAM1 (address: MBED_RAM_START, size: MBED_RAM_SIZE):
* stack
* heap
* some part of static memory
RAM2 (address: MBED_IRAM2_START, size: MBED_IRAM2_SIZE):
* remaining part of static memory starting at MBED_IRAM2_START
* crash report
* vector
The heap size was incorrectly calculated.
This fixes it by subtracting the Stack size, any memory chunks allocated
before the start of the application (for vectors and/or crash report), and
finally the size of the application from the total RAM size.
The clock source selection of LPUART depends on System clocks but also on
the serial baudrate. There is a specific computation done in serial driver
targets/target_STM/serial_api.c
At first start-up the LPUART1 clock selected in SetSysClock was anyway
overridden by the serial driver, so this was of no effect. But in case
of deep sleep SetSysClock is called again, while the driver isn't, so
SetSyClock was corrupting the serial clock configuration.
So let's remove these few lines of code which are causing trouble.
For targets L496 and L5.
Taking into account device TRNG in L5 configuration