stm32f730z8 USB HS težava

Vse kar je v povezavi z ARM-Cotrex-M procesorji. Sem spada tako HW kot SW.

Moderator: tilz0R

stm32f730z8 USB HS težava

OdgovorNapisal/-a jure94 » 29 Apr 2020, 00:37

Uporabljam stm32f730z8, kjer bi rad uporabil USB HS kot VCP. IDE je stm32cubeide, kateremu sem dal še eno možnost (ko je izšel sem ga stestiral in preprosta koda ni delovala, medtem ko je identična koda delala v uVision).

USB HS je nastavljan kot device only, v middleware pa imam izbran VCP. Drugih nastavitev niti nisem spreminjal. Zunanji kristal je 24 MHz, HCLK je nastavljen na 216 MHz.
Kar sem dodal kode, je samo za prižiganje par LED, ki so na PCBju, ker trenutno nimam debuggerja (bolj točno primernega kabla za priklop debuggerja).

Kolikor sem lahko, sem ugotovil, da je problem v stm32f7xx_hal_pcd.c v HAL_PCD_Init(), ki ne vrne HAL_OK in gre funkcija USBD_LL_Init() v usbd_conf.c v error handler. To funkcijo kliče USBD_Init(), ki je v usbd_core.c to pa MX_USB_DEVICE_Init(), ki je v usb_device.c.

Vzporedno v main zanki utripam z LED, kar dela brez problema.

Kje bi bila lahko težava?
Če namesto HS uporabim FS (drug par pinov in drug konektor), je bolje. Enumeracija VCP sicer ni ok, HID pa deluje.
Uporabniški avatar
jure94
 
Prispevkov: 957
Pridružen: 18 Jan 2015, 01:33
Kraj: Ljubljana
Zahvalil se je: 47 krat
Prejel zahvalo: 108 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 10

Re: stm32f730z8 USB HS težava

OdgovorNapisal/-a jure94 » 29 Apr 2020, 00:54

Ugotovil sem še tole.
V funkciji HAL_PCD_Init funkcija USB_CoreInit ne vrne HAL_OK.
V tej funkciji pride do napake nekje na začetku. USB_HS_PHYCInit ne vrne HAL OK. Izgleda da je problem pri LDOju, ker predvidevam, da USB_HS_PHYCInit vrne HAL_TIMEOUT

