Skip to content

Commit 755865d

Browse files
committed
STM32 USBHost: Improvements in USBHALHost_STM.h
1 parent 377db59 commit 755865d

File tree

1 file changed

+48
-12
lines changed

1 file changed

+48
-12
lines changed

features/unsupported/USBHost/targets/TARGET_STM/USBHALHost_STM.h

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@
1818
#ifndef USBHALHOST_STM_H
1919
#define USBHALHOST_STM_H
2020

21-
#if defined(TARGET_DISCO_F429ZI)
22-
#define USBHAL_IRQn OTG_HS_IRQn // Because GPIOB pins are used
21+
#if defined(TARGET_DISCO_F746NG)
22+
// Select only one line
23+
#define TARGET_DISCO_F746NG_FS
24+
//#define TARGET_DISCO_F746NG_HS
25+
#endif
26+
27+
#if defined(TARGET_DISCO_F429ZI) || defined(TARGET_DISCO_F746NG_HS)
28+
#define USBHAL_IRQn OTG_HS_IRQn
2329
#else
2430
#define USBHAL_IRQn OTG_FS_IRQn
2531
#endif
@@ -75,11 +81,16 @@ static gpio_t gpio_powerpin;
7581
#define USB_POWER_OFF 1
7682
#define USB_POWERPIN_CONFIG {__HAL_RCC_GPIOC_CLK_ENABLE();gpio_init_out_ex(&gpio_powerpin, PC_4, USB_POWER_OFF);}
7783

78-
#elif defined(TARGET_DISCO_F746NG)
84+
#elif defined(TARGET_DISCO_F746NG_FS)
7985
#define USB_POWER_ON 0
8086
#define USB_POWER_OFF 1
8187
#define USB_POWERPIN_CONFIG {__HAL_RCC_GPIOD_CLK_ENABLE();gpio_init_out_ex(&gpio_powerpin, PD_5, USB_POWER_OFF);}
8288

89+
#elif defined(TARGET_DISCO_F746NG_HS)
90+
#define USB_POWER_ON 0
91+
#define USB_POWER_OFF 1
92+
#define USB_POWERPIN_CONFIG {}
93+
8394
#elif defined(TARGET_DISCO_L475VG_IOT01A)
8495
#define USB_POWER_ON 0
8596
#define USB_POWER_OFF 1
@@ -94,7 +105,7 @@ static gpio_t gpio_powerpin;
94105
#error "USB power pin is not configured !"
95106
#endif
96107

97-
108+
98109
void usb_vbus( uint8_t state)
99110
{
100111
if (state == 0) {
@@ -115,21 +126,27 @@ USBHALHost::USBHALHost()
115126
memset(HALPriv, 0, sizeof(USBHALHost_Private_t));
116127
memInit();
117128
memset((void*)usb_hcca, 0, HCCA_SIZE);
129+
118130
hhcd = (HCD_HandleTypeDef *)usb_hcca;
119131
hhcd->pData = (void*)HALPriv;
120132

121-
#if defined(TARGET_DISCO_F429ZI)
133+
#if defined(TARGET_DISCO_F429ZI) || defined(TARGET_DISCO_F746NG_HS)
122134
hhcd->Instance = USB_OTG_HS;
123135
hhcd->Init.speed = HCD_SPEED_HIGH;
136+
hhcd->Init.phy_itface = HCD_PHY_ULPI;
124137
#else
125138
hhcd->Instance = USB_OTG_FS;
126139
hhcd->Init.speed = HCD_SPEED_FULL;
140+
hhcd->Init.phy_itface = HCD_PHY_EMBEDDED;
127141
#endif
128142

129143
hhcd->Init.Host_channels = 11;
130144
hhcd->Init.dma_enable = 0; // for now failed with dma
131-
hhcd->Init.phy_itface = HCD_PHY_EMBEDDED;
145+
hhcd->Init.low_power_enable = 0;
146+
hhcd->Init.Sof_enable = 0;
147+
hhcd->Init.vbus_sensing_enable = 0;
132148
hhcd->Init.use_external_vbus = 1;
149+
hhcd->Init.lpm_enable = 0;
133150

134151
HALPriv->inst = this;
135152
HALPriv->deviceConnected = &USBHALHost::deviceConnected;
@@ -138,7 +155,7 @@ USBHALHost::USBHALHost()
138155

139156
for (int i = 0; i < MAX_ENDPOINT; i++) {
140157
edBufAlloc[i] = false;
141-
HALPriv->addr[i]=(uint32_t)-1;
158+
HALPriv->addr[i] = (uint32_t)-1;
142159
}
143160

144161
for (int i = 0; i < MAX_TD; i++) {
@@ -178,18 +195,36 @@ USBHALHost::USBHALHost()
178195
pin_function(PB_14, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_OTG_HS_FS)); // DM
179196
pin_function(PB_15, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF12_OTG_HS_FS)); // DP
180197
//pin_function(PB_12, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF12_OTG_HS_FS)); // ID
181-
//pin_function(PB_13, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // VBUS
182-
gpio_t pin_vbus;
183-
gpio_init_in(&pin_vbus, PB_13);
198+
pin_function(PB_13, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); // VBUS
199+
//gpio_t pin_vbus;
200+
//gpio_init_in(&pin_vbus, PB_13);
184201

185-
#elif defined(TARGET_DISCO_F746NG)
202+
#elif defined(TARGET_DISCO_F746NG_FS)
186203
__HAL_RCC_GPIOA_CLK_ENABLE();
187204
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // DM
188205
pin_function(PA_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // DP
189206
pin_function(PA_10, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG_FS)); // ID
190207
__HAL_RCC_GPIOJ_CLK_ENABLE();
191208
pin_function(PJ_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // VBUS
192209

210+
#elif defined(TARGET_DISCO_F746NG_HS)
211+
__HAL_RCC_GPIOA_CLK_ENABLE();
212+
__HAL_RCC_GPIOB_CLK_ENABLE();
213+
__HAL_RCC_GPIOC_CLK_ENABLE();
214+
__HAL_RCC_GPIOH_CLK_ENABLE();
215+
pin_function(PA_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // CLK
216+
pin_function(PA_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D0
217+
pin_function(PB_0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D1
218+
pin_function(PB_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D2
219+
pin_function(PB_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D3
220+
pin_function(PB_10, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D4
221+
pin_function(PB_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D5
222+
pin_function(PB_12, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D6
223+
pin_function(PB_13, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // D7
224+
pin_function(PC_0, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // STP
225+
pin_function(PH_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // NXT
226+
pin_function(PC_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_HS)); // DIR
227+
193228
#elif defined(TARGET_DISCO_L476VG)
194229
__HAL_RCC_GPIOA_CLK_ENABLE();
195230
pin_function(PA_11, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF10_OTG_FS)); // DM
@@ -207,7 +242,8 @@ USBHALHost::USBHALHost()
207242
// Enable clocks
208243
__HAL_RCC_SYSCFG_CLK_ENABLE();
209244

210-
#if defined(TARGET_DISCO_F429ZI)
245+
#if defined(TARGET_DISCO_F429ZI) || defined(TARGET_DISCO_F746NG_HS)
246+
__HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE();
211247
__HAL_RCC_USB_OTG_HS_CLK_ENABLE();
212248
#else
213249
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();

0 commit comments

Comments
 (0)