726 Commits

Author SHA1 Message Date
Karl Palsson
fb520ff3dc stm32:usart-v2: pull out registers and values
Only pulling out the _common_ stuff.  This is a single step in a long
process of eliminating all the duplication and "same, but different"
implementations that are stalling adding nice clean easy support for
l0/f7/l4.

This _ignores_ all currently conflict register definitions, even if they
"do the same thing" it just pulls up the common stuff.  A subsequent
commit can look at resolving the implementatations to a single version.
2017-10-25 21:19:23 +00:00
Lucas Pickering
668c7c5079 stm32: adc: Fix address offset for ADC_CDR register 2017-10-25 21:16:26 +00:00
Matthias Bock
5fc4f48ae2 stm32: can: Fixed incorrect CAN_FMR_CAN2SB_SHIFT value 2017-10-25 16:59:38 +02:00
Karl Palsson
0663341244 stm32f4: dcmi: doc: group register bit defns
Makes the doxygen much much prettier and easier to follow.
2017-10-23 21:31:19 +00:00
Marek Koza
3dbcd16ced stm32: f4: Add DCMI peripheral register definitions 2017-10-23 21:31:16 +00:00
Karl Palsson
f475d459d3 stm32: hrtim: doc: group all regs and values 2017-10-12 11:30:07 +00:00
Florian Larysch
1bc8b4e719 stm32f3/rcc: add HRTIM RCC bits 2017-10-12 10:24:21 +00:00
Florian Larysch
5a80eb4bee stm32f3: add HRTIM definitions
Add definitions for the High Resolution Timer peripheral (currently only
present on the F334).
2017-10-12 10:24:15 +00:00
Fabián Inostroza
35ed6926a9 stm32f1: can: fix RST_CANx bit definitions
RCC_CANx bits were correct, typos in RST_CANx bits.
2017-10-05 09:29:38 +00:00
Karl Palsson
181ca054d7 stm32l4: add missing flash wait states
Fixes https://github.com/libopencm3/libopencm3/issues/832
2017-10-02 21:59:58 +00:00
Karl Palsson
db7a8d71ca stm32f4: rcc: doxygen updates
Uses doxygen groups instead of just  ------ comments, so they now
automatically get documented online.
2017-09-09 20:35:48 +00:00
Karl Palsson
db5f550611 stm32f4: Add new clock gate enable register for f413
Yet more clock enable bits on new F413/F423.
Sourced from RM490rev5
2017-09-09 19:59:04 +00:00
Jordi Pakey-Rodriguez
26ca4cc88a stm32: timer: Add missing TIM_CCER_CC4NP 2017-08-24 21:44:28 +00:00
vollst-induktion
a42a058966 stm32f1/f4: adc: Fix ADC_SMPRx_SMPy_MSK defines
Referred to obsolete definition names.
2017-08-24 21:34:28 +00:00
Grigory Revzin
b31b3985b7 stm32: can: fixed naming for ABRQ2 2017-08-24 21:32:09 +00:00
Grigory Revzin
5cd4577489 stm32: can: fixed typos in CAN_RFxR_FOVR 2017-08-24 21:32:09 +00:00
Karl Palsson
e11e64330c stm32f0: can: add to build
Added the CAN1 compatibility aliases as has been done for adc and dac to
make code reuse easier.  Only for the magic enums, the raw bit
definitions remain as per the ref mans

Originally suggested as https://github.com/libopencm3/libopencm3/pull/802
2017-07-04 23:24:49 +00:00
Jonathan Halmen
83adad0aed stm32: can: change filter match index to uint8_t
The variable can only be 8bits, and converting pointers resulted in
cases of overwriting nearby variables.
2017-07-04 23:23:29 +00:00
Karl Palsson
2a61740a90 stm32f1: rcc: Fix TIM17/TIM18 enable bits
the RCC_TIM17 and RCC_TIM18 macros used in the "new" style were ok, just
the old style raw bit definitions.

