Skip to content

Commit 47d6535

Browse files
makarenyafpistm
authored andcommitted
[USB] PMA Addresses correction
1 parent 8216c2a commit 47d6535

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
@@ -26,6 +26,12 @@
2626
#else
2727
/* Private typedef -----------------------------------------------------------*/
2828
/* Private define ------------------------------------------------------------*/
29+
/* Size in words, byte size divided by 2 */
30+
#define PMA_EP0_OUT_ADDR (8 * 4)
31+
#define PMA_EP0_IN_ADDR (PMA_EP0_OUT_ADDR + USB_MAX_EP0_SIZE / 2)
32+
#define PMA_CDC_OUT_ADDR (PMA_EP0_IN_ADDR + USB_MAX_EP0_SIZE / 2)
33+
#define PMA_CDC_IN_ADDR (PMA_CDC_OUT_ADDR + USB_FS_MAX_PACKET_SIZE / 2)
34+
#define PMA_CDC_CMD_ADDR (PMA_CDC_IN_ADDR + USB_FS_MAX_PACKET_SIZE / 2)
2935
/* Private macro -------------------------------------------------------------*/
3036
/* Private variables ---------------------------------------------------------*/
3137
PCD_HandleTypeDef g_hpcd;
@@ -481,16 +487,11 @@ USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
481487
HAL_PCDEx_SetTxFiFo(&g_hpcd, 1, 0x40);
482488
HAL_PCDEx_SetTxFiFo(&g_hpcd, 2, 0x40);
483489
#else
484-
uint32_t pma_addr = 8 * 3; /* 3 endpoints, 8 bytes for each in PMA BTABLE */
485-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x00, PCD_SNG_BUF, pma_addr);
486-
pma_addr += USB_MAX_EP0_SIZE;
487-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x80, PCD_SNG_BUF, pma_addr);
488-
pma_addr += USB_MAX_EP0_SIZE;
489-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x81, PCD_SNG_BUF, pma_addr);
490-
pma_addr += USB_FS_MAX_PACKET_SIZE;
491-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x01, PCD_SNG_BUF, pma_addr);
492-
pma_addr += USB_FS_MAX_PACKET_SIZE;
493-
HAL_PCDEx_PMAConfig(&g_hpcd, 0x82, PCD_SNG_BUF, pma_addr);
490+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x00, PCD_SNG_BUF, PMA_EP0_OUT_ADDR);
491+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x80, PCD_SNG_BUF, PMA_EP0_IN_ADDR);
492+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x01, PCD_SNG_BUF, PMA_CDC_OUT_ADDR);
493+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x81, PCD_SNG_BUF, PMA_CDC_IN_ADDR);
494+
HAL_PCDEx_PMAConfig(&g_hpcd, 0x82, PCD_SNG_BUF, PMA_CDC_CMD_ADDR);
494495
#endif
495496
#endif /* USE_USB_HS */
496497
return USBD_OK;

0 commit comments

Comments
 (0)