hifive1.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // See LICENSE for license details.
  2. #ifndef _SIFIVE_HIFIVE1_H
  3. #define _SIFIVE_HIFIVE1_H
  4. #include <stdint.h>
  5. /****************************************************************************
  6. * GPIO Connections
  7. *****************************************************************************/
  8. // These are the GPIO bit offsets for the RGB LED on HiFive1 Board.
  9. // These are also mapped to RGB LEDs on the Freedom E300 Arty
  10. // FPGA
  11. // Dev Kit.
  12. #define RED_LED_OFFSET 22
  13. #define GREEN_LED_OFFSET 19
  14. #define BLUE_LED_OFFSET 21
  15. // These are the GPIO bit offsets for the differen digital pins
  16. // on the headers for both the HiFive1 Board and the Freedom E300 Arty FPGA Dev Kit.
  17. #define PIN_0_OFFSET 16
  18. #define PIN_1_OFFSET 17
  19. #define PIN_2_OFFSET 18
  20. #define PIN_3_OFFSET 19
  21. #define PIN_4_OFFSET 20
  22. #define PIN_5_OFFSET 21
  23. #define PIN_6_OFFSET 22
  24. #define PIN_7_OFFSET 23
  25. #define PIN_8_OFFSET 0
  26. #define PIN_9_OFFSET 1
  27. #define PIN_10_OFFSET 2
  28. #define PIN_11_OFFSET 3
  29. #define PIN_12_OFFSET 4
  30. #define PIN_13_OFFSET 5
  31. //#define PIN_14_OFFSET 8 //This pin is not connected on either board.
  32. #define PIN_15_OFFSET 9
  33. #define PIN_16_OFFSET 10
  34. #define PIN_17_OFFSET 11
  35. #define PIN_18_OFFSET 12
  36. #define PIN_19_OFFSET 13
  37. // These are *PIN* numbers, not
  38. // GPIO Offset Numbers.
  39. #define PIN_SPI1_SCK (13u)
  40. #define PIN_SPI1_MISO (12u)
  41. #define PIN_SPI1_MOSI (11u)
  42. #define PIN_SPI1_SS0 (10u)
  43. #define PIN_SPI1_SS1 (14u)
  44. #define PIN_SPI1_SS2 (15u)
  45. #define PIN_SPI1_SS3 (16u)
  46. #define SS_PIN_TO_CS_ID(x) \
  47. ((x==PIN_SPI1_SS0 ? 0 : \
  48. (x==PIN_SPI1_SS1 ? 1 : \
  49. (x==PIN_SPI1_SS2 ? 2 : \
  50. (x==PIN_SPI1_SS3 ? 3 : \
  51. -1)))))
  52. // These buttons are present only on the Freedom E300 Arty Dev Kit.
  53. #ifdef HAS_BOARD_BUTTONS
  54. #define BUTTON_0_OFFSET 15
  55. #define BUTTON_1_OFFSET 30
  56. #define BUTTON_2_OFFSET 31
  57. #define INT_DEVICE_BUTTON_0 (INT_GPIO_BASE + BUTTON_0_OFFSET)
  58. #define INT_DEVICE_BUTTON_1 (INT_GPIO_BASE + BUTTON_1_OFFSET)
  59. #define INT_DEVICE_BUTTON_2 (INT_GPIO_BASE + BUTTON_2_OFFSET)
  60. #endif
  61. #define HAS_HFXOSC 1
  62. #define HAS_LFROSC_BYPASS 1
  63. #define RTC_FREQ 32768
  64. void write_hex(int fd, unsigned long int hex);
  65. #endif /* _SIFIVE_HIFIVE1_H */