663 Commits

Author SHA1 Message Date
Oliver Meier
a2fe6c49a8 [cm3/sync] Add mutex_trylock()
Allows non-blocking use in user code.
2014-12-11 09:58:34 +00:00
Chuck McManis
99f83eedcd stm32/f0: rcc.c Use common version instead of duplicate code.
Pulls out duplicate calls from f0/rcc.c and uses the common version which
also means that f0 can use rcc_peripheral_enable() now which is in common
but not the old rcc versions.
2014-12-03 11:14:26 +00:00
Karl Palsson
f51698fff4 stm32:l0: RCC: add osc_on/osc_off helpers
These are the routines that have custom switch cases, and aren't easy targets
for pulling out.
2014-12-03 11:13:39 +00:00
Karl Palsson
378069091a stm32:l0: Add RCC register definitions
Tested with a miniblink example on the l053 discovery board.

Only register definitions at this stage, no helpers.
Register definitions from RM0367r2, hopefully the biggest
superset of L0 parts.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2014-12-03 11:13:39 +00:00
Karl Palsson
3a44b1311b stm32: f1: Additional GPIO Remappings for F100
F100 has more remap options than F10x, particularly on the High Density
devices.

Fixes github issue #365

Signed-off-by: Karl Palsson <karlp@tweak.net.au>
2014-11-21 10:38:03 +00:00
Karl Palsson
fb95997b3b stm32f1: rcc: timer 15,16,27 rcc bits missing for old style
The bits definitions for direct manipulation were missing, and should be
present for completeness.  However, this only affects the legacy (error prone)
API, replaced some time ago.

old and error prone: (stop using code like this)
    rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_TIM16EN);
    rcc_peripheral_reset(&RCC_APB2RSTR, RCC_APB2RSTR_TIM16RST);

new:
    rcc_periph_clock_enable(RCC_TIM16);
    rcc_periph_reset_{pulse,hold,release}(RCC_TIM16);

Fixes github issue #361
2014-11-14 22:32:49 +00:00
Silvio Gissi
1420be5577 lpc17xx: power: basic peripheral power functions and defns 2014-10-27 22:05:36 +00:00
Silvio Gissi
ff8e2743e8 lpc17xx: clock: Add basic clock control definitions 2014-10-27 22:05:30 +00:00
Silvio Gissi
91dca33789 lpc17xx: memorymap: Add APB1 peripherals 2014-10-27 22:05:23 +00:00
Silvio Gissi
f44a8cf696 lpc17xx: memorymap: Add GPIO block at correct location 2014-10-27 22:05:16 +00:00
Silvio Gissi
fe52894cf4 lpc17xx: memorymap: Fix AHB address and add peripherals 2014-10-27 22:05:08 +00:00
Frantisek Burian
eee5a45019 [stm32l0] Integrate the L0 architecture to the doxygen documentation
Conflicts:
	doc/Makefile
2014-10-15 19:33:20 +02:00
Frantisek Burian
f9152eb00a [stm32l0] Initial support for STM32L0 architecture, Add GPIO peripheral 2014-10-15 19:31:41 +02:00
Stefan Agner
7cef59a83f vf6xx: add I/O mux controller
Add I/O mux controller which is required to mux pins according to
their used function. For all pads, the alternative function 0 is
GPIO. For different pin mux function refer to the reference manual.
2014-10-15 19:31:09 +02:00
Stefan Agner
2e1cbcae22 vf6xx: initial GPIO support
This adds GPIO module support. GPIO can be controlled using the GPIO
number as stated in the reference manual, similar to Linux. Also
32-bit access to whole ports is possible. Reading a GPIO is possible
without muxing the pad as GPIO, however writing a GPIO needs the pad
to be muxed as GPIO.
2014-10-15 19:31:09 +02:00
Stefan Agner
a1d456521d vf6xx: add UART support
This adds UART support for Vybrid VF6xx. Baud rate is calculated
from IPG clock, which need to be initialized by using the
ccm_calculate_clocks functions. Also clock need to be gated using
the ccm_clock_gate_enable function. Tested with an unitialized
UART with a baud rate of 115200.
2014-10-15 19:31:02 +02:00
Stefan Agner
c9857ad52a vf6xx: calculate core clocks
Extend the clock controller module with a function to calculate
core clocks from the current registers settings. On Vybrid, we
assume that the core clocks are setup by the main operating system
running on the Cortex-A5. Nevertheless we need to know their actual
values in order to calculate other clocks or baud rates.

