gpio.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. /**
  2. * @file gpio.h
  3. * @author chipsea
  4. * @brief
  5. * @version 0.1
  6. * @date 2020-11-30
  7. * @copyright Copyright (c) 2020, CHIPSEA Co., Ltd.
  8. * @note
  9. */
  10. /*******************************************************************************
  11. * @file gpio.h
  12. * @brief Contains all functions support for gpio and iomux driver
  13. * @version 0.0
  14. * @date 19. Oct. 2017
  15. * @author qing.han
  16. *
  17. *
  18. *******************************************************************************/
  19. #ifndef __GPIO_H__
  20. #define __GPIO_H__
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. #include <types.h>
  25. #include "cst92f2x.h"
  26. #include "error.h"
  27. #define NUMBER_OF_PINS 23
  28. typedef enum{
  29. GPIO_P00 = 0, P0 = GPIO_P00,
  30. GPIO_P01 = 1, P1 = GPIO_P01,
  31. GPIO_P02 = 2, P2 = GPIO_P02,
  32. GPIO_P03 = 3, P3 = GPIO_P03,
  33. GPIO_P07 = 4, P7 = GPIO_P07,
  34. GPIO_P09 = 5, P9 = GPIO_P09,
  35. GPIO_P10 = 6, P10 = GPIO_P10,
  36. GPIO_P11 = 7, P11 = GPIO_P11, Analog_IO_0 = GPIO_P11,
  37. GPIO_P14 = 8, P14 = GPIO_P14, Analog_IO_1 = GPIO_P14,
  38. GPIO_P15 = 9, P15 = GPIO_P15, Analog_IO_2 = GPIO_P15,
  39. GPIO_P16 = 10, P16 = GPIO_P16, Analog_IO_3 = GPIO_P16,XTALI = GPIO_P16,
  40. GPIO_P17 = 11, P17 = GPIO_P17, Analog_IO_4 = GPIO_P17,XTALO = GPIO_P17,
  41. GPIO_P18 = 12, P18 = GPIO_P18, Analog_IO_5 = GPIO_P18,
  42. GPIO_P20 = 13, P20 = GPIO_P20, Analog_IO_6 = GPIO_P20,
  43. GPIO_P23 = 14, P23 = GPIO_P23, Analog_IO_7 = GPIO_P23,
  44. GPIO_P24 = 15, P24 = GPIO_P24, Analog_IO_8 = GPIO_P24,
  45. GPIO_P25 = 16, P25 = GPIO_P25, Analog_IO_9 = GPIO_P25,
  46. GPIO_P26 = 17, P26 = GPIO_P26,
  47. GPIO_P27 = 18, P27 = GPIO_P27,
  48. GPIO_P31 = 19, P31 = GPIO_P31,
  49. GPIO_P32 = 20, P32 = GPIO_P32,
  50. GPIO_P33 = 21, P33 = GPIO_P33,
  51. GPIO_P34 = 22, P34 = GPIO_P34,
  52. GPIO_NUM = 23,
  53. GPIO_BOOT = 0xFE,
  54. GPIO_DUMMY = 0xff,
  55. }GpioPin_t;
  56. typedef enum {
  57. FMUX_IIC0_SCL= 0,
  58. FMUX_IIC0_SDA= 1,
  59. FMUX_IIC1_SCL= 2,
  60. FMUX_IIC1_SDA= 3,
  61. FMUX_UART0_TX=4, FMUX_UART_TX=4,
  62. FMUX_UART0_RX=5, FMUX_UART_RX=5,
  63. FMUX_RF_RX_EN=6,
  64. FMUX_RF_TX_EN=7,
  65. FMUX_UART1_TX=8,
  66. FMUX_UART1_RX=9,
  67. FMUX_PWM0=10,
  68. FMUX_PWM1=11,
  69. FMUX_PWM2=12,
  70. FMUX_PWM3=13,
  71. FMUX_PWM4=14,
  72. FMUX_PWM5=15,
  73. FMUX_SPI_0_SCK=16,
  74. FMUX_SPI_0_SSN=17,
  75. FMUX_SPI_0_TX=18,
  76. FMUX_SPI_0_RX=19,
  77. FMUX_SPI_1_SCK=20,
  78. FMUX_SPI_1_SSN=21,
  79. FMUX_SPI_1_TX=22,
  80. FMUX_SPI_1_RX=23,
  81. FMUX_CHAX=24,
  82. FMUX_CHBX=25,
  83. FMUX_CHIX=26,
  84. FMUX_CHAY=27,
  85. FMUX_CHBY=28,
  86. FMUX_CHIY=29,
  87. FMUX_CHAZ=30,
  88. FMUX_CHBZ=31,
  89. FMUX_CHIZ=32,
  90. FMUX_CLK1P28M=33,
  91. FMUX_ADCC=34,
  92. FMUX_ANT_SEL_0=35,
  93. FMUX_ANT_SEL_1=36,
  94. FMUX_ANT_SEL_2=37,
  95. }gpio_fmux_e;
  96. typedef enum{
  97. FRE_HCLK_DIV8 = 0, //p0
  98. FRE_PCLK_DIV4 = 1, //p1
  99. FRE_CLK_1P28M = 2, //p2
  100. FRE_CLK_RC32K = 6, //p24
  101. FRE_XTAL_CLK32768 = 7, //p25
  102. }Freq_Type_e;
  103. typedef enum{
  104. GPIO_INPUT = 0,
  105. GPIO_OUTPUT = 1
  106. }gpio_dir_t;
  107. typedef enum{
  108. POL_FALLING = 0, POL_ACT_LOW = 0,
  109. POL_RISING = 1, POL_ACT_HIGH = 1
  110. }gpio_polarity_e;
  111. typedef enum{
  112. Bit_DISABLE = 0,
  113. Bit_ENABLE,
  114. }bit_action_e;
  115. typedef enum{
  116. GPIO_FLOATING = 0x00, //no pull
  117. GPIO_PULL_UP_S = 0x01, //pull up strong
  118. GPIO_PULL_UP = 0x02, //pull up weak
  119. GPIO_PULL_DOWN = 0x03,
  120. }gpio_pupd_e;
  121. typedef struct{
  122. GpioPin_t pin;
  123. gpio_pupd_e type;
  124. }ioinit_cfg_t;
  125. #define NEGEDGE POL_FALLING
  126. #define POSEDGE POL_RISING
  127. #define IO_Wakeup_Pol_e gpio_polarity_e
  128. #define FLOATING GPIO_FLOATING
  129. #define WEAK_PULL_UP GPIO_PULL_UP
  130. #define STRONG_PULL_UP GPIO_PULL_UP_S
  131. #define PULL_DOWN GPIO_PULL_DOWN
  132. #define GpioPin_t GpioPin_t
  133. #define OEN GPIO_OUTPUT
  134. #define IE GPIO_INPUT
  135. #define Fmux_Type_e gpio_fmux_e
  136. #define GPIO_Wakeup_Pol_e gpio_polarity_e
  137. #define BitAction_e bit_action_e
  138. typedef void (*gpioin_Hdl_t)(GpioPin_t pin,gpio_polarity_e type);
  139. //rom api
  140. extern int gpio_write(GpioPin_t pin, uint8_t en);
  141. int hal_gpioin_disable(GpioPin_t pin);
  142. __ATTR_SECTION_SRAM__ void HalGpioIRQHandler(void);
  143. void HalGpioPin2Pin3Control(GpioPin_t pin, uint8_t en);//0:sw,1:other func
  144. bool HalBootPinStatusGet(void);
  145. void HalGpioSet(GpioPin_t pin, bit_action_e bitVal);
  146. bool HalGpioGet(GpioPin_t pin);
  147. void HalGpioDsControl(GpioPin_t pin, bit_action_e value);
  148. ErrCode_t HalGpioAnalogConfig(GpioPin_t pin, bit_action_e value);
  149. ErrCode_t HalGpioPupdConfig(GpioPin_t pin, gpio_pupd_e type);
  150. ErrCode_t HalGpioFmuxEnable(GpioPin_t pin, bit_action_e value);
  151. ErrCode_t HalGpioFmuxConfig(GpioPin_t pin, gpio_fmux_e type);
  152. ErrCode_t HalGpioWkupConfig(GpioPin_t pin, gpio_polarity_e type);
  153. ErrCode_t HalGpioRegister(GpioPin_t pin, gpioin_Hdl_t posedgeHdl, gpioin_Hdl_t negedgeHdl);
  154. ErrCode_t HalGpioUnregister(GpioPin_t pin);
  155. ErrCode_t HalGpioInit(void);
  156. ErrCode_t HalGpioPinInit(GpioPin_t pin, gpio_dir_t type);
  157. #ifdef __cplusplus
  158. }
  159. #endif
  160. #endif