2023-04-03 07:59 AM
I am having trouble with USB-FS communication with STM32F107RCT7.
When the board is connected to the PC via microUSB, the PC does not even detect something is connected to the PC.
I know that the PC detects a new device via a pull-up resistor on either DP or DM lines. In my case there needs to be 3.3V on DP pin via an Internal Resistor inside the MCU.
Checked the voltage on DP, it is zero.
Tried to debug the issue in STMCubeIDE:
I found the function responsible for USB initialization: HAL_PCD_MspInit
But there were no pin initialization for DP or DM pins.
Throughout the whole project I could'tn find any initialization on DP or DM pins.
Added the following code in HAL_PCD_Mspinit
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = USB_FS_DP_Pin|USB_FS_DM_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(USB_FS_DP_GPIO_Port, &GPIO_InitStruct);
Still no 3.3V on DP pin.
I cheked the DP pin on nucleo F767ZI board. There is indeed 3.3V on DP pin.
MCU is driven 25MHz
Am I missing something, could there be a solution to my problem?
Solved! Go to Solution.
2023-04-04 05:06 AM
Hello @KOkte.1
First let me thank you for posting .
Actually I tried to reproduce the issue mentioned above using the latest version 6.8.0 , I found that both functions " HAL_PCD_MspInit" and "HAL_PCD_MspDeInit" are missing.
So ,it has been reported to STM32CubeMX development team .
Internal ticket number:149052(This is an internal tracking number and is not accessible or usable by customers).
I will keep you posted with updates.
Thx
Ghofrane
2023-04-04 05:06 AM
Hello @KOkte.1
First let me thank you for posting .
Actually I tried to reproduce the issue mentioned above using the latest version 6.8.0 , I found that both functions " HAL_PCD_MspInit" and "HAL_PCD_MspDeInit" are missing.
So ,it has been reported to STM32CubeMX development team .
Internal ticket number:149052(This is an internal tracking number and is not accessible or usable by customers).
I will keep you posted with updates.
Thx
Ghofrane
2023-04-04 05:18 AM
Hello @KOkte.1
For the moment let's try to add this code
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
Thx
Ghofrane
2023-04-04 05:27 AM
Hello Ghofane,
thank you very much for your response and interest.
I figured out by chance that without even assigning USB to these pins, USB is assigned.
I think the default assignment of these pins is USB. But I'm not sure.
But it would be better to see this assignment somewhere in the code. Because it becomes confusing this way.
On the topic of USB being not detected.
I figured that the VBUS needs to be detected by the microcontroller to to be detected by the PC.
This is stated in the USB FS specification. And in STs AN4879, USB hardware and PCB guidelines using STM32 MCUs.
Also in a forum, I read something like this.
disable VBUS activation, set PA9 output and set it to default High.
https://electronics.stackexchange.com/questions/251856/usb-on-stm32f107rct-and-stm32cubemx
When I did these steps the microcontroller is detected as a USB device by the PC.
But I think the safest option is to sense the VBUS.