Hello Vivien & Co.,
and welcome to RIOT! Let my try to bring some light into the dark :-) .
You'll find my comments inline. The general idea of the "periph_conf.h"
is a RIOT specific hardware/pin abstraction. Is it correct assuming you
have a stm32 nucleo-l1 board?
Am 17.03.2015 um 14:50 schrieb Vivien Michel:
Hello,
We are four students, working on riot-os implementation for STM32-L1.
But we are facing some problems : we're trying to add PWM features in
order to use a motor shield. We already have implemented the pwm.h for
our board. And now we're having a hard time understanding how we
should proceed with the periph_conf.h file.
The pwm.h is a peripheral interface which you can find in
"RIOT/drivers/include/periph/pwm.h". You'll need to fulfill this API
with your driver implementation but NOT adapt it. It is designed to
match the basic functionalities.
Actually, our main confusion comes from the defines that we have to
use to configure the pwm pins.
As stated above, the periph_conf.h decouples hardware-specific stuff
from the RIOT naming-scheme. For example, you can setup the pin PA09 on
the board and name it GPIO_0 in RIOT.
- Regarding the channels, we don't really get what it refers to ? Do
the values defined for these channels directly correspond to the
number written on the board near the pins (numbers 3, 5, 6, 9, 10 and
11 on the stm32l1) ? Why are there four channels defined for each pwm
pins in the stm32f3discovery's periph_conf.h ?
Comparing the stm32f3discovery you can have multiple PWM channels on one
port. Each channel can fulfill a separate PWM and therefore has its own
pin. On stm32f3discovery there are two ports with four channels each.
For your first implementation you don't need to implement multiple
channels per board. One working PWM (pin) should be enough to validate
the driver.
You can not compare the numbers written on the stm32 nuclea-l1 and the
stm32f3discovery. I guess you need to understand the I/O pin multiplexer
in general. Please read [1] p.175 sec. 7.3.2.
- What values should we use for the PWM_X_DEV, PWM_X_CLKEN(),
PWM_X_CLKDIS() and PWM_X_PORT_CLKEN() ?
Did you have a look at the CMSIS header? You can find it in
RIOT/cpu/stm32l1/include/stm32l1xx.h. There, all registers and cpu
specific configurations are named. You should have a look at (i) the use
of this file comparing for example to the gpio implementation and (ii)
compare the stm32f3 PWM implementation. You will see that the PWM
especially depends by timers (TIMx). You'll also need to enable bus
clocks for the peripherals. You can find all principles in the stm32f3
implementation as this is really similar to the stm32l1 i think. Also
you can find everithing in the manual [1].
- For the PWM_X_PORT, should we use GPIOC and GPIOD as it is done for
the stm32f3 ?
You need to go into the manual and see where you can map these pins to.
It think it is not possible on every port and every pin for each
potential function. Select a port and pin where no other peripheral
function is placed.
- Should we disable the pins in the GPIO config if we want to use them
as PWM ?
Please try to avoid multiple functions for one pin. Then you don't have
to disable them.
We would be very grateful for any help.
Are you fine now, any further questions?
Best regards.
Cheers,
Peter
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
--
Peter Kietzmann
Hamburg University of Applied Sciences
Dept. Informatik, Internet Technologies Group
Berliner Tor 7, 20099 Hamburg, Germany
Fon: +49-40-42875-8426
Web: http://www.haw-hamburg.de/inet
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel