Skip to content

Commit 211d201

Browse files
committed
STM32 USBDevice: add more supported targets
1 parent 58c9f4b commit 211d201

File tree

4 files changed

+62
-37
lines changed

4 files changed

+62
-37
lines changed

features/unsupported/USBDevice/targets/TARGET_STM/USBHAL_IP_DEVICE.h

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,17 +132,13 @@ USBHAL::USBHAL(void) {
132132
gpio_init_out(&HALPriv->usb_switch, PG_6);
133133

134134
#elif defined(TARGET_NUCLEO_F103RB)
135-
/* Configure DM DP Pins
136-
- USB-DP (D+ of the USB connector) <======> PA12 (Nucleo board)
137-
Make sure to connect a 1.5KOhm pull up to USB-DP PA12 pin (permanent pull-up)
138-
- USB-DM (D- of the USB connector) <======> PA11 (Nucleo board)
139-
*/
140-
__HAL_RCC_GPIOA_CLK_ENABLE();
141-
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_MODE_AF_INPUT)); // DM
142-
pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_MODE_AF_INPUT)); // DP
143135
__HAL_RCC_GPIOB_CLK_ENABLE();
144136
gpio_init_out(&HALPriv->usb_switch, PB_14);
145137
gpio_mode(&HALPriv->usb_switch, OpenDrain);
138+
// Make sure to connect a 1.5K pull-up to USB-DP PA12 pin (permanent pull-up)
139+
__HAL_RCC_GPIOA_CLK_ENABLE();
140+
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_MODE_AF_INPUT)); // DM
141+
pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_MODE_AF_INPUT)); // DP
146142

147143
#elif defined(TARGET_DISCO_L072CZ_LRWAN1) || \
148144
defined(TARGET_DISCO_L053C8)

features/unsupported/USBDevice/targets/TARGET_STM/USBHAL_IP_OTGFSHS.h

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,17 @@
1818
#ifndef USBHAL_IP_OTGFSHS_H
1919
#define USBHAL_IP_OTGFSHS_H
2020

21-
#if defined(TARGET_DISCO_F769NI)
21+
//==================================================================
22+
// This board has both USB OTG FS and HS connectors.
23+
// Select one line only.
24+
//==================================================================
25+
#if defined(TARGET_DISCO_F746NG)
26+
//#define TARGET_DISCO_F746NG_OTG_FS
27+
#define TARGET_DISCO_F746NG_OTG_HS
28+
#endif
29+
30+
#if defined(TARGET_DISCO_F769NI) || \
31+
defined(TARGET_DISCO_F746NG_OTG_HS)
2232
#define USBHAL_IRQn OTG_HS_IRQn
2333
#else
2434
#define USBHAL_IRQn OTG_FS_IRQn
@@ -85,7 +95,8 @@ USBHAL::USBHAL(void) {
8595

8696
memset(&hpcd.Init, 0, sizeof(hpcd.Init));
8797

88-
#if defined(TARGET_DISCO_F769NI)
98+
#if defined(TARGET_DISCO_F769NI) || \
99+
defined(TARGET_DISCO_F746NG_OTG_HS)
89100
hpcd.Instance = USB_OTG_HS;
90101
hpcd.Init.phy_itface = PCD_PHY_ULPI;
91102
hpcd.Init.Sof_enable = 0;
@@ -120,33 +131,45 @@ USBHAL::USBHAL(void) {
120131

121132
// Configure USB pins and other clocks
122133

123-
// NUCLEO_144 boards
124134
#if defined(TARGET_NUCLEO_F207ZG) || \
135+
defined(TARGET_NUCLEO_F401RE) || \
136+
defined(TARGET_NUCLEO_F411RE) || \
125137
defined(TARGET_NUCLEO_F412ZG) || \
126138
defined(TARGET_NUCLEO_F429ZI) || \
127139
defined(TARGET_NUCLEO_F446ZE) || \
128140
defined(TARGET_NUCLEO_F767ZI) || \
129-
defined(TARGET_NUCLEO_F746ZG)
141+
defined(TARGET_NUCLEO_F746ZG) || \
142+
defined(TARGET_DISCO_F469NI) || \
143+
defined(TARGET_DISCO_F746NG_OTG_FS)
130144
__HAL_RCC_GPIOA_CLK_ENABLE();
131-
pin_function(PA_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); /* OTG_FS_SOF */
132-
pin_function(PA_9, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF10_OTG_FS)); /* OTG_FS_VBUS */
133-
pin_function(PA_10, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)); /* OTG_FS_ID */
134-
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); /* OTG_FS_DM */
135-
pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); /* OTG_FS_DP */
145+
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // DM
146+
pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // DP
147+
pin_function(PA_9, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // VBUS
148+
pin_function(PA_10, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)); // ID
149+
pin_function(PA_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // SOF
150+
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
151+
152+
#elif defined(TARGET_DISCO_F429ZI)
153+
__HAL_RCC_GPIOB_CLK_ENABLE();
154+
pin_function(PB_14, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_OTG_HS_FS)); // DM
155+
pin_function(PB_15, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_OTG_HS_FS)); // DP
156+
pin_function(PB_13, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF12_OTG_HS_FS)); // VBUS
157+
pin_function(PB_12, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)); // ID
136158
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
137159

