2015-12-01 02:39 AM
Hi, I use the STM32F3xx_HAL_Driver : Version V1.1.1 / 19-June-2015.
I use STM32F302RCT6 and STM32F303RCT6 devices and the USB device doesn’t work because the definitions of these MCU don’t match with the documentation ( RM0316 and RM0365). Note: Info on RM0313 Rev4 page 807 table 105 is incomplete. I’ve found some incorrect definitions on “stm32f3xx_hal_pcd_ex.c� file: STM32F302xC is in wrong section, the MCU has the same USB_FS than STM32F303xC ! Line 148 : #if defined(STM32F303xC) || \ defined(STM32F303x8) || defined(STM32F334x8) || \ defined(STM32F301x8) || \ defined(STM32F373xC) || defined(STM32F378xx) line 204: #if defined(STM32F302xE) || defined(STM32F303xE) || \ defined(STM32F302xC) || \ <---- wrong section for this MCU ! defined(STM32F302x8) PCD_WritePMA, PCD_ReadPMA functions depend on access scheme type, so I decided to re-write these functions to select automatically the right access method. To identify this method, I write a known symbol on USB PMA buffer base address + 2. On 1x16bits/word devices, this symbol can't be written and the read bytes are always set to zero. On 2x16bits/word devices, the read bytes match with the symbol. To optimize the access, I use DMA to transfer PMA buffer to (or from) the USB user buffer. I attach the modified files with this post!2015-12-08 05:34 AM
The version V1.2.0 seems to be Ok