Verified on a Colibri VF61, which calculates following values:
ccm_core_clk: 500210526
ccm_platform_bus_clk: 166736842
ccm_ipg_bus_clk: 83368421
2014-10-15 19:31:02 +02:00
Stefan Agner
c83e16926e vf6xx: doc: initial commit
Add documentation Makefile and DoxygenLayout for Freescale Vybrid
VF6xx support.
2014-10-15 19:31:02 +02:00
Stefan Agner
3132ae50cb vf6xx: initial memorymap and clock control module
Add initial memorymap for Vybrid VF6xx module. Also add the clock
control module which allows to control system clocks and enable
clocks of individual pheripherials.
2014-10-15 19:31:02 +02:00
Stefan Agner
07b7d3e805 vf6xx: initial add of Vybrid VF6xx support
Freescale Vybrid is a familiy of ARM SoC, wheras the VF6xx models
have two cores in one SoC, a Cortex-A5 and a Cortex-M4. This adds
initial support for the Cortex-M4 in the libopencm3 library.

By using two different ram areas (pc_ram and ps_ram) the user can
put the code in a RAM area bounded to the code bus. The data can
be stored in the data area. However, currently the initial values
of for the variables in the data section are stored in the code
section and copied to the ram section by the initialization code
(like it's copied from ROM to RAM on microcontrollers).
2014-10-15 19:31:01 +02:00
Freek van Tienen
ac8ac8c64d [f4] Added a 25mhz clock 2014-10-15 17:27:18 +02:00
Geoffrey Hausheer
4ff07df7b2 stm32: Add timers 9-17. This should support all F0, F1, and F2 products 2014-10-07 11:23:52 +00:00
Karl Palsson
5d4437fe43 stm32/spi: Replace all SPIx_I2S_BASE with SPIx_BASE
Latest versions of all reference manuals refer to the address as SPIx_BASE, and
simply name some of the individual registers as SPI_I2SXXXX.  Likewise, the
interrupts are simply SPIx, not SPIx/I2Sx.  Rather than hacking more duplicates
into the F0 and L0 parts where this was turning up, remove the pointless _I2S_
from SPI2/SPI3 and make it all consistent

Compile tested only, with the examples collection.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>

Fixes #331
Fixes #347
2014-10-07 11:21:40 +00:00
Karl Palsson
2211944233 stm32: exti: Define all irqs in common header.
There's more exti lines on many more devices now. F0 and F3 have extras, as did
L1 and L0.  There's no real reason not to have higher order EXTI definitions
defined at the top level, and it reduces the number of files to merge together
to find all definitions for the bigger devices.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>

Fixes #338
2014-09-30 22:32:52 +00:00
Nippius
d2808b8486 tiva lm4f: ssi: Initial implementation for SSI peripheral 2014-08-11 21:51:09 +01:00
Karl Palsson
cf5fb002f6 [l1-flash/eeprom] Add lock/unlock/eeprom helper routines 2014-07-14 17:54:20 +00:00
Frantisek Burian
4d28c1b849 USB: Fix definition of function according to previous commit. 2014-07-14 14:50:07 +02:00
Pavol Rusnak
806ebb18fa add MSC (Mass Storage Class) support 2014-07-03 18:46:55 +02:00
Karl Palsson
67b538a540 usb/stm32: Add top level commentary for scope
Remove some unncessary commentary and fixed bit fields introduced earlier via
insufficient review.
2014-05-25 19:54:06 +00:00
Roger Wolff
c07a1291f4 usb/stm32 added NOVBUSSENS bit definitions 2014-05-25 19:45:52 +00:00
Roger Wolff
5c5c77d4dc stm32/f0: DMA base address compatibility tweak 2014-05-25 19:35:20 +00:00
Felix Ruess
67242de60d [f3] add USART_SR_x defines for common status flags
enables the use of usart_get_flag(USARTx, USART_SR_x) on F3 just like on F124

closes #283
2014-04-09 16:41:20 +02:00
Karl Palsson
d839ce41f6 stm32f1: Fix RCC CAN defines
Thanks to Марко Краљевић <krasnaya.zvezda@gmail.com>
2014-04-08 18:51:26 +00:00
Karl Palsson
cb33acc32a stm32f1: Add missing peripheral base address for F100 2014-03-31 13:56:50 +00:00
Ken Sarkies
1f5ce647ff stm32: adc.h regression: Add missing register definitions
The adc unification pull left out some of the shortcut definitions for
ADC1.  See 27bc12de61f8c75425efcf8a61d8ca4a5e4b01b5
2014-03-12 09:27:56 +00:00
Nikolay Merinov
ec29bd7f48 stm32l1: lcd: Basic LCD configure functions. 2014-03-11 21:44:48 +00:00
Nikolay Merinov
553a14f21d stm32l1: lcd: Define all LCD registers
Define minimal susbet of necessary functions for work with LCD screen.
2014-03-11 21:44:48 +00:00
Frantisek Burian
bf01d890f6 [STM32F0] Add support for timers.
This commit has been based on kuldeepdhaka's pioneer work, but it was reformatted to apply libopencm3 inclusion tree correctly.

timer_common_all.c now supports new rcc_periph_reset_pulse function for all families.
2014-03-11 16:49:01 +00:00
Ken Sarkies
7816501dbc Changes to the header includes for all STM32 peripherals
to remove variations, redundancies, add missing, fix errors. All c files
refer only to the dispatch style headers in /include/stm32. Those headers
#include memorymap.h and cm3/common.h. All references to
these are removed from the family specific headers. Ethernet untouched as
it appears incomplete.

Added dummy spi.c for F0/F3. Fix some doxygen anomalies.
2014-03-11 16:40:31 +00:00
Frantisek Burian
0d08891c8d [stm32f1] Fix bad RCC_ definitions for issue #77 2014-02-24 18:44:12 +00:00
Felix Held
641fbffe9a [sam3a] add irq table and memory map 2014-02-24 02:32:38 +01:00
Felix Held
b599095e6c [sam3x] add missing DACC_BASE and remove double definition of RTC_BASE 2014-02-24 02:32:38 +01:00
Frantisek Burian
d96343d487 [FIX] Fix the ATOMIC suport. 2014-02-18 02:03:09 +01:00
Uwe Bonnes
86d35fe91c include/libopencm3/cm3/common.h: Fix CRLF. 2014-02-18 01:44:28 +01:00
bon@elektron.ikp.physik.tu-darmstadt.de
8b4ac9775e cm3/common.h: Cast addr in BBIO_xx() macros. BBIO_xx has 4 byte size. 2014-02-13 20:46:07 +01:00
Frantisek Burian
09fcb14f74 [F0] Add new irq's
Be warned that this commit changes names of some old definitions. This may broke old code !
2014-02-07 07:46:54 +01:00
Frantisek Burian
9c0ca88c2e [F0] Update CRCto be compatible wih RM0091 Rev. 5 2014-02-07 07:46:54 +01:00
Frantisek Burian
fc9a7260c2 [F0] Add new peripheral Clock Recovery Subsystem as defined in RM0091 Rev. 5 2014-02-07 07:46:54 +01:00
Frantisek Burian
f244bc87dd [F0] Adapted USB to be compatible wih RM0091 Rev. 5 2014-02-07 07:46:53 +01:00
Frantisek Burian
55750d5dc6 [F0] Updated RCC module to be compatible wih RM0091 Rev. 5 2014-02-07 07:46:53 +01:00