GPIO_RPI.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include <stdint.h>
  3. #include "AP_HAL_Linux.h"
  4. #define LOW 0
  5. #define HIGH 1
  6. #define PAGE_SIZE (4*1024)
  7. #define BLOCK_SIZE (4*1024)
  8. // Raspberry Pi GPIO mapping
  9. #define RPI_GPIO_2 2 // Pin 3
  10. #define RPI_GPIO_3 3 // Pin 5
  11. #define RPI_GPIO_4 4 // Pin 7
  12. #define RPI_GPIO_5 5 // Pin 29
  13. #define RPI_GPIO_6 6 // Pin 31
  14. #define RPI_GPIO_7 7 // Pin 26
  15. #define RPI_GPIO_8 8 // Pin 24
  16. #define RPI_GPIO_9 9 // Pin 21
  17. #define RPI_GPIO_10 10 // Pin 19
  18. #define RPI_GPIO_11 11 // Pin 23
  19. #define RPI_GPIO_12 12 // Pin 32
  20. #define RPI_GPIO_13 13 // Pin 33
  21. #define RPI_GPIO_14 14 // Pin 8
  22. #define RPI_GPIO_15 15 // Pin 10
  23. #define RPI_GPIO_16 16 // Pin 36
  24. #define RPI_GPIO_17 17 // Pin 11
  25. #define RPI_GPIO_18 18 // Pin 12
  26. #define RPI_GPIO_19 19 // Pin 35
  27. #define RPI_GPIO_20 20 // Pin 38
  28. #define RPI_GPIO_21 21 // Pin 40
  29. #define RPI_GPIO_22 22 // Pin 15
  30. #define RPI_GPIO_23 23 // Pin 16
  31. #define RPI_GPIO_24 24 // Pin 18
  32. #define RPI_GPIO_25 25 // Pin 22
  33. #define RPI_GPIO_26 26 // Pin 37
  34. #define RPI_GPIO_27 27 // Pin 13
  35. #define RPI_GPIO_28 28 // Pin 3
  36. #define RPI_GPIO_29 29 // Pin 4
  37. #define RPI_GPIO_30 30 // Pin 5
  38. #define RPI_GPIO_31 31 // Pin 6
  39. namespace Linux {
  40. class GPIO_RPI : public AP_HAL::GPIO {
  41. public:
  42. GPIO_RPI();
  43. void init() override;
  44. void pinMode(uint8_t pin, uint8_t output) override;
  45. void pinMode(uint8_t pin, uint8_t output, uint8_t alt) override;
  46. uint8_t read(uint8_t pin) override;
  47. void write(uint8_t pin, uint8_t value) override;
  48. void toggle(uint8_t pin) override;
  49. /* Alternative interface: */
  50. AP_HAL::DigitalSource* channel(uint16_t n) override;
  51. /* return true if USB cable is connected */
  52. bool usb_connected(void) override;
  53. private:
  54. volatile uint32_t *_gpio;
  55. };
  56. }