Commit Graph

10 Commits (3931874fb50fe2c9cb836b51fb0f83516d2cd890)

Author SHA1 Message Date
Laurent MEUNIER 57e0225248 STM32: gpio: factorize gpio_api.c and gpio_object.h
Let's make the code more common for gpios.

The only difference between STM32 families is that BRR register may
not be available. In case BRR is not available, we use the 16 left bits
of BSRR instead. We could always use BSRR, but BRR saves one left-shift
operation, so let's use it when available.

By default we will consider using BRR, except for platforms that define
GPIO_IP_WITHOUT_BRR.
2017-01-12 19:24:32 +01:00
Laurent MEUNIER 3fad50287c [STM32] Make most of the I2C code into a common file
Since most of the code in i2c_api.c is now relying on STM32 HAL, there
is now a possibility to make a common usage of this code accross families.

The IP version definition is introduced per family, to allow a switch of
functionnalities, especially the frequency management which differs.
BTw, we fix the F0 frequency settings at the same time.

F1 is managed for now as an exception as the HAL API for sequential transmit
/receive is not yet available (coming soon)
2016-11-30 08:23:13 +01:00
Laurent MEUNIER 7cdaba8474 [stm32] remove unused module member in spi_s struct 2016-11-18 09:59:53 +01:00
Laurent MEUNIER e293e07749 stm32f4 make comment more explicit
As reported during review, this was not understandable as it is.
the get_i2c_obj allows to get a pointer to i2c_s struct from the
handle pointer. This therefore makes a hard-coded assumption
about the struct itself
2016-11-10 17:30:04 +01:00
Laurent MEUNIER a50dc77c60 STM32: I2C: Change the master sync implementation to use ITs
With this new implementation, as in slave implementaiton, we use the
interrupts instead of accessing to registers continuously.

This has 2 main advantages:
- this shall improve performances overall and allows for sleep
time in the future
- this also removes some direct registers access from this
layer of code and makes it more generic among families
2016-11-09 18:02:59 +01:00
Laurent MEUNIER ec95aa5701 STM32: I2C: Reset I2C in case of errors to recover
This is to avoid an IP / bus deadlock.

This requires to store scl and sda in order to call the init function.
2016-11-09 18:02:57 +01:00
Laurent MEUNIER 79504a6a38 STM32: I2C: Change the slave API implementation to use ITs
With this new implementation, the slave use the Interrupt
to be notified of a request from master, instead of
accessing to registers continuously.

This has 2 main advantages:
- this shall improve performances overall and allows for sleep
time in the future
- this also removes some direct registers access from this
layer of code and makes it more generic among families
2016-11-09 17:22:28 +01:00
Laurent MEUNIER c2060e34a3 STM32: I2C: Add-up irq handlers
With this commit we define I2C irq handlers that can be used by the driver
in sync mode. This also provides a mecanism for enabling and/or disabling
these handlers

Those handlers will be superseded by MBED ones in case of async mode usage.
2016-11-09 17:22:28 +01:00
Laurent MEUNIER 490437ae29 STM32: I2C: Move up get_i2c_obj
so that it can be used as well in sync mode
2016-11-09 17:22:28 +01:00
Christopher Haster 0bad622a16 restructure - Moved targets out to top level
hal/targets -> targets
hal/targets.json -> targets/targets.json
2016-09-30 19:18:09 -05:00