cancel
Showing results for 
Search instead for 
Did you mean: 

ll_usb in STM32H7RS hal driver uses a Reserved setting of OTG_GAHBCFG.HBSTLEN

VSF
Associate

https://github.com/STMicroelectronics/stm32h7rsxx-hal-driver/blob/ecc746788b9843dd4295f0acb58b3d15c3477abb/Src/stm32h7rsxx_ll_usb.c

In stm32h7rsxx_ll_usb.c in function USB_CoreInit:

if (USBx == USB_OTG_HS)
{
if (cfg.phy_itface == USB_OTG_HS_EMBEDDED_PHY)
{
/* Init The UTMI Interface */
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_TSDPS);
}

/* Reset after a PHY select */
ret = USB_CoreReset(USBx);

if (cfg.dma_enable == 1U)
{
USBx->GAHBCFG |= USB_OTG_GAHBCFG_HBSTLEN_2;
USBx->GAHBCFG |= USB_OTG_GAHBCFG_DMAEN;
}
}

It set USB_OTG_GAHBCFG_HBSTLEN_2 in GAHBCFG, so GAHBCFG.HBSTLEN should be 0b0100.

But in RM0477(Reference Manual for STM32H7RS):

Bits 4:1 HBSTLEN[3:0]: Burst length/type

0000 Single: Bus transactions use single 32 bit accesses (not recommended)

0001 INCR: Bus transactions use unspecified length accesses (not recommended, uses the

INCR AHB bus command)

0011 INCR4: Bus transactions target 4x 32 bit accesses

0101 INCR8: Bus transactions target 8x 32 bit accesses

0111 INCR16: Bus transactions based on 16x 32 bit accesses

Others: Reserved

 

But 0b0100 for HBSTLEN is Reserved. So the code is correct or the RM0477 is correct?

0 REPLIES 0