18
18
#ifndef USBHALHOST_STM_H
19
19
#define USBHALHOST_STM_H
20
20
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
23
29
#else
24
30
#define USBHAL_IRQn OTG_FS_IRQn
25
31
#endif
@@ -75,11 +81,16 @@ static gpio_t gpio_powerpin;
75
81
#define USB_POWER_OFF 1
76
82
#define USB_POWERPIN_CONFIG {__HAL_RCC_GPIOC_CLK_ENABLE();gpio_init_out_ex(&gpio_powerpin, PC_4, USB_POWER_OFF);}
77
83
78
- #elif defined(TARGET_DISCO_F746NG )
84
+ #elif defined(TARGET_DISCO_F746NG_FS )
79
85
#define USB_POWER_ON 0
80
86
#define USB_POWER_OFF 1
81
87
#define USB_POWERPIN_CONFIG {__HAL_RCC_GPIOD_CLK_ENABLE();gpio_init_out_ex(&gpio_powerpin, PD_5, USB_POWER_OFF);}
82
88
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
+
83
94
#elif defined(TARGET_DISCO_L475VG_IOT01A )
84
95
#define USB_POWER_ON 0
85
96
#define USB_POWER_OFF 1
@@ -94,7 +105,7 @@ static gpio_t gpio_powerpin;
94
105
#error "USB power pin is not configured !"
95
106
#endif
96
107
97
-
108
+
98
109
void usb_vbus ( uint8_t state )
99
110
{
100
111
if (state == 0 ) {
@@ -115,21 +126,27 @@ USBHALHost::USBHALHost()
115
126
memset (HALPriv , 0 , sizeof (USBHALHost_Private_t ));
116
127
memInit ();
117
128
memset ((void * )usb_hcca , 0 , HCCA_SIZE );
129
+
118
130
hhcd = (HCD_HandleTypeDef * )usb_hcca ;
119
131
hhcd -> pData = (void * )HALPriv ;
120
132
121
- #if defined(TARGET_DISCO_F429ZI )
133
+ #if defined(TARGET_DISCO_F429ZI ) || defined( TARGET_DISCO_F746NG_HS )
122
134
hhcd -> Instance = USB_OTG_HS ;
123
135
hhcd -> Init .speed = HCD_SPEED_HIGH ;
136
+ hhcd -> Init .phy_itface = HCD_PHY_ULPI ;
124
137
#else
125
138
hhcd -> Instance = USB_OTG_FS ;
126
139
hhcd -> Init .speed = HCD_SPEED_FULL ;
140
+ hhcd -> Init .phy_itface = HCD_PHY_EMBEDDED ;
127
141
#endif
128
142
129
143
hhcd -> Init .Host_channels = 11 ;
130
144
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 ;
132
148
hhcd -> Init .use_external_vbus = 1 ;
149
+ hhcd -> Init .lpm_enable = 0 ;
133
150
134
151
HALPriv -> inst = this ;
135
152
HALPriv -> deviceConnected = & USBHALHost ::deviceConnected ;
@@ -138,7 +155,7 @@ USBHALHost::USBHALHost()
138
155
139
156
for (int i = 0 ; i < MAX_ENDPOINT ; i ++ ) {
140
157
edBufAlloc [i ] = false;
141
- HALPriv -> addr [i ]= (uint32_t )-1 ;
158
+ HALPriv -> addr [i ] = (uint32_t )-1 ;
142
159
}
143
160
144
161
for (int i = 0 ; i < MAX_TD ; i ++ ) {
@@ -178,18 +195,36 @@ USBHALHost::USBHALHost()
178
195
pin_function (PB_14 , STM_PIN_DATA (STM_MODE_AF_PP , GPIO_NOPULL , GPIO_AF12_OTG_HS_FS )); // DM
179
196
pin_function (PB_15 , STM_PIN_DATA (STM_MODE_AF_PP , GPIO_NOPULL , GPIO_AF12_OTG_HS_FS )); // DP
180
197
//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);
184
201
185
- #elif defined(TARGET_DISCO_F746NG )
202
+ #elif defined(TARGET_DISCO_F746NG_FS )
186
203
__HAL_RCC_GPIOA_CLK_ENABLE ();
187
204
pin_function (PA_11 , STM_PIN_DATA (STM_MODE_AF_PP , GPIO_NOPULL , GPIO_AF10_OTG_FS )); // DM
188
205
pin_function (PA_12 , STM_PIN_DATA (STM_MODE_AF_PP , GPIO_NOPULL , GPIO_AF10_OTG_FS )); // DP
189
206
pin_function (PA_10 , STM_PIN_DATA (STM_MODE_AF_OD , GPIO_PULLUP , GPIO_AF10_OTG_FS )); // ID
190
207
__HAL_RCC_GPIOJ_CLK_ENABLE ();
191
208
pin_function (PJ_12 , STM_PIN_DATA (STM_MODE_AF_PP , GPIO_NOPULL , GPIO_AF10_OTG_FS )); // VBUS
192
209
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
+
193
228
#elif defined(TARGET_DISCO_L476VG )
194
229
__HAL_RCC_GPIOA_CLK_ENABLE ();
195
230
pin_function (PA_11 , STM_PIN_DATA (STM_MODE_AF_PP , GPIO_NOPULL , GPIO_AF10_OTG_FS )); // DM
@@ -207,7 +242,8 @@ USBHALHost::USBHALHost()
207
242
// Enable clocks
208
243
__HAL_RCC_SYSCFG_CLK_ENABLE ();
209
244
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 ();
211
247
__HAL_RCC_USB_OTG_HS_CLK_ENABLE ();
212
248
#else
213
249
__HAL_RCC_USB_OTG_FS_CLK_ENABLE ();
0 commit comments