Commit Graph

2996 Commits

Author SHA1 Message Date
Rohit Nimkar
f3049c6699 doc: stm32: rcc: improve intellisense
Removed newline between the comment block and function definition
It enables vscode intellisense to display documentation about functions

Reviewed-by: Karl Palsson <karlp@tweak.au>
2023-02-03 00:15:12 +00:00
Harry Geyer
4d7a2ca271 stm32: When setting baudrate of a USART, first get the clock frequency for that USART.
Now that all families have support for calculating the clock of the
uart, use that layer.  Slightly slower for "old" families, but the only
way to be correct for newer families.

Reviewed-by: Karl Palsson <karlp@tweak.au>
2023-02-03 00:02:59 +00:00
Karl Palsson
e643f66342 stm32g4:rcc: add uart peripheral clock source helpers
Required so that the common uart infrastructure can be updated. This was
the last family to receive this implementation.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-03 00:02:59 +00:00
Karl Palsson
e9426db222 stm32l4: rcc: use SYSCLK consistently with other families
Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-02 23:58:02 +00:00
Karl Palsson
0878a04696 stm32g4: rcc: use SYSCLK consistently with other families
Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-02 23:55:27 +00:00
Karl Palsson
f0575c3560 stm32g4: rcc: use datasheet naming for CCIPR fields
Follow HACKING specifications, be consistent with all other parts.
Yes, the SEL suffix is kinda superfluous, but it's _consistent_ which is
why we do it.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-02 23:51:13 +00:00
Karl Palsson
66e2cc3ea8 doc: stm32f0: flash: more variants than F05x these days.
Don't be so restrictive with the names. Use the standard F0xx style.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-02 23:17:18 +00:00
Karl Palsson
130075a12d doc: stm32f0: comparator: move to "peripheral api" style
The COMP peripheral was left by it's own.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-02 23:16:31 +00:00
Karl Palsson
b8bdc87d2d trivial: stm32f0:crc fix typo in doxygen
Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-02 23:15:54 +00:00
Karl Palsson
e54650fba4 stm32f0: adc: external trigger selection to unshifted
Cleanup one function at a time.  Use the correct doxygen references, use
unshifted forms in user facing apis.  Yes, only the trigger at the
moment, as the polarity is shared.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-02-02 22:47:44 +00:00
neoxic
69e4ade399 stm32:f0/g0/l0: adc: Add EXTSEL defines
Add definitions for all the specific options, as is done for other
families.

Reviewed-by: Karl Palsson <karlp@tweak.au>
(Added extra g0 definitions that were missed)
2023-02-02 22:13:05 +00:00
neoxic
7bd0f4097b stm32g0:adc: drop non-existant ADC_OR register
Reviewed-by: Karl Palsson <karlp@tweak.au>
2023-02-02 21:43:43 +00:00
neoxic
d262e70fc3 stm32g4/g0: adc: fix clock prescalers
CCR register definitions were completely wrong, both decimal/hex mixups,
and straightup transcriptions from the reference manual errors.

Unify the styles for both g0 and g4, using the same (duplicated)
function for both implmentations.

Reviewed-by: Karl Palsson <karlp@tweak.au>
2023-02-01 21:40:56 +00:00
Karl Palsson
88f4d111ba README: update toolchain recommendations
This hadn't been touched in a while, and we now need gcc6+

Fixes: https://github.com/libopencm3/libopencm3/issues/1459
Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-01-24 21:25:40 +00:00
Karl Palsson
88e91c9a7c stm32:rcc: update _get_clock (uart/i2c) to handle all cases
Adds handling for missing cases.  While i2c only has 3 cases, uarts have
all 4, so make sure they're handled properly.
Removes duplicated/redundant definitions.
Adds doxygen wrappers, even if only for internal use.