To je del kode. Vmes sem dodal še prižiganje LED, ki se prižge.
Koda: Izberi vse
static HAL_StatusTypeDef USB_HS_PHYCInit(USB_OTG_GlobalTypeDef *USBx)
{
  UNUSED(USBx);
  uint32_t count = 0U;

  /* Enable LDO */
  USB_HS_PHYC->USB_HS_PHYC_LDO |= USB_HS_PHYC_LDO_ENABLE;

  /* wait for LDO Ready */
  while ((USB_HS_PHYC->USB_HS_PHYC_LDO & USB_HS_PHYC_LDO_STATUS) == 0U)
  {
    if (++count > 200000U)
    {
      HAL_GPIO_WritePin(STATUS_LED_4_GPIO_Port, STATUS_LED_4_Pin, GPIO_PIN_SET);
      return HAL_TIMEOUT;
    }
  }


Več kot to bom pa brez debuggerja težko.
Uporabniški avatar
jure94
 
Prispevkov: 957
Pridružen: 18 Jan 2015, 01:33
Kraj: Ljubljana
Zahvalil se je: 47 krat
Prejel zahvalo: 108 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 10

Re: stm32f730z8 USB HS težava

OdgovorNapisal/-a tilz0R » 29 Apr 2020, 09:12

Nisi pa povedal kakšen hardware uporabljaš.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 2385
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 264 krat
Prejel zahvalo: 763 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: stm32f730z8 USB HS težava

OdgovorNapisal/-a jure94 » 29 Apr 2020, 09:53

To pa res nisem. Gre za lastno vezje, ki pa sicer ni nič posebnega.
Povezava iz USB B konektorja je preko ECMF02-4CMX8. VDDUSB je napajan iz istega vira kot vsi ostali napajalni pini, prav tako imajo vsi svoj 100nF kondenzator.
Napajanje je 24 V in DC/DC pretvornik na 3,3 V. LDOja zaenkrat nisem uporabljal, ampak mi napajanje izgleda ok.

5V iz USB ni uporabljenih za napajanje. Sicer jih imam prek delilnika na pinu 74, ampak zaenkrat tega še ne uporabljam (če sploh bom).

Na pinu 75 je 3k 1% upor, kot naj bi bil, na pinu 76 pa 2,2uF kondenzator.
Mogoče mi manjka še 1uF na VDDUSB? Ampak ker USB FS deluje, mislim, da je VDDUSB ok.
Uporabniški avatar
jure94
 
Prispevkov: 957
Pridružen: 18 Jan 2015, 01:33
Kraj: Ljubljana
Zahvalil se je: 47 krat
Prejel zahvalo: 108 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 10

Re: stm32f730z8 USB HS težava

OdgovorNapisal/-a jure94 » 16 Jun 2020, 12:35

Končno rešil problem. CubeMX (oz. CubeIDE) ni vklopil clock za PHY. Ni prvič, ko sem imel s podobno stvarjo težave (nazadnje je bil to ADC).
Zraven sem pa odkril še napako v RM, kjer piše
Bit 2 LDO_DISABLE: Controls disable of the High Speed PHY's LDO.
0: LDO enabled
1: LDO disabled

Dejansko je pa ravno obratno. S tem, da je enaka napaka potem še v kodi in - in - da + in je vse ok :roll:
V kodi je define tak:
Koda: Izberi vse
#define USB_HS_PHYC_LDO_ENABLE                   USB_HS_PHYC_LDO_DISABLE

USB_HS_PHYC_LDO_DISABLE ima vrednost 1, kar je glede na RM prav, ampak je napaka v RM, torej je define na koncu pravilen za enable.
Uporabniški avatar
jure94
 
Prispevkov: 957
Pridružen: 18 Jan 2015, 01:33
Kraj: Ljubljana
Zahvalil se je: 47 krat
Prejel zahvalo: 108 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 10

Re: stm32f730z8 USB HS težava

OdgovorNapisal/-a tilz0R » 16 Jun 2020, 12:36

jure94 je napisal/-a:Končno rešil problem. CubeMX (oz. CubeIDE) ni vklopil clock za PHY. Ni prvič, ko sem imel s podobno stvarjo težave (nazadnje je bil to ADC).
Zraven sem pa odkril še napako v RM, kjer piše
Bit 2 LDO_DISABLE: Controls disable of the High Speed PHY's LDO.
0: LDO enabled
1: LDO disabled

Dejansko je pa ravno obratno. S tem, da je enaka napaka potem še v kodi in - in - da + in je vse ok :roll:
V kodi je define tak:
Koda: Izberi vse
#define USB_HS_PHYC_LDO_ENABLE                   USB_HS_PHYC_LDO_DISABLE

USB_HS_PHYC_LDO_DISABLE ima vrednost 1, kar je glede na RM prav, ampak je napaka v RM, torej je define na koncu pravilen za enable.


Verzija MX?
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 2385
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 264 krat
Prejel zahvalo: 763 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: stm32f730z8 USB HS težava

OdgovorNapisal/-a jure94 » 16 Jun 2020, 12:48

Uporabljam IDE, ampak updater pravi, da je zadnja verzija:
STM32CubeIDE
Version: 1.3.1
Build: 6291_20200406_0752 (UTC)

STM32CubeMX 5.6.1.202004052303
Uporabniški avatar
jure94
 
Prispevkov: 957
Pridružen: 18 Jan 2015, 01:33
Kraj: Ljubljana
Zahvalil se je: 47 krat
Prejel zahvalo: 108 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 10


Vrni se na ARM-Cortex-M

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost