mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
boards/common/blxxxpill: rework periph configuration
The peripheral configuration has been completely reworked to resolve pin conflicts while provided as much of the peripherals as possible. The changes include: - Move `I2C_DEV(0)` from PB6/PB7 to PB8/PB9 to solve pin conflict with `QDEC_DEV(2)`. - Use pins PB0, PB1, PB4, and PB5 for PWM instead PA8, PA9, PA10, and PA11 - PA9 and PA10 is in pin conflict with `UART_DEV(0)` which is used for stdio with `stdio_uart`, PA8 was in conflict with `QDEC_DEV(0)`, PA11 was in conflict with USB D- - Use PB6, PB7 as `QDEC_DEV(0)` (previously `QDEC_DEV(2)`), as this is the only completely conflict free setting - Use PB4/PB5 instead of PA6/PA7 for QDEC_DEV(1) - This fixes a pin conflict with `SPI_DEV(0)` MISO (and `ADC_LINE(4)`) - Only provide QDEC at PB4/PB5 when PWM is not used to avoid conflict - Only provide QDEC at PA8/PA9 when UART is not used to avoid conflict - Use SPI2 (PB15, PB14, PB13, PB12) as `SPI_DEV(0)` instead of SPI1, use SPI1 (PA7, PA6, PA5, PA4) as `SPI_DEV(1)` - Only provide `SPI_DEV(1)` if the ADC is not in used to resolve a pin conflict - Move PB0 and PB1 at the end of the ADC lines (previously `ADC_LINE(6)` and `ADC_LINE(7)`, now `ADC_LINE(8)` and `ADC_LINE(9)`) - Only provide them when PWM is not in use (to resolve pin conflict with PWM) - Also do not provide them for the Blackpill boards, which are missing pins PB0 and PB1 on the headers To make life of users easier, a Pinout diagram with the new configuration was added.
This commit is contained in:
parent
5ddc332b52
commit
051a1f1e32
@ -13,10 +13,10 @@ There are also versions that only report to have 32 KiB, but actually have
|
||||
64 KiB.
|
||||
|
||||
|
||||
## Hardware
|
||||
## Pinout
|
||||
|
||||
![pinout](pinouts/pinout-bluepill.svg)
|
||||
|
||||
![bluepill]
|
||||
(https://camo.githubusercontent.com/6122268d77e4677a08d0e13e2e2aaf070a0a6a69/687474703a2f2f73312e62696c642e6d652f62696c6465722f3131303431372f38383135303232313438363837343334302e6a7067)
|
||||
### MCU
|
||||
|
||||
| MCU | STM32F103C8 |
|
||||
|
6
boards/common/blxxxpill/doc/README.md
Normal file
6
boards/common/blxxxpill/doc/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
Pinout Generation
|
||||
=================
|
||||
|
||||
[GenPinoutSVG](https://github.com/stevenj/GenPinoutSVG) was used to generate
|
||||
the Pinout diagram. The only post-processing applied was cropping the SVG to its
|
||||
contents.
|
4096
boards/common/blxxxpill/doc/bluepill-top-view.svg
Normal file
4096
boards/common/blxxxpill/doc/bluepill-top-view.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 705 KiB |
122
boards/common/blxxxpill/doc/pinout-bluepill.csv
Normal file
122
boards/common/blxxxpill/doc/pinout-bluepill.csv
Normal file
@ -0,0 +1,122 @@
|
||||
LABELS,DEFAULT,TYPE,GROUP,Name, Official Name, GPIO, Analog 1, Analog 2, RTC, Func 1, Func 2, Func 3
|
||||
BORDER COLOR, grey
|
||||
BORDER WIDTH, 2
|
||||
BORDER OPACITY, 1
|
||||
FILL COLOR, white, white, white, deepskyblue, gray, green, purple, yellow, orange, red, gold, brown
|
||||
OPACITY, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
|
||||
FONT , Rubik, , , Work Sans, Work Sans
|
||||
FONT SIZE , 25, , , 25, 25
|
||||
FONT COLOR , black, , , , , white
|
||||
FONT SLANT , normal , , , , ,
|
||||
FONT BOLD , 700 , , , 700
|
||||
FONT STRETCH , normal
|
||||
FONT OUTLINE , yellow , , , , blue
|
||||
FONT OUTLINE THICKNESS, 0.1
|
||||
BOXES, STD, , , PIN BOX, NAME BOX, SKEWED, SKEWED, SKEWED, SKEWED, SKEWED, SKEWED, SKEWED
|
||||
|
||||
TYPE, IO, black, 1
|
||||
TYPE, INPUT, black, 1
|
||||
TYPE, OUTPUT, black, 1
|
||||
|
||||
WIRE, DIGITAL, black, 1, 5
|
||||
WIRE, PWM, black, 1, 5
|
||||
WIRE, ANALOG, black, 1, 5
|
||||
WIRE, POWER, black, 1, 10
|
||||
|
||||
GROUP, NONE, grey, 0.1
|
||||
|
||||
BOX, STD, black, 1, white, 0, 1, 100,55,2,2,0,0
|
||||
BOX, PIN BOX, black, 1, white, 0, 1, 80, 55, 5, 5, -10, 0
|
||||
BOX, NAME BOX, black, 1, white, 0, 1, 125, 55, 5, 5, -10, 0
|
||||
BOX, SKEWED, black, 1, white, 0, 1, 125,55,5,5,-10,0
|
||||
BOX, PAGE BORDER, black, 1, white, 1, 50, 100,100,0,0,0,0
|
||||
BOX, DETAIL BOX, darkblue, 1, white, 0, 3, 250, 200, 15,15,0,0
|
||||
|
||||
PAGE, A4-L
|
||||
DPI, 300
|
||||
|
||||
DRAW
|
||||
|
||||
# Add image of board
|
||||
ICON, bluepill-top-view.svg, 880, 908, 100%, 100%
|
||||
|
||||
BOX, DETAIL BOX, 1800, 100, 1100, 300, , TOP, "Legend"
|
||||
ANCHOR, 1820,140
|
||||
PINSET, RIGHT, PACKED, CENTER, CENTER, 74.75, 30, 45, 60, 10, 0
|
||||
# wire, type, group, pin-name, comment, analog, PWM, SPI, I2C, POWER, UART, QDEC
|
||||
PIN, DIGITAL, INPUT, NONE, , Input
|
||||
PIN, DIGITAL, OUTPUT, NONE, , Output
|
||||
PIN, DIGITAL, IO, NONE, , "I/O"
|
||||
ANCHOR, 2220,140
|
||||
PINSET, RIGHT, PACKED, CENTER, CENTER, 74.75, 30, 45, 60, 10, 0
|
||||
PIN, ANALOG, IO, NONE, , , Analog
|
||||
PIN, PWM, IO, NONE, , , , PWM
|
||||
PIN, DIGITAL, IO, NONE, , , , , SPI
|
||||
ANCHOR, 2640,140
|
||||
PINSET, RIGHT, PACKED, CENTER, CENTER, 74.75, 30, 45, 60, 10, 0
|
||||
PIN, DIGITAL, IO, NONE, , , , , , I2C
|
||||
PIN, DIGITAL, IO, NONE, , , , , , , , UART
|
||||
PIN, POWER, IO, NONE, , , , , , , Power
|
||||
|
||||
BOX, DETAIL BOX, 1800, 500, 1100, 220, , TOP, "Internally Connected to ADC"
|
||||
ANCHOR, 1820,540
|
||||
PINSET, RIGHT, PACKED, CENTER, CENTER, 74.75, 30, 45, 60, 10, 0
|
||||
# wire, type, group, pin-name, comment, analog, PWM, SPI, I2C, POWER, UART, QDEC
|
||||
PIN, ANALOG, IO, NONE, NTC, , "A6"
|
||||
PIN, ANALOG, IO, NONE, VREF, , "A7"
|
||||
|
||||
BOX, DETAIL BOX, 1800, 800, 1100, 220, , TOP, "Default Interface for STDIO"
|
||||
MESSAGE, 1820, 860, 48, Name, 36, LEFT, TOP
|
||||
TEXT, none, black, "UART for STM32F103C8 (64 KiB flash)", NL
|
||||
TEXT, none, black, "USB for STM32F103CB (128 KiB flash)", NL
|
||||
|
||||
# Left Side Pins
|
||||
ANCHOR, 520,170
|
||||
PINSET, LEFT, PACKED, CENTER, CENTER, 74.75, 30, 45, 60, 10, 0
|
||||
|
||||
# wire, type, group, pin-name, comment, analog, PWM, SPI, I2C, POWER, UART, QDEC
|
||||
PIN, ANALOG, INPUT, NONE, , "VAT"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PC 13", "LED1"
|
||||
PIN, DIGITAL, IO, NONE, "PC 14"
|
||||
PIN, DIGITAL, IO, NONE, "PC 15"
|
||||
PIN, ANALOG, IO, NONE, "PA 0", , "A0"
|
||||
PIN, DIGITAL, IO, NONE, "PA 1", , "A1"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PA 2", , , , , , , "TX1"
|
||||
PIN, DIGITAL, INPUT, NONE, "PA 3", , , , , , , "RX1"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PA 4", , "A2", , "CS1"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PA 5", , "A3", , "SCLK1"
|
||||
PIN, DIGITAL, INPUT, NONE, "PA 6", , "A4", , "MISO1"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PA 7", , "A5", , "MOSI1"
|
||||
PIN, PWM, OUTPUT, NONE, "PB 0", , "A8", "PWM2"
|
||||
PIN, PWM, OUTPUT, NONE, "PB 1", , "A9", "PWM3"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PB 10", , , , , "SCL1", , "TX2"
|
||||
PIN, DIGITAL, INPUT, NONE, "PB 11", , , , , "SDA1", , "RX2"
|
||||
PIN, DIGITAL, INPUT, NONE, , "RESET"
|
||||
PIN, POWER, OUTPUT, NONE, , , , , , , "+3.3V"
|
||||
PIN, POWER, OUTPUT, NONE, , , , , , , "GND"
|
||||
PIN, POWER, OUTPUT, NONE, , , , , , , "GND"
|
||||
|
||||
# Right Side Pins
|
||||
ANCHOR, 1235,170
|
||||
PINSET, RIGHT, PACKED, CENTER, CENTER, 74.75, 30, 45, 60, 10, 0
|
||||
# wire, type, group, pin-name, comment, analog, PWM, SPI, I2C, POWER, UART, QDEC
|
||||
PIN, POWER, OUTPUT, NONE, , , , , , , "+3.3V"
|
||||
PIN, POWER, OUTPUT, NONE, , , , , , , "GND"
|
||||
PIN, POWER, OUTPUT, NONE, , , , , , , "+5V"
|
||||
PIN, DIGITAL, IO, NONE, "PB 9", , , , , "SDA0"
|
||||
PIN, DIGITAL, IO, NONE, "PB 8", , , , , "SCL0"
|
||||
PIN, DIGITAL, INPUT, NONE, "PB 7", , , , , , , , "QDEC0-B"
|
||||
PIN, DIGITAL, INPUT, NONE, "PB 6", , , , , , , , "QDEC0-A"
|
||||
PIN, PWM, OUTPUT, NONE, "PB 5", , , "PWM1"
|
||||
PIN, PWM, IO, NONE, "PB 4", , , "PWM0", , , , , "QDEC1-A"
|
||||
PIN, DIGITAL, INPUT, NONE, "PB 3", , , , , , , , "QDEC1-B"
|
||||
PIN, DIGITAL, IO, NONE, "PA 15"
|
||||
PIN, DIGITAL, IO, NONE, "PA 12", "USB D+\\nstdio"
|
||||
PIN, DIGITAL, IO, NONE, "PA 11", "USB D-\\nstdio"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PA 10", "stdio", , , , , , "TX0"
|
||||
PIN, DIGITAL, INPUT, NONE, "PA 9", "stdio", , , , , , "RX0", "QDEC2-A"
|
||||
PIN, DIGITAL, IO, NONE, "PA 8", , , , , , , , "QDEC2-B"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PB 15", , , , "MOSI0"
|
||||
PIN, DIGITAL, INPUT, NONE, "PB 14", , , , "MISO0"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PB 13", , , , "SCLK0"
|
||||
PIN, DIGITAL, OUTPUT, NONE, "PB 12", , , , "CS0"
|
Can't render this file because it has a wrong number of fields in line 2.
|
@ -61,12 +61,21 @@ static const adc_conf_t adc_config[] = {
|
||||
{ .pin = GPIO_PIN(PORT_A, 5), .dev = 0, .chan = 5 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 6), .dev = 0, .chan = 6 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 7), .dev = 0, .chan = 7 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 0), .dev = 0, .chan = 8 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 1), .dev = 0, .chan = 9 },
|
||||
/* ADC Temperature channel */
|
||||
{ .pin = GPIO_UNDEF, .dev = 0, .chan = 16 },
|
||||
/* ADC VREF channel */
|
||||
{ .pin = GPIO_UNDEF, .dev = 0, .chan = 17 },
|
||||
/* The blackpill has a few pins less. PB0 and PB1 are among the GPIOs not
|
||||
* exposed due to the lower pincount.
|
||||
*
|
||||
* Also, this conflicts with PWM. We prefer PWM over ADC here to provide
|
||||
* 6 external ADC inputs, and 4 PWM outputs (instead of 8 ADC inputs and
|
||||
* 2 PWM outputs). */
|
||||
#if !defined(BOARD_BLACKPILL) && !defined(BOARD_BLACKPILL_128KIB) \
|
||||
&& !defined(MODULE_PERIPH_PWM)
|
||||
{ .pin = GPIO_PIN(PORT_B, 0), .dev = 0, .chan = 8 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 1), .dev = 0, .chan = 9 },
|
||||
#endif
|
||||
};
|
||||
|
||||
#define ADC_NUMOF ARRAY_SIZE(adc_config)
|
||||
@ -134,33 +143,41 @@ static const timer_conf_t timer_config[] = {
|
||||
*/
|
||||
|
||||
static const qdec_conf_t qdec_config[] = {
|
||||
{
|
||||
.dev = TIM4,
|
||||
.max = 0x0000ffff,
|
||||
.rcc_mask = RCC_APB1ENR_TIM4EN,
|
||||
.chan = { { .pin = GPIO_PIN(PORT_B, 6), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 7), .cc_chan = 1 } },
|
||||
.bus = APB1,
|
||||
.irqn = TIM4_IRQn,
|
||||
},
|
||||
/* this conflicts with PWM */
|
||||
#ifndef MODULE_PERIPH_PWM
|
||||
{
|
||||
.dev = TIM3,
|
||||
.max = 0x0000ffff,
|
||||
.rcc_mask = RCC_APB1ENR_TIM3EN,
|
||||
.chan = { { .pin = GPIO_PIN(PORT_B, 4), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 5), .cc_chan = 1 } },
|
||||
/* by default TIM3 is routed to PA6 (cc_chan 0) and PA7 (cc_chan 1) */
|
||||
.remap = AFIO_MAPR_TIM3_REMAP_1,
|
||||
.bus = APB1,
|
||||
.irqn = TIM3_IRQn,
|
||||
},
|
||||
#endif
|
||||
/* this conflicts with UART_DEV(0) */
|
||||
#ifndef MODULE_PERIPH_UART
|
||||
{
|
||||
.dev = TIM1,
|
||||
.max = 0x0000ffff,
|
||||
.rcc_mask = RCC_APB2ENR_TIM1EN,
|
||||
.chan = { { .pin = GPIO_PIN(PORT_A, 8), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 9), .cc_chan = 1 } },
|
||||
.chan = { { .pin = GPIO_PIN(PORT_A, 8), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 9), .cc_chan = 1 } },
|
||||
.bus = APB2,
|
||||
.irqn = TIM1_UP_IRQn
|
||||
},
|
||||
{
|
||||
.dev = TIM3,
|
||||
.max = 0x0000ffff,
|
||||
.rcc_mask = RCC_APB1ENR_TIM3EN,
|
||||
.chan = { { .pin = GPIO_PIN(PORT_A, 6), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 7), .cc_chan = 1 } },
|
||||
.bus = APB1,
|
||||
.irqn = TIM3_IRQn
|
||||
},
|
||||
{
|
||||
.dev = TIM4,
|
||||
.max = 0x0000ffff,
|
||||
.rcc_mask = RCC_APB1ENR_TIM4EN,
|
||||
.chan = { { .pin = GPIO_PIN(PORT_B, 6), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 7), .cc_chan = 1 } },
|
||||
.bus = APB1,
|
||||
.irqn = TIM4_IRQn
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
#define QDEC_NUMOF ARRAY_SIZE(qdec_config)
|
||||
@ -225,8 +242,8 @@ static const i2c_conf_t i2c_config[] = {
|
||||
{
|
||||
.dev = I2C1,
|
||||
.speed = I2C_SPEED_NORMAL,
|
||||
.scl_pin = GPIO_PIN(PORT_B, 6),
|
||||
.sda_pin = GPIO_PIN(PORT_B, 7),
|
||||
.scl_pin = GPIO_PIN(PORT_B, 8),
|
||||
.sda_pin = GPIO_PIN(PORT_B, 9),
|
||||
.bus = APB1,
|
||||
.rcc_mask = RCC_APB1ENR_I2C1EN,
|
||||
.clk = CLOCK_APB1,
|
||||
@ -256,15 +273,24 @@ static const i2c_conf_t i2c_config[] = {
|
||||
*/
|
||||
static const pwm_conf_t pwm_config[] = {
|
||||
{
|
||||
.dev = TIM1,
|
||||
.rcc_mask = RCC_APB2ENR_TIM1EN,
|
||||
.chan = { { .pin = GPIO_PIN(PORT_A, 8), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 9), .cc_chan = 1 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 10), .cc_chan = 2 },
|
||||
{ .pin = GPIO_PIN(PORT_A, 11), .cc_chan = 3 } },
|
||||
.dev = TIM3,
|
||||
.rcc_mask = RCC_APB1ENR_TIM3EN,
|
||||
/* by default TIM3 is routed to PA6 (cc_chan 0) and PA7 (cc_chan 1) */
|
||||
.remap = AFIO_MAPR_TIM3_REMAP_1,
|
||||
.chan = {
|
||||
{ .pin = GPIO_PIN(PORT_B, 4), .cc_chan = 0 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 5), .cc_chan = 1 },
|
||||
#if !defined(BOARD_BLACKPILL) && !defined(BOARD_BLACKPILL_128KIB)
|
||||
/* The blackpill has a few pins less. PB0 and PB1 are
|
||||
* among the GPIOs not exposed due to the lower
|
||||
* pincount */
|
||||
{ .pin = GPIO_PIN(PORT_B, 0), .cc_chan = 2 },
|
||||
{ .pin = GPIO_PIN(PORT_B, 1), .cc_chan = 3 },
|
||||
#endif
|
||||
},
|
||||
.af = GPIO_AF_OUT_PP,
|
||||
.bus = APB2
|
||||
}
|
||||
.bus = APB1,
|
||||
},
|
||||
};
|
||||
|
||||
#define PWM_NUMOF ARRAY_SIZE(pwm_config)
|
||||
@ -275,6 +301,22 @@ static const pwm_conf_t pwm_config[] = {
|
||||
* @{
|
||||
*/
|
||||
static const spi_conf_t spi_config[] = {
|
||||
{
|
||||
.dev = SPI2,
|
||||
.mosi_pin = GPIO_PIN(PORT_B, 15),
|
||||
.miso_pin = GPIO_PIN(PORT_B, 14),
|
||||
.sclk_pin = GPIO_PIN(PORT_B, 13),
|
||||
.cs_pin = GPIO_PIN(PORT_B, 12),
|
||||
.rccmask = RCC_APB1ENR_SPI2EN,
|
||||
.apbbus = APB1,
|
||||
#ifdef MODULE_PERIPH_DMA
|
||||
.tx_dma = 3,
|
||||
.tx_dma_chan = DMA_CHAN_CONFIG_UNSUPPORTED,
|
||||
.rx_dma = 2,
|
||||
.rx_dma_chan = DMA_CHAN_CONFIG_UNSUPPORTED
|
||||
#endif
|
||||
},
|
||||
#ifndef MODULE_PERIPH_ADC
|
||||
{
|
||||
.dev = SPI1,
|
||||
.mosi_pin = GPIO_PIN(PORT_A, 7),
|
||||
@ -290,21 +332,7 @@ static const spi_conf_t spi_config[] = {
|
||||
.rx_dma_chan = DMA_CHAN_CONFIG_UNSUPPORTED
|
||||
#endif
|
||||
},
|
||||
{
|
||||
.dev = SPI2,
|
||||
.mosi_pin = GPIO_PIN(PORT_B, 15),
|
||||
.miso_pin = GPIO_PIN(PORT_B, 14),
|
||||
.sclk_pin = GPIO_PIN(PORT_B, 13),
|
||||
.cs_pin = GPIO_PIN(PORT_B, 12),
|
||||
.rccmask = RCC_APB1ENR_SPI2EN,
|
||||
.apbbus = APB1,
|
||||
#ifdef MODULE_PERIPH_DMA
|
||||
.tx_dma = 3,
|
||||
.tx_dma_chan = DMA_CHAN_CONFIG_UNSUPPORTED,
|
||||
.rx_dma = 2,
|
||||
.rx_dma_chan = DMA_CHAN_CONFIG_UNSUPPORTED
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
#define SPI_NUMOF ARRAY_SIZE(spi_config)
|
||||
|
4710
doc/doxygen/src/pinouts/pinout-bluepill.svg
Normal file
4710
doc/doxygen/src/pinouts/pinout-bluepill.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 1.0 MiB |
Loading…
Reference in New Issue
Block a user