171 Commits

Author SHA1 Message Date
MrKevinWeiss
f3b2a62c67 cpu/stm_common: Refactor and cleanup i2c_1
Refactor to use common read_regs.
Add error reporting and handling for unsupported low level commands.
Document hardware constraints.
2018-12-20 18:05:11 +01:00
Alexandre Abadie
ab061c4ae2
Merge pull request #10608 from MrKevinWeiss/pr/fix/stmi2c2
cpu/stm_common: Refactor and fix implementation for i2c_2
2018-12-20 13:51:39 +01:00
MrKevinWeiss
a2e059d18a cpu/stm_common: Refactor and fix implementation for i2c_2
Refactors i2c_2 to match the structure of i2c_1 better.
Corrects functionality issues.
Allows the common implementation of read_regs and write_regs.
Documents constraints of hardware.
Matches error messages with API.
2018-12-20 12:01:06 +01:00
Leandro Lanzieri
b32da1b13e
Merge pull request #10615 from MrKevinWeiss/pr/debug/init
cpu/stm32_common/uart: Prevent uart from sending if not initialized
2018-12-19 12:14:00 +01:00
MrKevinWeiss
96f8438ea2 cpu/stm32_common/uart: Prevent uart from sending if not initialized
Due to the stdio getting called after periph_init the uart may send before initialized.
This adds a simple check so the uart does not get into a locked-up state.
2018-12-18 10:16:50 +01:00
Martine Lenders
a3864aa103
Merge pull request #9158 from aabadie/pr/periph/stm32_lpuart
cpu/stm32-common: add support for lpuart
2018-12-17 12:16:27 +01:00
MrKevinWeiss
d7eb070eb4 cpu/stm32f1: Add remap support for stm32f1 cpus and boards
This commit fixes configuration problems when trying to use i2c pins that need to be remapped.
All B8 and B9 pins for STM32F1 need to be remapped, so a check is done if the remappable pins are selected.
2018-12-14 09:16:37 +01:00
Alexandre Abadie
133968ce8a cpu/stm32_common: add support for lpuart 2018-12-13 12:39:00 +01:00
MrKevinWeiss
3e1fd9f494 cpu/stm32_common/i2c: Fix error handling in i2c_1.c
Errors flags could not clear making the i2c unusable after error.
This fix removes the error check in start so the error flags can clear and does proper checking for status bits before _bus_check.
2018-10-26 09:56:35 +02:00
Alexandre Abadie
e9a6ebc409 cpu: drivers/eeprom: refactor periph_eeprom implementation 2018-10-16 10:39:10 +02:00
Peter Kietzmann
b2c791c6cb
Merge pull request #10135 from miri64/cpu/enh/periph-gpio-irq-closing-endif
cpu, periph_gpio: mark closing #endif for MODULE_PERIPH_GPIO_IRQ
2018-10-15 13:41:02 +02:00
cladmi
e0a5860bb7
cpu/stm32_common: remove inadapted periph_flash_common
The `periph_flash_common` feature was only defined here to trigger
inclusion of a source file with common functions.
It even only defines private symbols `_lock` and `_unlock` so no reason
to expose it to the build system.
And in practice, all stm cpus providing `periph_flashpage` or
`periph_eeprom` were required to provide `periph_flash_common` to allow
including it.

The previous implementation was only parsing in the modules were in
`FEATURES_REQUIRED` wich did not take cases of `FEATURES_OPTIONAL` into
account.
And also, in the same time, as the dependencies was declared in
`Makefile.include` it was processed before `Makefile.dep` so never handled
cases where a module could depend on `periph_flashpage` or
`periph_eeprom` feature.

It is replaced by selecting the common source file when module using it
are included.

The now useless feature `periph_flash_common` is removed from
`FEATURES_PROVIDED`.
2018-10-11 15:20:44 +02:00
cladmi
d8080a66e4
cpu/stm32_common: Do not use USEMODULE to select i2c implem
`cpu/stm32_common/Makefile.dep` was never included by the global
`Makefile.dep`, so declaring this `USEMODULE +=` here was never shown to
the build system and never exported as `MODULE_PERIPH_I2C_X` variables.

In fact, `USEMODULE` was only used to trigger the `periph.mk`/`SUBMODULES`
mechanism to add matching source files names to `SRC` and so select
the implementation for each CPU type.

It is replaced by just explicitly selecting the right source file.
2018-10-11 15:20:25 +02:00
Hauke Petersen
5f50db07e8 misc: use correct hauke.petersen@fu email address 2018-10-11 12:20:37 +02:00
Martine Lenders
92c5a7824a stm32_common: mark closing #endif for MODULE_PERIPH_GPIO_IRQ 2018-10-09 15:11:00 +02:00
Hauke Petersen
a956d71a67 cpu/stm32_common/gpio: use gpio_irq feature 2018-09-21 08:19:51 +02:00
Martine Lenders
9478274bd9 stm32_common/eeprom: fix DEBUG formatting
This fixes compilation for `periph_eeprom` with LLVM/clang and also is
more in accordance with our [coding conventions].

[coding conventions]: https://github.com/RIOT-OS/RIOT/wiki/Coding-conventions#-wformat
2018-08-14 14:56:44 +02:00
Alexandre Abadie
a008b983b3 cpu/stm32_common: add flashpage support for stm32l4 2018-08-06 12:33:03 +02:00
Martine Lenders
6f78a7f331 stm32_common: i2c_2: fix for -Wunused-function
This came up when compiling an application for a STM32-based board
with LLVM/clang. The function is not used if I²C is not provided.
2018-08-03 16:12:52 +02:00
Alexandre Abadie
5f1d5e0d83 cpu/stm32_common: various improvements in i2c_1 driver
- dont send stop if bus is busy and before any action is done on bus
- and bus check that looks for bus error, arbitration and nack events
- check for ACK (TXIS) before writing bytes on bus and not between each write
2018-07-25 12:01:39 +02:00
MrKevinWeiss
e8c56ceadc cpu/stm32_common/i2c: Fix return error code 2018-07-25 12:01:39 +02:00
MrKevinWeiss
6016266c77 cpu/stm_common/i2c: Fix error code 2018-07-25 12:01:38 +02:00
MrKevinWeiss
6a3f9f35dc cpu/stm32_common/i2c: Fix extra clear_addr 2018-07-25 12:01:38 +02:00
MrKevinWeiss
6f6c3d7926 cpu/stm_common/i2c: style fix 2018-07-25 12:01:38 +02:00
MrKevinWeiss
6c4f144e25 cpu/stm32_common/i2c: fix addr nack and flags 2018-07-25 12:01:38 +02:00
Alexandre Abadie
99b3bb88bd cpu/stm32_common: update return values to error codes 2018-07-25 12:01:37 +02:00
Vincent Dupont
c0c9ea034c cpu/stm32_common: add timeouts in stm32f4 i2c driver 2018-07-25 12:01:37 +02:00
Alexandre Abadie
06e11c5586 cpu/stm32_common: adapt i2c driver to stm32f1 2018-07-25 12:01:37 +02:00
Alexandre Abadie
9166fb27fa cpu/stm32_common: split common i2c periph in 2
- i2c_1 is built for f0, f3, f7, l0 and l4
- i2c_2 is built for f4
2018-07-25 12:01:36 +02:00
Alexandre Abadie
ebc17acb59 cpu/stm32{f0,f3,f7,l0,l4}: unify i2c driver and use new API 2018-07-25 12:01:35 +02:00
Vincent Dupont
bdac278c18 cpu/stm32_common/hwrng: use CPU_LINE for for stm32f410-specific code 2018-07-09 11:52:05 +02:00
Alexandre Abadie
600727453b cpu/stm32_common/flashpage: clear EOP bit
This was taken from STM32 Cube generated code
2018-05-30 14:14:29 +02:00
Alexandre Abadie
f7b61b6ac1 cpu/stm32_common/flashpage: force waiting for pending operations
Moving the while loop in a separate function ensures no ordering
    optimizations is applied silently by gcc.
    This commit fixes the flashpage not working on iotlab-m3.
2018-05-30 14:12:24 +02:00
Alexandre Abadie
c73ec5c00f cpu/stm32_common/periph: don't lock if flash is already locked 2018-05-30 14:09:17 +02:00
Alexandre Abadie
cb089a2f74 cpu/stm32_common/periph: cleanup flashpage
- improve debug messages
- fix missing space before comment
- use a comment instead of debug message (the same message is displayed by the function called after)
2018-05-30 14:09:17 +02:00
Alexandre Abadie
89e0389f27 cpu/stm32_common: implement eeprom access functions 2018-05-24 14:07:55 +02:00
Vincent Dupont
8fc63738f6 cpu/stm32_common: adapt UART driver to use DMA 2018-05-23 11:09:46 +02:00
Vincent Dupont
6551d896be cpu/stm32_common: adapt SPI driver to use DMA 2018-05-23 11:09:46 +02:00
Vincent Dupont
d399518ac6 cpu/stm32_common: add DMA implementation for F2/F4/F7 2018-05-23 11:09:46 +02:00
Vincent Dupont
549bf0ef78 cpu/stm32: use const pointer in flashpage 2018-03-14 16:28:33 +01:00
Alexandre Abadie
67190a31ef cpu/stm32_common: unify flashpage support 2018-03-13 16:30:04 +01:00
Aurelien Fillau
0368239a63 cpu/stm32l0: power management updated
Now, MCU is able to go in stop mode if necessary when
periph_pm feature is activated.
Regarding LPSDSR bit that deactivates or not regulator in stop
mode, it is up to the user to set/clear this bit. In order
to save power, voltage regulator can be set in low power state
during stop mode but it increases wakeup time.

Signed-off-by: Aurelien Fillau <aurelien.fillau@gmail.com>
2018-03-11 11:01:25 +01:00
7f150d6041
Merge pull request #7787 from OTAkeys/pr/stm32_pm_periph
cpu/stm32: add pm support in uart, spi and i2c (f4)
2018-03-06 16:34:44 +02:00
Hauke Petersen
e78b055787
Merge pull request #8556 from kaspar030/stm32_gpio_read
cpu: stm32_common: always do gpio_read() from input register
2018-03-06 15:30:01 +01:00
Vincent Dupont
34e8609f2c cpu/stm32_common: add pm support in spi driver 2018-03-06 15:13:01 +01:00
Vincent Dupont
1aee2f1f14 cpu/stm32_common: add pm support in uart driver 2018-03-06 15:13:00 +01:00
Vincent Dupont
c01e8629ec cpu/stm32_common: add PM modes 2018-03-06 15:12:58 +01:00
Gilles DOFFE
bee493ac71 cpu/stm32_common: add qdec implementation
* Add support for the STM32 encoder interface
* The STM32 only supports X2 and X4 modes.
* Enable interrupt handler on counter overflow
* Add simple test code for QDEC based on nucleo-f401 board

Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
2018-02-23 23:17:26 +01:00
83bff5c643 cpu: stm32_common: always do gpio_read() from input register 2018-02-13 21:51:45 +01:00
Vincent Dupont
972eeefe6e stm32_common/rtt: add support for stm32f4 2018-02-08 17:39:39 +01:00