Fixes: e41ac6ea71 stm32: added peripheral clock get helpers for all stm32
Signed-of-by: Karl Palsson <karlp@tweak.au>
2023-01-13 02:15:41 +00:00
Karl Palsson
df654d7f28 stm32: spi: drop spi_reset()
It's simply a wrapper around rcc_reset_pulse already.
Just drop it. See 034dbf20ff for the same deletion for timers.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-01-13 02:15:41 +00:00
Karl Palsson
b3bdf025d7 stm32: i2c: drop i2c_reset()
It's simply a wrapper around rcc_reset_pulse already.
Just drop it. See 034dbf20ff for the same deletion for timers.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-01-13 02:15:41 +00:00
Karl Palsson
2c180d8431 stm32g0: rcc: add missing periphs
A bunch of periphs on newer parts weren't defined.  Add their
enable/reset bit definitions so they can be used.

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-01-13 02:15:41 +00:00
Karl Palsson
5796f41caa [BREAKING] stm32g0: add/rename missing periphs/irqs
Updated to RM0444_rev5

Breaking: renames some irqs to be more specific and better match with
refman.  We're still in the "between" tags, so break all the toys!

Signed-off-by: Karl Palsson <karlp@tweak.au>
2023-01-13 02:15:41 +00:00
Sebastien Lorquet
84a59d925d devices.data: stm32h7: fix fpu and mem offsets
Filed via: https://github.com/libopencm3/libopencm3/pull/1451

We've decided that the 1 based numbering is saner, and should be the new
norm going forwards, even though SAM3 and LPC both use zero based
numbering.

Reviewed-by: Karl Palsson <karlp@tweak.au>
2023-01-05 12:13:53 +00:00
Karl Palsson
de96f0f4aa stm32g0: adc: fix setting sampling time on all channels
Fixes: https://github.com/libopencm3/libopencm3/issues/1448
Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2022-11-29 14:10:52 +00:00
Karl Palsson
7c09d0d14c stm32f3: enable RTC
Fixes: https://github.com/libopencm3/libopencm3/issues/1446
Fixes: 18f4d7c1b7 stm32f3: rtc: include correct shared header

No testing on real hardware, but the docs imply that this should have
always had the "basic" rtc-v2 peripheral.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2022-11-17 21:15:47 +00:00
Karl Palsson
e1ec3e4e18 stm32: rcc: clarify flash_prefetch_enable documentation
It's not globally enabled by default, and it has consumption impacts as
well.  Reported on IRC.
2022-11-07 14:38:19 +00:00
Karl Palsson
0b414ff649 stm32g0: adc: only clear desired flags in ADC_ISR
Verified against RM0444rev5.

Fixes: https://github.com/libopencm3/libopencm3/issues/1443

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2022-10-27 21:56:50 +00:00
Karl Palsson
5db7e87e6e doxygen: stm32:cordic: add a title 2022-10-27 21:37:00 +00:00
Oskar
d8d33ca36d stm32: cordic: add new peripheral
Review-URL: https://github.com/libopencm3/libopencm3/pull/1418
Reviewed-by: Karl Palsson <karlp@tweak.net.au>

Edits: removed non-existant u5 code, squished to a single commit,
whitespace cleanup.
2022-10-27 21:37:00 +00:00
Karl Palsson
5980c58f9b stm32g4: syscfg: fix doxygen
Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2022-09-19 12:59:05 +00:00
andrej
2f29614133 stm32: Support CRC, SYSCFG and USART on G4 2022-09-19 13:43:46 +02:00
neoxic
0a132c0f6c stm32: dmamux: Fix tabs as tab size 8 2022-09-16 10:24:45 +00:00
neoxic
b37811915e stm32:dmamux: fix individual DMAMUX register aliases DMAMUXn_*
Argument 'dmamux_base' is set by an alias and hence is always unused.
2022-09-15 21:36:38 -07:00
hepoun
c82c7406aa stm32:dmamux: Fix request generator reset
There was reset of DMAMUX request multiplexer channel instead of the DMAMUX request generator channel.
2022-09-08 11:42:52 +00:00
Karl Palsson
44e142d4f9 cm3: scb: C11 keyword compliance
Avoid use of the gnu specific "asm" keyword, and use the __asm__
keyword, as used everywhere else in the library.  This fixes compilation
in C11, and unifies all uses of asm literals in the codebase.

