HAL_FSUSB.h 3.1 KB

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