gpio.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #ifndef _GPIO_H__
  2. #define _GPIO_H__
  3. #include "gd32f3x0.h"
  4. #include "gd32f3x0_libopt.h"
  5. #include "bsp/shark_bsp.h"
  6. void gpio_init(void);
  7. /*switch for temperature sensers */
  8. #define TEMP_OPEN(x) gpio_bit_write(GPIOF,GPIO_PIN_1,(bit_status)(x))
  9. /*switch for small current aux */
  10. #define AUX_VOL_OPEN(x) gpio_bit_write(GPIOB,GPIO_PIN_2,(bit_status)(x))
  11. #define AUX_VOL_IS_OPEN() (!!gpio_output_bit_get(GPIOB, GPIO_PIN_2))
  12. /*aux pwr is locked */
  13. #define IS_AUX_VOL_LOCKED() (!gpio_input_bit_get(GPIOB, GPIO_PIN_11))
  14. /*switch for larger current DCDC */
  15. #define DCDC_VOL_OPEN(x) gpio_bit_write(GPIOA,GPIO_PIN_11,(bit_status)(x))
  16. /* DCDC output power good detect */
  17. #define IS_DCDC_POWER_GOOD() (gpio_input_bit_get(GPIOF, GPIO_PIN_7) == RESET)
  18. /*detect for charger in/out */
  19. #define IS_CHARGER_IN() (!gpio_input_bit_get(GPIOB,GPIO_PIN_10))
  20. /*spi chip select for ml5238*/
  21. #define ml5238_cs(x) gpio_bit_write(GPIOA, GPIO_PIN_15, (bit_status)x)
  22. #if (CONFIG_BOARD_TYPE==SHARK_BOARD_SP700)
  23. /*power switch for cs110, low active */
  24. #define CS1180_PWR_ENABLE(x) gpio_bit_write(GPIOB,GPIO_PIN_12, x==1?RESET:SET)
  25. /*detect for CS1180 is ready */
  26. #define IS_CS1180_NOT_READY() !!gpio_input_bit_get(GPIOA, GPIO_PIN_0)
  27. /*spi chip select for cs1180*/
  28. #define cs1180_cs(x) gpio_bit_write(GPIOA, GPIO_PIN_9, (bit_status)x)
  29. /*switch for IR uart0 */
  30. #define UART0_IR_EN(x) gpio_bit_write(GPIOC,GPIO_PIN_14,(bit_status)(x))
  31. /*switch for IR uart1 */
  32. #define UART1_IR_EN(x) gpio_bit_write(GPIOF,GPIO_PIN_0,(bit_status)(x))
  33. /*detect hall 1&2 */
  34. #define IS_HALL1_DETECTED() (!gpio_input_bit_get(GPIOC, GPIO_PIN_15))
  35. #define IS_HALL2_DETECTED() (!gpio_input_bit_get(GPIOC, GPIO_PIN_13))
  36. #define DIANOCTIC_LED(s) gpio_bit_write(GPIOF,GPIO_PIN_6,(s == 0)?SET:RESET)
  37. #define LED0_ON(x) {}
  38. #define LED1_ON(x) {}
  39. #define LED2_ON(x) {}
  40. #define LED3_ON(x) {}
  41. #define LED4_ON(x) {}
  42. #elif (CONFIG_BOARD_TYPE==SHARK_BOARD_SP600)
  43. /*power switch for cs110, low active */
  44. #define CS1180_PWR_ENABLE(x) gpio_bit_write(GPIOC,GPIO_PIN_15, x==1?RESET:SET)
  45. /*detect for CS1180 is ready */
  46. #define IS_CS1180_NOT_READY() (!!gpio_input_bit_get(GPIOB, GPIO_PIN_12))
  47. /*spi chip select for cs1180*/
  48. #define cs1180_cs(x) gpio_bit_write(GPIOA, GPIO_PIN_8, (bit_status)x)
  49. /*rs485 power switch */
  50. #define RS485_PWR_ENABLE(x) gpio_bit_write(GPIOC, GPIO_PIN_14, x==1?SET:RESET)
  51. /* rs485¼ì²âÄ£Äâhall1, MUST 485 power(DCDC) on && GPIOF0 is detect */
  52. #define IS_HALL2_DETECTED() ((gpio_input_bit_get(GPIOF, GPIO_PIN_0)== RESET) && gpio_output_bit_get(GPIOA ,GPIO_PIN_11))
  53. /* other hall2 is always 0 */
  54. #define IS_HALL1_DETECTED() (0)
  55. #define LED0_ON(x) gpio_bit_write(GPIOA,GPIO_PIN_2, x==1?RESET:SET)
  56. #define LED1_ON(x) gpio_bit_write(GPIOA,GPIO_PIN_3, x==1?RESET:SET)
  57. #define LED2_ON(x) gpio_bit_write(GPIOF,GPIO_PIN_6, x==1?RESET:SET)
  58. #define LED3_ON(x) gpio_bit_write(GPIOA,GPIO_PIN_10, x==1?RESET:SET)
  59. #define LED4_ON(x) gpio_bit_write(GPIOA,GPIO_PIN_9, x==1?RESET:SET)
  60. #define UART0_IR_EN(x) RS485_PWR_ENABLE(x)
  61. #define UART1_IR_EN(x) {}
  62. #define DIANOCTIC_LED(s) {}
  63. #endif
  64. #define LED_ALL_ON(x) {LED0_ON(x); LED1_ON(x); LED2_ON(x); LED3_ON(x); LED4_ON(x);}
  65. static __inline__ void gpio_mode_analog_input(uint32_t gpio_periph, uint32_t pin){
  66. gpio_mode_set(gpio_periph, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, pin);
  67. }
  68. static __inline__ void gpio_mode_input(uint32_t gpio_periph, uint32_t pull_up_down, uint32_t pin){
  69. gpio_mode_set(gpio_periph, GPIO_MODE_INPUT, pull_up_down, pin);
  70. }
  71. static __inline__ void gpio_mode_output(uint32_t gpio_periph, uint32_t pull_up_down, uint8_t otype, uint32_t speed, uint32_t pin){
  72. gpio_mode_set(gpio_periph, GPIO_MODE_OUTPUT, pull_up_down, pin);
  73. gpio_output_options_set(gpio_periph, otype, speed, pin);
  74. }
  75. static __inline__ void gpio_mode_af(uint32_t gpio_periph, uint32_t pull_up_down, uint32_t pin){
  76. gpio_mode_set(gpio_periph, GPIO_MODE_AF, pull_up_down, pin);
  77. }
  78. void enable_mcu_power(void);
  79. void charger_detect_irq_enable(int enable);
  80. void ml5238_irq_enable(int enable);
  81. void hall_1_detect_irq_enable(int enable);
  82. void hall_2_detect_irq_enable(int enable);
  83. void small_current_short_irq_enable(int enable);
  84. void dcdc_pwr_detect_irq_enable(int enable);
  85. void enable_gpio_key_irq(int enable);
  86. #endif /* _GPIO_H__ */