Reported-by: @dragonmux
Fixes: https://github.com/libopencm3/libopencm3/pull/1425

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2022-07-05 16:55:11 +00:00
Oskar
4675227783 stm32g4: rng: enable common code support
Also fixes an error in the memory map exposed by enabling this.

Reviewed-by: Karl Palsson <karlp@tweak.net.au>
2022-06-03 21:02:19 +00:00
Oskar
1e71f18be2 stm32g4: i2c: enable common peripheral code. 2022-06-03 20:59:34 +00:00
Vlad Logyin
3122c0b33f stm32l4: rcc: Implement PLL helper as seen in other MCU families
Reviewed-by: Karl Palsson <karlp@tweak.net.au>
2022-06-03 20:53:15 +00:00
Stefan Tauner
757a0a14eb doc: cm3: mpu: document defines of individual register fields 2022-06-03 20:34:59 +00:00
Karl Palsson
e9d87a9cb7 stm32: adc-v2-multi: fix JSQR
Fixes: https://github.com/libopencm3/libopencm3/issues/1412

Verified against RM0394 (L4), RM0440 (G4) and RM0316 (F3)

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2022-05-17 11:06:53 +00:00
Stéphane Chevigny
203202e939 Add nrf51822 device in devices.data 2022-05-04 18:56:40 -04:00
me@me.net
d8aa2f17b0 stm32: timer: Add API to set external clock mode 2 2022-04-27 13:11:58 +00:00
Karl Palsson
664701d7a7 gadget-zero: ti: use correct part name
Fixes build breakage from using legacy board name instead of part name.
2022-04-13 20:31:42 +00:00
Karl Palsson
9209bde784 devices.data: drop invalid TI board name part.
As pointed out, this is not an actual part number, but a board id.
2022-04-13 20:24:18 +00:00
Karl Palsson
c1e4107007 lm4f: fix more typos 2022-04-13 20:23:41 +00:00
Stefan Tauner
5bcf2a0c35 stm32l4: fix various problems with rcc_get* functions
- rcc_get_i2c_clk_freq: Add support by taking RCC_CCIPR2 into account for I2C4.
 - rcc_get_timer_clk_freq: Add support for LP timers
 - rcc_get_usart_clk_freq: Fix APB freq used for LPUART1 and UART1, respectively.
2022-04-13 20:22:47 +00:00
Stefan Tauner
a6927e410c treewide: Fix some typos 2022-04-13 20:22:24 +00:00
Stefan Tauner
93e0ccaf26 devices.data: add TI Cortex M4 chips except MSP432
Based on the following chip selection guides:
 - https://www.ti.com/lit/spmt285 (TM4C)
 - https://www.ti.com/lit/spmt273 (LM4F)
2022-04-13 20:22:24 +00:00
Stefan Tauner
778318c307 ld: add symbols for starts and ends of all regions
This makes the boundaries accessible from within the code,
e.g., to set up the MPU.
2022-04-07 02:35:19 +02:00
Stefan Tauner
20c0cfb650 ld: fix typo in ram5 definition 2022-04-07 02:35:19 +02:00
Eduard Drusa
66bf499e1b NRF5x: I2C EasyDMA support for NRF5x, extended API
This commit adds support for NRF52 TWI Master mode and slightly extends
existing I2C API. This is a breaking change, while mode selection needs to be
done during enabling I2C. There is one additional breaking change done because:
1) Unicore MX API design was PITA for writes
2) It is incompatible with EasyDMA

I strongly apologize to all two users who might be affected by this change.
2022-04-05 15:40:44 +00:00
Eduard Drusa
458766398f NRF5x: Enable generation of Doxygen docs
Add NRF51 and NRF52 into list of targets Doxygen docs are generated for.
Fixes missing documentation.
2022-03-31 11:24:59 +02:00
Karl Palsson
c78007338e stm32l: lptimer: stylecheck 2022-03-08 20:57:20 +00:00