1 /* 2 ****************************************************************************** 3 * @file HAL_Uart.h 4 * @version V1.0.0 5 * @date 2020 6 * @brief Header file of UART HAL module. 7 ****************************************************************************** 8 */ 9 #ifndef __HAL_FSUSB_H__ 10 #define __HAL_FSUSB_H__ 11 12 #include "ACM32Fxx_HAL.h" 13 14 15 #define HIGH_SPEED 1 16 #define FULL_SPEED 0 17 18 #define USB_EP0 0 19 #define USB_EP1 1 20 #define USB_EP2 2 21 #define USB_EP3 3 22 #define USB_EP4 4 23 24 #define USB_EP_IN USB_EP1 25 #define USB_EP_OUT USB_EP1 26 27 #define EP_DIR_IN 0x80 28 #define EP_DIR_OUT 0x00 29 30 #define HID_REPORT_SIZE 1024 31 32 #define EP0_MAX_PACKET_SIZE 64 33 #define EPX_MAX_PACKET_SIZE 64 34 //#define EPX_MAX_PACKET_SIZE_HS 512 35 //#define EPX_MAX_PACKET_SIZE_FS 64 36 37 #define MASK_EPX_IN(x) (1<<(6+3*x)) 38 #define MASK_EPX_OUT(x) (1<<(7+3*x)) 39 #define MASK_EPX_ACK(x) (1<<(8+3*x)) 40 #define MASK_EPX_TIMEOUT(x) (1<< (25+x)) 41 42 typedef __PACKED_STRUCT _device_request 43 { 44 uint8_t bmRequestType; 45 uint8_t bRequest; 46 uint16_t wValue; 47 uint16_t wIndex; 48 uint16_t wLength; 49 } DEVICE_REQUEST; 50 51 52 53 #define USB_BUS_RESET 0x01 54 #define USB_SUSPEND 0x02 55 #define USB_RESUME 0x04 56 #define USB_SOF 0x08 57 #define USB_SETUPTOK 0x10 58 #define USB_EP0_SETUP_PACKET 0x20 59 #define USB_EP0_IN 0x40 60 #define USB_EP0_OUT_PACKET 0x80 61 #define USB_EP0_ACK 0x100 62 #define USB_EP1_IN 0x200 63 #define USB_EP1_OUT_PACKET 0x400 64 #define USB_EP1_ACK 0x800 65 #define USB_EP2_IN 0x1000 66 #define USB_EP2_OUT_PACKET 0x2000 67 #define USB_EP2_ACK 0x4000 68 #define USB_EP3_IN 0x8000 69 #define USB_EP3_OUT_PACKET 0x10000 70 #define USB_EP3_ACK 0x20000 71 #define USB_EP4_IN 0x40000 72 #define USB_EP4_OUT_PACKET 0x80000 73 #define USB_EP4_ACK 0x100000 74 #define USB_IN_TIMEOUT 0x200000 75 #define USB_SETADDR 0x400000 76 #define USB_CRC_ERR 0x800000 77 #define USB_MORETHAN_64 0x1000000 78 #define USB_EP0_IN_ERR 0x2000000 79 #define USB_EP1_IN_ERR 0x4000000 80 #define USB_EP2_IN_ERR 0x8000000 81 #define USB_EP3_IN_ERR 0x10000000 82 #define USB_EP4_IN_ERR 0x20000000 83 #define USB_NOEOP_ERR 0x40000000 84 #define USB_TOGGLE_ERR 0x80000000 85 86 87 88 #define ERROR_OUT_OUT 4 // received a same out packet 89 #define ERROR_IN_OUT 2 // received a pakcet when try to send packet 90 91 92 93 uint32_t HAL_FSUSB_Init(void); 94 void HAL_FSUSB_Read_EP_MEM8(uint8_t *dst, uint32_t length, uint32_t fifo_offset, uint8_t ep_index); 95 uint8_t HAL_FSUSB_Send_Data(uint8_t *buffer,uint32_t length,uint8_t ep_index); 96 void HAL_FSUSB_Receive_Data(uint8_t *buffer,uint32_t length,uint8_t ep_index); 97 uint16_t HAL_USB_Get_Stall_Status(uint8_t ep_index, uint8_t ep_dir); 98 void HAL_FSUSB_EP0_Send_Empty_Packet(void); 99 void HAL_FSUSB_EP0_Send_Stall(void); 100 void usb_clear_stall(uint8_t ep_index, uint8_t ep_dir); 101 void usb_send_stall(uint8_t ep_index, uint8_t ep_dir); 102 uint16_t HAL_FSUSB_Get_FIFO_Length(uint8_t ep_index); 103 104 #endif 105 106