138160
#elif defined(TARGET_DISCO_L475VG_IOT01A) || \
139161
defined(TARGET_DISCO_L476VG)
140162
__HAL_RCC_GPIOA_CLK_ENABLE();
141-
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); /* OTG_FS_DM */
142-
pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); /* OTG_FS_DP */
163+
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // DM
164+
pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // DP
143165
__HAL_RCC_GPIOC_CLK_ENABLE();
144-
pin_function(PC_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); /* VBUS pin */
166+
pin_function(PC_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // VBUS
145167
__HAL_RCC_PWR_CLK_ENABLE();
146168
HAL_PWREx_EnableVddUSB();
147169
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
148170

149-
#elif defined(TARGET_DISCO_F769NI)
171+
#elif defined(TARGET_DISCO_F769NI) || \
172+
defined(TARGET_DISCO_F746NG_OTG_HS)
150173
__HAL_RCC_GPIOA_CLK_ENABLE();
151174
__HAL_RCC_GPIOB_CLK_ENABLE();
152175
__HAL_RCC_GPIOC_CLK_ENABLE();
@@ -163,9 +186,14 @@ USBHAL::USBHAL(void) {
163186
pin_function(PB_13, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D7
164187
pin_function(PC_0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // STP
165188
pin_function(PH_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // NXT
189+
#if defined(TARGET_DISCO_F769NI)
166190
pin_function(PI_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // DIR
191+
#else // TARGET_DISCO_F746NG
192+
pin_function(PC_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // DIR
193+
#endif
167194
__HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE();
168195
__HAL_RCC_USB_OTG_HS_CLK_ENABLE();
196+
169197
#else
170198
#error "USB pins are not configured !"
171199
#endif

features/unsupported/USBDevice/targets/TARGET_STM/USBHAL_STM32.cpp

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,29 @@
1616
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1717
*/
1818

19-
// This file is for STM targets only
19+
/* TARGET NOT STM does not support this HAL */
2020
#ifndef TARGET_STM
2121
#define USBSTM_HAL_UNSUPPORTED
2222
#endif
2323

24-
// For STM32F4 devices, this file is used only if USB_STM_HAL is defined (in targets.json)
25-
#if defined(TARGET_STM32F4) && !defined(USB_STM_HAL)
24+
/* STM32F4 family without USB_STM_HAL use another HAL */
25+
#if defined(TARGET_STM) && defined(TARGET_STM32F4) && !defined(USB_STM_HAL)
2626
#define USBSTM_HAL_UNSUPPORTED
2727
#endif
2828

2929
#ifndef USBSTM_HAL_UNSUPPORTED
30-
3130
#include "USBHAL.h"
3231
#include "pinmap.h"
3332

33+
#include "USBHAL_STM32.h"
34+
3435
/* mbed endpoint definition to hal definition */
3536
#define EP_ADDR(ep) (((ep) >> 1)|((ep) & 1) << 7)
3637

3738
/* from hal definition to mbed definition */
3839
#define ADDR_EPIN(ep) (((ep) << 1) | 1)
3940
#define ADDR_EPOUT(ep) (((ep) << 1))
4041

41-
#include "USBHAL_STM32.h"
42-
4342
/* this call at device reception completion on a Out Enpoint */
4443
void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
4544
{
@@ -321,15 +320,12 @@ bool USBHAL::getEndpointStallState(uint8_t endpoint) {
321320
void USBHAL::remoteWakeup(void) {
322321
}
323322

324-
325323
void USBHAL::_usbisr(void) {
326324
instance->usbisr();
327325
}
328326

329-
330327
void USBHAL::usbisr(void) {
331-
332328
HAL_PCD_IRQHandler(&instance->hpcd);
333329
}
334-
#endif
335330

331+
#endif

features/unsupported/USBDevice/targets/TARGET_STM/USBHAL_STM32.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,25 @@
1919
#define USBHAL_STM32_H
2020

2121
#if defined(TARGET_NUCLEO_F207ZG) || \
22+
defined(TARGET_NUCLEO_F401RE) || \
23+
defined(TARGET_NUCLEO_F411RE) || \
2224
defined(TARGET_NUCLEO_F412ZG) || \
2325
defined(TARGET_NUCLEO_F429ZI) || \
2426
defined(TARGET_NUCLEO_F446ZE) || \
2527
defined(TARGET_NUCLEO_F767ZI) || \
2628
defined(TARGET_NUCLEO_F746ZG) || \
27-
defined(TARGET_DISCO_L476VG) || \
29+
defined(TARGET_DISCO_F429ZI) || \
30+
defined(TARGET_DISCO_F469NI) || \
31+
defined(TARGET_DISCO_F746NG) || \
32+
defined(TARGET_DISCO_F769NI) || \
2833
defined(TARGET_DISCO_L475VG_IOT01A) || \
29-
defined(TARGET_DISCO_F769NI)
34+
defined(TARGET_DISCO_L476VG)
3035
#include "USBHAL_IP_OTGFSHS.h"
3136

32-
#elif defined(TARGET_NUCLEO_F303ZE) || \
33-
defined(TARGET_NUCLEO_F103RB) || \
34-
defined(TARGET_DISCO_L072CZ_LRWAN1) || \
35-
defined(TARGET_DISCO_L053C8)
37+
#elif defined(TARGET_NUCLEO_F103RB) || \
38+
defined(TARGET_NUCLEO_F303ZE) || \
39+
defined(TARGET_DISCO_L053C8) || \
40+
defined(TARGET_DISCO_L072CZ_LRWAN1)
3641
#include "USBHAL_IP_DEVICE.h"
3742

3843
#else

0 commit comments

Comments
 (0)