Skip to content

Commit

Permalink
Merge pull request #2392 from Krasutski/bugfix/ch32-hs-dcd
Browse files Browse the repository at this point in the history
bugfix(ch32-hs-dcd): fix ch32 DATAx managment and long packet transmit
  • Loading branch information
hathach committed May 21, 2024
2 parents a1abbd7 + 4a5b190 commit 1f259b3
Show file tree
Hide file tree
Showing 4 changed files with 318 additions and 293 deletions.
2 changes: 1 addition & 1 deletion hw/bsp/ch32v307/debug_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#include <ch32v30x.h>


#define UART_RINGBUFFER_SIZE_TX 64
#define UART_RINGBUFFER_SIZE_TX 128
#define UART_RINGBUFFER_MASK_TX (UART_RINGBUFFER_SIZE_TX-1)

static char tx_buf[UART_RINGBUFFER_SIZE_TX];
Expand Down
7 changes: 4 additions & 3 deletions hw/bsp/ch32v307/family.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ void board_init(void) {
SysTick_Config(SystemCoreClock / 1000);
#endif

usart_printf_init(115200);
usart_printf_init(CFG_BOARD_UART_BAUDRATE);

#if CFG_TUD_MAX_SPEED == OPT_MODE_HIGH_SPEED
// Use Highspeed USB
Expand Down Expand Up @@ -150,10 +150,11 @@ int board_uart_read(uint8_t* buf, int len) {

int board_uart_write(void const* buf, int len) {
int txsize = len;
const char* bufc = (const char*) buf;
while (txsize--) {
uart_write(*(uint8_t const*) buf);
buf++;
uart_write(*bufc++);
}
uart_sync();
return len;
}

Expand Down
31 changes: 19 additions & 12 deletions src/portable/wch/ch32_usbhs_reg.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,13 @@

// USB DEV AD
#define USBHS_DEV_AD_OFFSET 0x03

// USB FRAME_NO
#define USBHS_FRAME_NO_OFFSET 0x04
#define USBHS_FRAME_NO_NUM_MASK (0x7FF)
#define USBHS_FRAME_NO_MICROFRAME_SHIFT (11)
#define USBHS_FRAME_NO_MICROFRAME_MASK (0x7 << USBHS_FRAME_NO_MICROFRAME_SHIFT)

// USB SUSPEND
#define USBHS_SUSPEND_OFFSET 0x06
#define USBHS_DEV_REMOTE_WAKEUP (1 << 2)
Expand All @@ -74,7 +79,10 @@

// USB SPEED TYPE
#define USBHS_SPEED_TYPE_OFFSET 0x08
#define USBSPEED_MASK (0x03)
#define USBHS_SPEED_TYPE_MASK 0x03
#define USBHS_SPEED_TYPE_FULL 0
#define USBHS_SPEED_TYPE_HIGH 1
#define USBHS_SPEED_TYPE_LOW 2

// USB_MIS_ST
#define USBHS_MIS_ST_OFFSET 0x09
Expand All @@ -99,12 +107,16 @@
#define USBHS_ISO_ACT_FLAG (1 << 6)

// INT_ST
#define USBHS_INT_ST_OFFSET 0x0B
#define USBHS_DEV_UIS_IS_NAK (1 << 7)
#define USBHS_DEV_UIS_TOG_OK (1 << 6)
#define MASK_UIS_TOKEN (3 << 4)
#define MASK_UIS_ENDP (0x0F)
#define MASK_UIS_H_RES (0x0F)
#define USBHS_INT_ST_OFFSET 0x0B
#define USBHS_DEV_UIS_IS_NAK (1 << 7)
#define USBHS_DEV_UIS_TOG_OK (1 << 6)
#define MASK_UIS_TOKEN (3 << 4)
#define USBHS_TOKEN_PID_OUT (0 << 4)
#define USBHS_TOKEN_PID_SOF (1 << 4)
#define USBHS_TOKEN_PID_IN (2 << 4)
#define USBHS_TOKEN_PID_SETUP (3 << 4)
#define MASK_UIS_ENDP (0x0F)
#define MASK_UIS_H_RES (0x0F)

#define USBHS_TOGGLE_OK (0x40)
#define USBHS_HOST_RES (0x0f)
Expand Down Expand Up @@ -367,10 +379,5 @@
#define USBHS_UH_T_TOG_AUTO (1 << 5)
#define USBHS_UH_T_DATA_NO (1 << 6)

// 00: OUT, 01:SOF, 10:IN, 11:SETUP
#define PID_OUT 0
#define PID_SOF 1
#define PID_IN 2
#define PID_SETUP 3

#endif
Loading

0 comments on commit 1f259b3

Please sign in to comment.