Skip to content

Commit aeaac0e

Browse files
authoredJun 10, 2021
Merge pull request ARMmbed#14746 from jeromecoutant/PR_WB15CC
STM32WB: introduce STM32WB15CC NUCLEO
2 parents b74f62c + 1a370ed commit aeaac0e

File tree

20 files changed

+711
-516
lines changed

20 files changed

+711
-516
lines changed
 

‎connectivity/drivers/ble/FEATURE_BLE/TARGET_STM32WB/HCIDriver.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@ static bool get_bd_address(uint8_t *bd_addr);
8484
static bool sysevt_wait(void);
8585
static bool sysevt_check(void);
8686

87+
#if DEVICE_FLASH
8788
extern int BLE_inited;
89+
#endif
8890

8991
namespace ble {
9092
namespace vendor {
@@ -490,6 +492,20 @@ class TransportDriver : public CordioHCITransportDriver {
490492
tr_info("WIRELESS COPROCESSOR FW VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
491493
tr_info("WIRELESS COPROCESSOR FW STACK TYPE = %d (ROM size 0x%x)", p_wireless_info->StackType, MBED_ROM_SIZE);
492494

495+
#if STM32WB15xx
496+
switch (p_wireless_info->StackType) {
497+
case INFO_STACK_TYPE_BLE_FULL:
498+
error("Wrong BLE FW\n");
499+
break;
500+
case INFO_STACK_TYPE_BLE_HCI:
501+
if (MBED_ROM_SIZE > 0x32800) {
502+
error("Wrong MBED_ROM_SIZE with HCI FW\n");
503+
}
504+
break;
505+
default:
506+
tr_error("StackType %u not expected\n", p_wireless_info->StackType);
507+
}
508+
#endif
493509
#if STM32WB55xx
494510
switch (p_wireless_info->StackType) {
495511
case INFO_STACK_TYPE_BLE_FULL:
@@ -681,8 +697,10 @@ class TransportDriver : public CordioHCITransportDriver {
681697
*/
682698
SHCI_C2_BLE_Init(&ble_init_cmd_packet);
683699

700+
#if DEVICE_FLASH
684701
/* Used in flash_api.c */
685702
BLE_inited = 1;
703+
#endif
686704
}
687705

688706
TL_CmdPacket_t *bleCmdBuf;

‎targets/TARGET_STM/TARGET_STM32WB/PeripheralNames.h

+15-1
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,42 @@ typedef enum {
3535
#define DEVICE_SPI_COUNT 2
3636
typedef enum {
3737
SPI_1 = (int)SPI1_BASE,
38-
SPI_2 = (int)SPI2_BASE
38+
#if defined SPI2_BASE
39+
SPI_2 = (int)SPI2_BASE,
40+
#endif
3941
} SPIName;
4042

4143
typedef enum {
4244
I2C_1 = (int)I2C1_BASE,
45+
#if defined I2C3_BASE
4346
I2C_3 = (int)I2C3_BASE
47+
#endif
4448
} I2CName;
4549

4650
typedef enum {
4751
PWM_1 = (int)TIM1_BASE,
52+
#if defined TIM2_BASE
4853
PWM_2 = (int)TIM2_BASE,
54+
#endif
55+
#if defined TIM16_BASE
4956
PWM_16 = (int)TIM16_BASE,
57+
#endif
58+
#if defined TIM17_BASE
5059
PWM_17 = (int)TIM17_BASE
60+
#endif
5161
} PWMName;
5262

63+
#if defined QUADSPI_R_BASE
5364
typedef enum {
5465
QSPI_1 = (int)QUADSPI_R_BASE
5566
} QSPIName;
67+
#endif
5668

69+
#if defined USB_BASE
5770
typedef enum {
5871
USB_FS = (int)USB_BASE,
5972
} USBName;
73+
#endif
6074

6175
#ifdef __cplusplus
6276
}

‎targets/TARGET_STM/TARGET_STM32WB/README.md

+40
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,33 @@ mbedls -m 0884:DISCO_WB5MMG
7272
```
7373

7474

75+
## NUCLEO_WB15CC (NUCLEO-WB15CC)
76+
77+
[st.com STM32WB15CC module page](https://www.st.com/en/microcontrollers-microprocessors/stm32wb15cc.html)
78+
79+
[st.com NUCLEO board page]()
80+
81+
[mbed.com platform page](https://os.mbed.com/platforms/ST-NUCLEO-WB15CC/)
82+
83+
- Total FLASH is 320KB
84+
85+
But FLASH is shared by M4 and M0 cores, [see BLE FW](#ble-fw)
86+
87+
- RAM: 48 KB
88+
- SRAM1: 12 KB
89+
- SRAM2a: 32 KB
90+
- SRAM2b: 4 KB
91+
92+
SRAM1 is dedicated for M4 core, and then for mbed-os applications.
93+
94+
SRAM2 is dedicated for M0 core and inter CPU communication, and some part can not be addressed by M4.
95+
96+
NB: MBED CLI1 tool can be used thanks to this command:
97+
```
98+
mbedls -m 0883:NUCLEO_WB15CC
99+
```
100+
101+
75102
# BLE
76103

77104
## MBED-OS support
@@ -90,6 +117,8 @@ Official ST Application Note :
90117

91118
All available BLE FW for M0 core are provided in ths ST STM32CubeWB repo:
92119

120+
### STM32WB5x
121+
93122
https://github.com/STMicroelectronics/STM32CubeWB/tree/master/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x
94123

95124
Default BLE FW in ST boards is **stm32wb5x_BLE_Stack_full_fw.bin**
@@ -108,6 +137,17 @@ Example in your local mbed_app.json:
108137
}
109138
```
110139

140+
### STM32WB1x
141+
142+
https://github.com/STMicroelectronics/STM32CubeWB/tree/master/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB1x
143+
144+
Default BLE FW in ST boards is **stm32wb1x_BLE_Stack_full_fw.bin**
145+
- **this is not supported in mbed**
146+
147+
It is mandatory to use **stm32wb1x_BLE_HCILayer_fw.bin**
148+
- As explained in Release_Notes.html, this FW is flashed at @ 0x08032800
149+
- Then "mbed_rom_size" is "0x32800" (202K) (default configuration in targets.json)
150+
111151

112152
## BLE FW update
113153

‎targets/TARGET_STM/TARGET_STM32WB/STM32Cube_FW/app_conf.h

+4
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,11 @@
148148
* Maximum number of simultaneous connections that the device will support.
149149
* Valid values are from 1 to 8
150150
*/
151+
#ifdef TARGET_MCU_STM32WB15xC
152+
#define CFG_BLE_NUM_LINK 4
153+
#else
151154
#define CFG_BLE_NUM_LINK 8
155+
#endif
152156

153157
/**
154158
* Maximum number of Services that can be stored in the GATT database.

‎targets/TARGET_STM/TARGET_STM32WB/STM32Cube_FW/stm32_lpm_if.c

+4
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,11 @@ void PWR_EnterStopMode( void )
122122
/************************************************************************************
123123
* ENTER STOP MODE
124124
***********************************************************************************/
125+
#if defined(PWR_SUPPORT_STOP2)
125126
LL_PWR_SetPowerMode( LL_PWR_MODE_STOP2 );
127+
#else
128+
LL_PWR_SetPowerMode( LL_PWR_MODE_STOP1 );
129+
#endif
126130

127131
LL_LPM_EnableDeepSleep( ); /**< Set SLEEPDEEP bit of Cortex System Control Register */
128132

‎targets/TARGET_STM/TARGET_STM32WB/TARGET_STM32WB15xC/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Copyright (c) 2020 ARM Limited. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4+
add_subdirectory(TARGET_NUCLEO_WB15CC EXCLUDE_FROM_ALL)
5+
46
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
57
set(STARTUP_FILE TOOLCHAIN_GCC_ARM/startup_stm32wb15xx.S)
68
set(LINKER_FILE TOOLCHAIN_GCC_ARM/stm32wb15xc.ld)
@@ -19,6 +21,7 @@ target_include_directories(mbed-stm32wb15xc
1921
target_sources(mbed-stm32wb15xc
2022
INTERFACE
2123
${STARTUP_FILE}
24+
system_clock.c
2225
)
2326

2427
mbed_set_linker_script(mbed-stm32wb15xc ${CMAKE_CURRENT_SOURCE_DIR}/${LINKER_FILE})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Copyright (c) 2020 ARM Limited. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
add_library(mbed-nucleo-wb15cc INTERFACE)
5+
6+
target_sources(mbed-nucleo-wb15cc
7+
INTERFACE
8+
PeripheralPins.c
9+
)
10+
11+
target_include_directories(mbed-nucleo-wb15cc
12+
INTERFACE
13+
.
14+
)
15+
16+
target_link_libraries(mbed-nucleo-wb15cc INTERFACE mbed-stm32wb15xc)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
/* mbed Microcontroller Library
2+
* SPDX-License-Identifier: BSD-3-Clause
3+
******************************************************************************
4+
*
5+
* Copyright (c) 2016-2021 STMicroelectronics.
6+
* All rights reserved.
7+
*
8+
* This software component is licensed by ST under BSD 3-Clause license,
9+
* the "License"; You may not use this file except in compliance with the
10+
* License. You may obtain a copy of the License at:
11+
* opensource.org/licenses/BSD-3-Clause
12+
*
13+
******************************************************************************
14+
*
15+
* Automatically generated from STM32CubeMX/db/mcu/STM32WB15CCUx.xml
16+
*/
17+
18+
#include "PeripheralPins.h"
19+
#include "mbed_toolchain.h"
20+
21+
//==============================================================================
22+
// Notes
23+
//
24+
// - The pins mentioned Px_y_ALTz are alternative possibilities which use other
25+
// HW peripheral instances. You can use them the same way as any other "normal"
26+
// pin (i.e. PwmOut pwm(PA_7_ALT0);). These pins are not displayed on the board
27+
// pinout image on mbed.org.
28+
//
29+
// - The pins which are connected to other components present on the board have
30+
// the comment "Connected to xxx". The pin function may not work properly in this
31+
// case. These pins may not be displayed on the board pinout image on mbed.org.
32+
// Please read the board reference manual and schematic for more information.
33+
//
34+
// - Warning: pins connected to the default STDIO_UART_TX and STDIO_UART_RX pins are commented
35+
// See https://os.mbed.com/teams/ST/wiki/STDIO for more information.
36+
//
37+
//==============================================================================
38+
39+
40+
41+
42+
//*** ADC ***
43+
44+
MBED_WEAK const PinMap PinMap_ADC[] = {
45+
{PA_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 // Connected to B1 [Push Button]
46+
{PA_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
47+
{PA_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7
48+
{PA_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
49+
{PA_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
50+
{PA_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
51+
{PA_6, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 // Connected to B3 [Push Button]
52+
{PA_7, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_IN2
53+
{PA_8, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_IN3
54+
// {PA_9, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_IN4 // Connected to STDIO_UART_TX
55+
{NC, NC, 0}
56+
};
57+
58+
MBED_WEAK const PinMap PinMap_ADC_Internal[] = {
59+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)},
60+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)},
61+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)},
62+
{NC, NC, 0}
63+
};
64+
65+
//*** I2C ***
66+
67+
MBED_WEAK const PinMap PinMap_I2C_SDA[] = {
68+
// {PA_10, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // Connected to STDIO_UART_RX
69+
{PB_7, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
70+
{PB_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
71+
{NC, NC, 0}
72+
};
73+
74+
MBED_WEAK const PinMap PinMap_I2C_SCL[] = {
75+
// {PA_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // Connected to STDIO_UART_TX
76+
{PB_6, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
77+
{PB_8, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
78+
{NC, NC, 0}
79+
};
80+
81+
//*** PWM ***
82+
83+
// TIM2 cannot be used because already used by the us_ticker
84+
// (update us_ticker_data.h file if another timer is chosen)
85+
MBED_WEAK const PinMap PinMap_PWM[] = {
86+
// {PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 // Connected to B1 [Push Button]
87+
// {PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
88+
// {PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3
89+
// {PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4
90+
// {PA_5, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
91+
{PA_7, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
92+
{PA_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
93+
// {PA_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 // Connected to STDIO_UART_TX
94+
// {PA_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 // Connected to STDIO_UART_RX
95+
{PA_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4
96+
// {PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
97+
// {PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 // Connected to JTDO
98+
{PB_7, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_TIM1, 3, 0)}, // TIM1_CH3
99+
{PB_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
100+
{PB_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
101+
{NC, NC, 0}
102+
};
103+
104+
//*** SERIAL ***
105+
106+
MBED_WEAK const PinMap PinMap_UART_TX[] = {
107+
{PA_2, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
108+
{PA_9, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // Connected to STDIO_UART_TX
109+
{PB_5, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // Connected to LD1 [Blue Led]
110+
{PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
111+
{NC, NC, 0}
112+
};
113+
114+
MBED_WEAK const PinMap PinMap_UART_RX[] = {
115+
{PA_3, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
116+
{PA_10, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // Connected to STDIO_UART_RX
117+
{PA_12, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
118+
{PB_7, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
119+
{NC, NC, 0}
120+
};
121+
122+
MBED_WEAK const PinMap PinMap_UART_RTS[] = {
123+
{PA_12, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
124+
{PB_1, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // Connected to LD3 [Red Led]
125+
{PB_3, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // Connected to JTDO
126+
{NC, NC, 0}
127+
};
128+
129+
MBED_WEAK const PinMap PinMap_UART_CTS[] = {
130+
{PA_6, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // Connected to B3 [Push Button]
131+
{PA_11, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
132+
{PB_4, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
133+
{NC, NC, 0}
134+
};
135+
136+
//*** SPI ***
137+
138+
MBED_WEAK const PinMap PinMap_SPI_MOSI[] = {
139+
{PA_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_SPI1)},
140+
{PA_7, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
141+
{PA_12, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
142+
{PA_13, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, // Connected to JTMS
143+
{PB_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, // Connected to LD1 [Blue Led]
144+
{NC, NC, 0}
145+
};
146+
147+
MBED_WEAK const PinMap PinMap_SPI_MISO[] = {
148+
{PA_6, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, // Connected to B3 [Push Button]
149+
{PA_11, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
150+
{PB_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
151+
{NC, NC, 0}
152+
};
153+
154+
MBED_WEAK const PinMap PinMap_SPI_SCLK[] = {
155+
{PA_1, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
156+
{PA_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
157+
{PB_3, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, // Connected to JTDO
158+
{NC, NC, 0}
159+
};
160+
161+
MBED_WEAK const PinMap PinMap_SPI_SSEL[] = {
162+
{PA_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
163+
{PA_14, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, // Connected to JTCK
164+
{PA_15, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
165+
{PB_2, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
166+
{PB_6, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)},
167+
{NC, NC, 0}
168+
};

0 commit comments

Comments
 (0)
Please sign in to comment.