Loading...
Searching...
No Matches
devices.h
1
4
5// ALLOW FORMATTING
6#ifndef DEVICES_H
7#define DEVICES_H
8
9#include "stdbool.h"
10
11void initSpiPins();
12bool initDevices();
13bool initSensors();
14bool initFlash();
15bool initLora();
16bool initUart();
17
18#define STATE_NAME_LENGTH 20
19
20typedef struct StateHandle_t {
21 char name[STATE_NAME_LENGTH];
22 void *state;
23 struct StateHandle_t *ref;
25
26StateHandle_t StateHandle_getHandle(char *);
27StateHandle_t *StateHandle_getHandleRef(char *);
28
29/* ===================================================================== *
30 * DEVICE DEFINITIONS *
31 * ===================================================================== */
32
33/*************************** Misc definitions **************************/
34
35#define LED1_PORT GPIOC
36#define LED1_PIN 0
37
38#define LED2_PORT GPIOA
39#define LED2_PIN 1
40
41/********************* Device specific definitions *********************/
42
43#define ACCEL_CS_PORT1 GPIOA // Accel 1 CS on GPIOA
44#define ACCEL_CS_PIN1 GPIO_PIN3 // Accel 1 CS on PA3
45#define ACCEL_CS1 ACCEL_CS_PORT1, ACCEL_CS_PIN1 //
46
47#define ACCEL_CS_PORT2 GPIOB // Accel 2 CS on GPIOB
48#define ACCEL_CS_PIN2 GPIO_PIN1 // Accel 2 CS on PB1
49#define ACCEL_CS2 ACCEL_CS_PORT2, ACCEL_CS_PIN2 //
50
51#define BARO_CS_PORT GPIOA // Baro CS on GPIOA
52#define BARO_CS_PIN GPIO_PIN2 // Baro CS on PA2
53#define BARO_CS BARO_CS_PORT, BARO_CS_PIN //
54
55#define GYRO_CS_PORT GPIOF // Gyro CS on GPIOF
56#define GYRO_CS_PIN GPIO_PIN11 // Gyro CS on PF11
57#define GYRO_CS GYRO_CS_PORT, GYRO_CS_PIN //
58
59#define FLASH_CS_PORT GPIOE // Flash CS on GPIOE
60#define FLASH_CS_PIN GPIO_PIN11 // Flash CS on PE11
61#define FLASH_CS GYRO_CS_PORT, GYRO_CS_PIN //
62#define FLASH_PAGE_SIZE 256 // 256 bytes per page
63#define FLASH_PAGE_COUNT 65536 // 65536 total pages
64
65#define LORA_CS_PORT GPIOD // LoRa CS on GPIOD
66#define LORA_CS_PIN GPIO_PIN3 // LoRa CS on PD3
67#define LORA_CS LORA_CS_PORT, LORA_CS_PIN //
68#define LORA_BW SX1272_BW500 // 500KHz bandwidth
69#define LORA_SF SX1272_SF9 // Spreading factor 9
70#define LORA_CR SX1272_CR5 // Coding rate 4/5
71
72#define USB_INTERFACE USART6 // USB on UART1
73#define USB_PORT GPIOC // UART pins on GPIOA
74#define USB_PINS (UART_Pins){.TX = 6, .RX = 7} // TX PC6, RX PC7
75#define USB_BAUD 921600 // 921600bps baud rate
76#define USB_OVERSAMPLE OVER8 // 8-bit oversampling
77
78#define GPS_INTERFACE USART3 // GPS on UART3
79#define GPS_PORT GPIOD // UART pins on GPIOD
80#define GPS_PINS (UART_Pins){.TX = 8, .RX = 9} // TX PD8, RX PD9
81#define GPS_BAUD 9600 // 96000bps baud rate
82
83/********************** Peripheral bus definitions *********************/
84
85#define SENSORS_SPI_INTERFACE SPI1 // Sensor suite SPI bus interface on SPI1
86#define SENSORS_SPI_PORT GPIOA // Sensor suite SPI bus pins on GPIOA
87#define SENSORS_SPI_AF GPIO_AF5 // Sensor suite SPI pin alternate function
88#define SENSORS_SPI_SCK GPIO_PIN5 // SCK pin on PA5
89#define SENSORS_SPI_SDO GPIO_PIN6 // SDI pin on PA6
90#define SENSORS_SPI_SDI GPIO_PIN7 // SDO pin on PA7
91
92#define FLASH_SPI_INTERFACE SPI4 // Flash chip SPI bus interface on SPI4
93#define FLASH_SPI_PORT GPIOE // Flash chip SPI bus pins on GPIOE
94#define FLASH_SPI_AF GPIO_AF5 // Flash chip SPI pin alternate function
95#define FLASH_SPI_SCK GPIO_PIN12 // SCK pin on PE12
96#define FLASH_SPI_SDO GPIO_PIN13 // SDI pin on PE13
97#define FLASH_SPI_SDI GPIO_PIN14 // SDO pin on PE14
98
99#define LORA_SPI_INTERFACE SPI3 // LoRa chip SPI bus interface on SPI3
100#define LORA_SPI_PORT GPIOC // LoRa chip SPI bus pins on GPIOC
101#define LORA_SPI_AF GPIO_AF6 // LoRa chip SPI pin alternate function
102#define LORA_SPI_SCK GPIO_PIN10 // SCK pin on PE10
103#define LORA_SPI_SDO GPIO_PIN11 // SDI pin on PE11
104#define LORA_SPI_SDI GPIO_PIN12 // SDO pin on PE12
105
106#endif