Skip to content

Commit 6cde061

Browse files
makarenyafpistm
authored andcommitted
[USB] PMA Addresses correction
1 parent a81910e commit 6cde061

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

cores/arduino/stm32/usb/usbd_conf.c

+11-10
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@
2727
#else
2828
/* Private typedef -----------------------------------------------------------*/
2929
/* Private define ------------------------------------------------------------*/
30+
/* Size in words, byte size divided by 2 */
31+
#define PMA_EP0_OUT_ADDR (8 * 4)
32+
#define PMA_EP0_IN_ADDR (PMA_EP0_OUT_ADDR + USB_MAX_EP0_SIZE / 2)
33+
#define PMA_CDC_OUT_ADDR (PMA_EP0_IN_ADDR + USB_MAX_EP0_SIZE / 2)
34+
#define PMA_CDC_IN_ADDR (PMA_CDC_OUT_ADDR + USB_FS_MAX_PACKET_SIZE / 2)
35+
#define PMA_CDC_CMD_ADDR (PMA_CDC_IN_ADDR + USB_FS_MAX_PACKET_SIZE / 2)
3036
/* Private macro -------------------------------------------------------------*/
3137
/* Private variables ---------------------------------------------------------*/
3238
PCD_HandleTypeDef g_hpcd;
@@ -483,16 +489,11 @@ USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
483489
HAL_PCDEx_SetTxFiFo(&g_hpcd, 1, 0x40);
484490
HAL_PCDEx_SetTxFiFo(&g_hpcd, 2, 0x40);
485491
#else
486-
uint32_t pma_addr = 8 * 3; /* 3 endpoints, 8 bytes for each in PMA BTABLE */
487-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x00, PCD_SNG_BUF, pma_addr);
488-
pma_addr += USB_MAX_EP0_SIZE;
489-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x80, PCD_SNG_BUF, pma_addr);
490-
pma_addr += USB_MAX_EP0_SIZE;
491-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x81, PCD_SNG_BUF, pma_addr);
492-
pma_addr += USB_FS_MAX_PACKET_SIZE;
493-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x01, PCD_SNG_BUF, pma_addr);
494-
pma_addr += USB_FS_MAX_PACKET_SIZE;
495-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x82, PCD_SNG_BUF, pma_addr);
492+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x00, PCD_SNG_BUF, PMA_EP0_OUT_ADDR);
493+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x80, PCD_SNG_BUF, PMA_EP0_IN_ADDR);
494+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x01, PCD_SNG_BUF, PMA_CDC_OUT_ADDR);
495+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x81, PCD_SNG_BUF, PMA_CDC_IN_ADDR);
496+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x82, PCD_SNG_BUF, PMA_CDC_CMD_ADDR);
496497
#endif
497498
#endif /* USE_USB_HS */
498499
return USBD_OK;

0 commit comments

Comments
 (0)