Reported-by: Karl Hammar <karl@aspodata.se>
2017-06-17 21:54:07 +00:00
Fabián Inostroza
98ff5c23aa stm32: can: Add support for getting the message timestamp.
Provide an optional parameter to receive the timestamp in
2017-06-08 23:01:45 +00:00
Fabián Inostroza
fac1013ccb stm32: can: fix timestamp mask and shift amount. 2017-06-08 23:01:45 +00:00
Karl Palsson
bc898d1f92 stm32l0: rcc: Add clock struct setup helper
Based on l1, l4 and friends.
2017-06-08 23:01:45 +00:00
Karl Palsson
ec1d2855b0 stm32l1: rcc: use better naming for flash wait states
More compatible with developments in l0/l4/f7, and just a better choice
of names overall.
2017-06-08 23:01:45 +00:00
Karl Palsson
29c712326f stm32: rcc: extract osc_bypass functions
rcc_osc_bypass_enable and rcc_osc_bypass_disable have been copy/pasted
around for the last time!  There's a compile bit to check for L0/L1, but
otherwise this is just code duplication for no gain.
2017-06-08 23:01:45 +00:00
Karl Palsson
2547bf66d9 stm32l0: flash: use common functionality
Provides all the basic core functionality shared with L1.  No special L0
functionality supported at this point.
2017-06-08 23:01:45 +00:00
Karl Palsson
ce787c0f40 stm32l1: flash: extract common code
Extracted all code that will be common with l0.  Compared with ref mans
for l0 and l4.  No functional change, just moving things getting ready.
2017-06-08 23:01:45 +00:00
Karl Palsson
0f4c032548 trivial: change include guard name to match file
File was renamed to -vX style.
2017-06-08 23:01:45 +00:00
Karl Palsson
5af89ae596 stm32f3: can: use CAN1 compatibility naming
Makes it far easier to write portable code when CAN1 is always
available, not having to decide between CAN and CAN1.
2017-06-08 23:01:45 +00:00
Karl Palsson
ba0c97bf42 stm32f7: pwr: add more doxygen
Seeing as Matthew went to the effort of all the descriptions, it seemed
only reasonable to get them to show up in the generated docs too.
2017-06-08 23:01:45 +00:00
Matthew Lai
17553da946 stm32f7: pwr: added basic support for pwr (VOS and overdrive) 2017-06-08 23:01:45 +00:00
Karl Palsson
6678da39bd stm32: i2c: Support auto speed configuration
For both v1 and v2, support automatic calculation of timing registers
for 100khz and 400khz i2c modes.

Based on work by Chuck in
https://github.com/libopencm3/libopencm3/pull/470 for v1
2017-06-08 23:01:45 +00:00
Karl Palsson
2f4f8ad85b stm32: can: BTR baud rate prescaler is a 10 bit field
Reported on the mailing list, verified in RM0090 and RM008
2017-05-08 10:49:45 +00:00
Matthew Lai
383fafc862 stm32: renamed pwr_common_all to pwr_common_v1, and pwr_common_l01 to pwr_common_v2 2017-03-30 21:48:08 +00:00
Karl Palsson
d1d511c6f4 stm32: rcc: add reset reason group flags.
Originally suggested in https://github.com/libopencm3/libopencm3/pull/399

At least provide macros for each family that allows easy masking of the
full set of reset reason flags.  Trying to provide a function that
provides these in random upper bits seems unclear at best.
2017-03-30 21:48:08 +00:00
Marek Koza
904345eaf1 stm32: l1: Change RI defines to be more readable
Reserved bits are marked explicitly in the comments. ASCR defines
are changed to be consistent with the reference manual. HYSCR,
ASMR, CMR and CICR register defines are rewritten to be more
concise and readable.
2017-03-30 21:48:08 +00:00
Marek Koza
a10bc7071a stm32: l1: Add routing interface register definitions 2017-03-30 21:48:08 +00:00
Jordi Pakey-Rodriguez
90d8bd6753 stm32f234: flash: Add FLASH_ACR_LATENCY_MASK 2017-03-30 21:48:08 +00:00
Jordi Pakey-Rodriguez
6798cee2a5 stm32f2+: flash: Rename FLASH_ACR_XCE -> FLASH_ACR_XCEN
Match the datasheet register names better.

