tusb_config.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021-10-20 tfx2001 first version
  9. */
  10. #ifndef _TUSB_CONFIG_H_
  11. #define _TUSB_CONFIG_H_
  12. #include <rtdef.h>
  13. #include <rtconfig.h>
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. //--------------------------------------------------------------------
  18. // COMMON CONFIGURATION
  19. //--------------------------------------------------------------------
  20. #if defined(SOC_SERIES_STM32F0)
  21. #define CFG_TUSB_MCU OPT_MCU_STM32F0
  22. #elif defined(SOC_SERIES_STM32F1)
  23. #define CFG_TUSB_MCU OPT_MCU_STM32F1
  24. #elif defined(SOC_SERIES_STM32F2)
  25. #define CFG_TUSB_MCU OPT_MCU_STM32F2
  26. #elif defined(SOC_SERIES_STM32F3)
  27. #define CFG_TUSB_MCU OPT_MCU_STM32F3
  28. #elif defined(SOC_SERIES_STM32F4)
  29. #define CFG_TUSB_MCU OPT_MCU_STM32F4
  30. #elif defined(SOC_SERIES_STM32F7)
  31. #define CFG_TUSB_MCU OPT_MCU_STM32F7
  32. #elif defined(SOC_SERIES_STM32H7)
  33. #define CFG_TUSB_MCU OPT_MCU_STM32H7
  34. #elif defined(SOC_SERIES_STM32L0)
  35. #define CFG_TUSB_MCU OPT_MCU_STM32L0
  36. #elif defined(SOC_SERIES_STM32L1)
  37. #define CFG_TUSB_MCU OPT_MCU_STM32L1
  38. #elif defined(SOC_SERIES_STM32L4)
  39. #define CFG_TUSB_MCU OPT_MCU_STM32L4
  40. #elif defined(SOC_NRF52840)
  41. #define CFG_TUSB_MCU OPT_MCU_NRF5X
  42. #elif defined(SOC_HPM6000)
  43. #define CFG_TUSB_MCU OPT_MCU_HPM
  44. #elif defined(SOC_RP2040)
  45. #define CFG_TUSB_MCU OPT_MCU_RP2040
  46. #else
  47. #error "Not support for current MCU"
  48. #endif
  49. #define CFG_TUSB_OS OPT_OS_RTTHREAD
  50. //--------------------------------------------------------------------
  51. // DEBUG CONFIGURATION
  52. //--------------------------------------------------------------------
  53. #ifdef CFG_TUSB_DEBUG
  54. #define CFG_TUSB_DEBUG_PRINTF rt_kprintf
  55. #endif /* CFG_TUSB_DEBUG */
  56. #ifndef BOARD_DEVICE_RHPORT_NUM
  57. #define BOARD_DEVICE_RHPORT_NUM PKG_TINYUSB_RHPORT_NUM
  58. #endif
  59. #ifndef BOARD_DEVICE_RHPORT_SPEED
  60. #define BOARD_DEVICE_RHPORT_SPEED PKG_TINYUSB_DEVICE_PORT_SPEED
  61. #endif
  62. #if BOARD_DEVICE_RHPORT_NUM == 0
  63. #define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED)
  64. #elif BOARD_DEVICE_RHPORT_NUM == 1
  65. #define CFG_TUSB_RHPORT1_MODE (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED)
  66. #else
  67. #error "Incorrect RHPort configuration"
  68. #endif
  69. /* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
  70. * Tinyusb use follows macros to declare transferring memory so that they can be put
  71. * into those specific section.
  72. * e.g
  73. * - CFG_TUSB_MEM SECTION : __attribute__ (( section(".usb_ram") ))
  74. * - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4)))
  75. */
  76. #ifndef CFG_TUSB_MEM_SECTION
  77. #ifdef rt_section
  78. #define CFG_TUSB_MEM_SECTION rt_section(PKG_TINYUSB_MEM_SECTION)
  79. #else
  80. #define CFG_TUSB_MEM_SECTION RT_SECTION(PKG_TINYUSB_MEM_SECTION)
  81. #endif
  82. #endif
  83. #ifndef CFG_TUSB_MEM_ALIGN
  84. #ifdef rt_align
  85. #define CFG_TUSB_MEM_ALIGN rt_align(PKG_TINYUSB_MEM_ALIGN)
  86. #else
  87. #define CFG_TUSB_MEM_ALIGN ALIGN(PKG_TINYUSB_MEM_ALIGN)
  88. #endif
  89. #endif
  90. //--------------------------------------------------------------------
  91. // DEVICE CONFIGURATION
  92. //--------------------------------------------------------------------
  93. #ifndef CFG_TUD_ENDPOINT0_SIZE
  94. #define CFG_TUD_ENDPOINT0_SIZE PKG_TINYUSB_EDPT0_SIZE
  95. #endif
  96. // CDC FIFO size of TX and RX
  97. #define CFG_TUD_CDC_RX_BUFSIZE PKG_TINYUSB_DEVICE_CDC_RX_BUFSIZE
  98. #define CFG_TUD_CDC_TX_BUFSIZE PKG_TINYUSB_DEVICE_CDC_TX_BUFSIZE
  99. #define CFG_TUD_MSC_EP_BUFSIZE PKG_TINYUSB_DEVICE_MSC_EP_BUFSIZE
  100. #define CFG_TUD_HID_EP_BUFSIZE PKG_TINYUSB_DEVICE_HID_EP_BUFSIZE
  101. #ifndef PKG_TINYUSB_DEVICE_CDC_STRING
  102. #define PKG_TINYUSB_DEVICE_CDC_STRING ""
  103. #endif
  104. #ifndef PKG_TINYUSB_DEVICE_MSC_STRING
  105. #define PKG_TINYUSB_DEVICE_MSC_STRING ""
  106. #endif
  107. #ifndef PKG_TINYUSB_DEVICE_HID_STRING
  108. #define PKG_TINYUSB_DEVICE_HID_STRING ""
  109. #endif
  110. #ifdef __cplusplus
  111. }
  112. #endif
  113. #endif /* _TUSB_CONFIG_H_ */