squish into xcev
2017-03-30 21:48:08 +00:00
Karl Palsson
b40c72828d stm32: i2c: provide "transfer" level helper routines
For both v1 and v2, provide routines to help do arbitrary length
write/read transfers.

Tested with multiple byte writes and reads, for both 100khz and 400khz,
with repeated starts and stop/starts.  However, only tested (presently)
with a single i2c target device, a Sensiron SHT21 sensor.  Extended
testing against eeproms and alternative devices would be useful
2017-03-30 21:48:08 +00:00
Karl Palsson
fb3b5e08f3 stm32: i2c-v2: drop overly restrictive helpers.
* didn't follow naming conventions
* overly restricted to single byte register style commands.

Will be replaced by freeform transfer functions
2017-03-30 21:48:08 +00:00
Karl Palsson
1edcc1b7da stm32: i2c-v2: drop overly specific speed helpers
Will be replaced by generic speed helpers.
2017-03-30 21:48:08 +00:00
Karl Palsson
24225816a1 stm32: i2c-v2: simplify boolean functions
No need to check results and return 1 or 0.  The result itself is
suitable for use directly as a boolean, and a boolean is the intended
outcome.
2017-03-30 21:48:08 +00:00
Karl Palsson
0259102560 stm32f0: drop superfluous intermediate speed helpers
If you're interested in slightly underclocking or midrange speeds,
you're into custom environments.  Drop all the "helpers" for these odd
speeds.  This is not the max speed for any existing f0 part.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2017-03-30 21:48:07 +00:00
Sergey Matyukevich
7cacbbfb8d stm32/f0: enable clocking from HSE crystal
The following four new functions enable clocking SoC from HSE crystal:
	rcc_clock_setup_in_hse_8mhz_out_{8,16,32,48}mhz

These functions start HSE as external clock and feed its output to PLL
if higher frequency is needed.

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
Reviewed-by: Karl Palsson <karlp@tweak.net.au>
 -> Dropped 8,16,32Mhz functions as superfluous.
2017-03-30 21:48:07 +00:00
Sergey Matyukevich
1b97ecefff stm32/f0: more clock helper functions
Add two clock helper defines and functions:
- rcc_set_pll_source: select PLL entry clock source
- rcc_set_pllxtpre: HSE divider for PLL input clock

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
2017-03-30 21:48:07 +00:00
Karl Palsson
ca7b27e039 stm32: i2cv2: drop i2c_set_clock_frequency
It's not implemented, and not meaningful for i2c v2 peripheral
2017-03-30 21:48:07 +00:00
Karl Palsson
623fabca5f stm32l0: rcc: add new peripheral enable bits
I2C3, USART4/5, GPIOE
2017-03-30 21:48:07 +00:00
Karl Palsson
b556a72fdb stm32l0: use current RCC bit names
Early revisions of the reference manuals used different names for the
touch sense controller and firewall bits.  These have now been changed
to be more in line with other families, and as these parts and bits were
new in this library, simply move forward to the current naming
convention.
2017-03-30 21:48:07 +00:00
Sergey Matyukevich
59ef83a440 stm32: l0/l4: add i2c support
According to reference manuals both l0 and l4 have "v2" i2c peripheral.
This patch adds i2c support to l0 and l4 using previously unified "v2" i2c
headers and implementation.

No real hardware has been tested so far. Only compilation tests for both
libopencm3 and libopencm3-examples for all stm32 families.

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
2017-03-30 21:48:07 +00:00
Sergey Matyukevich
ef91856ac1 stm32: unify i2c implementations
The f1, f2, f4, l1 chip families have a similar "v1" i2c peripheral on board.
More recent f0, f3, l0, l3 chip families share another "v2" version  of i2c.

This patch unifies headers and implementation for two types of i2c peripherals:

- rename: i2c_common_all.[ch] to i2c_common_v1.[ch]
- remove i2c_common_f24.h: extra I2C blocks are defined in specific headers
- use f3 i2c code as a basis for common "v2" i2c implementation
- add f0 i2c support: use "v2" i2c implementation

Tests:
- tested on a custom f0 board
- compile-tested both libopencm3 and libopencm3-examples for all stm32

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
2017-03-30 21:48:07 +00:00