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/********************* Device specific definitions *********************/
34
35#define ACCEL_CS_PORT1 GPIOA // Accel 1 CS on GPIOA
36#define ACCEL_CS_PIN1 GPIO_PIN1 // Accel 1 CS on PA1
37#define ACCEL_CS1 ACCEL_CS_PORT1, ACCEL_CS_PIN1 //
38
39#define ACCEL_CS_PORT2 GPIOB // Accel 2 CS on GPIOB
40#define ACCEL_CS_PIN2 GPIO_PIN0 // Accel 2 CS on PB0
41#define ACCEL_CS2 ACCEL_CS_PORT2, ACCEL_CS_PIN2 //
42
43#define BARO_CS_PORT GPIOA // Baro CS on GPIOA
44#define BARO_CS_PIN GPIO_PIN3 // Baro CS on PA2
45#define BARO_CS BARO_CS_PORT, BARO_CS_PIN //
46
47#define GYRO_CS_PORT GPIOA // Gyro CS on GPIOA
48#define GYRO_CS_PIN GPIO_PIN2 // Gyro CS on PA2
49#define GYRO_CS GYRO_CS_PORT, GYRO_CS_PIN //
50
51#define FLASH_CS_PORT GPIOE // Flash CS on GPIOE
52#define FLASH_CS_PIN GPIO_PIN11 // Flash CS on PE11
53#define FLASH_CS GYRO_CS_PORT, GYRO_CS_PIN //
54#define FLASH_PAGE_SIZE 256 // 256 bytes per page
55#define FLASH_PAGE_COUNT 65536 // 65536 total pages
56
57#define LORA_CS_PORT GPIOD // LoRa CS on GPIOD
58#define LORA_CS_PIN GPIO_PIN0 // LoRa CS on PD0
59#define LORA_CS LORA_CS_PORT, LORA_CS_PIN //
60#define LORA_BW SX1272_BW500 // 500KHz bandwidth
61#define LORA_SF SX1272_SF9 // Spreading factor 9
62#define LORA_CR SX1272_CR5 // Coding rate 4/5
63
64#define USB_INTERFACE USART6 // USB on UART6
65#define USB_PORT GPIOC // UART pins on GPIOA
66#define USB_PINS (UART_Pins){.TX = 6, .RX = 7} // TX PC6, RX PC7
67#define USB_BAUD 921600 // 921600bps baud rate
68#define USB_OVERSAMPLE OVER8 // 8-bit oversampling
69
70#define GPS_INTERFACE USART3 // GPS on UART3
71#define GPS_PORT GPIOD // UART pins on GPIOD
72#define GPS_PINS (UART_Pins){.TX = 8, .RX = 9} // TX PD8, RX PD9
73#define GPS_BAUD 9600 // 96000bps baud rate
74
75/********************** Peripheral bus definitions *********************/
76
77#define SENSORS_SPI_INTERFACE SPI1 // Sensor suite SPI bus interface on SPI1
78#define SENSORS_SPI_PORT GPIOA // Sensor suite SPI bus pins on GPIOA
79#define SENSORS_SPI_AF GPIO_AF5 // Sensor suite SPI pin alternate function
80#define SENSORS_SPI_SCK GPIO_PIN5 // SCK pin on PA5
81#define SENSORS_SPI_SDO GPIO_PIN6 // SDI pin on PA6
82#define SENSORS_SPI_SDI GPIO_PIN7 // SDO pin on PA7
83
84#define FLASH_SPI_INTERFACE SPI4 // Flash chip SPI bus interface on SPI4
85#define FLASH_SPI_PORT GPIOE // Flash chip SPI bus pins on GPIOE
86#define FLASH_SPI_AF GPIO_AF5 // Flash chip SPI pin alternate function
87#define FLASH_SPI_SCK GPIO_PIN12 // SCK pin on PE12
88#define FLASH_SPI_SDO GPIO_PIN13 // SDI pin on PE13
89#define FLASH_SPI_SDI GPIO_PIN14 // SDO pin on PE14
90
91#define LORA_SPI_INTERFACE SPI3 // LoRa chip SPI bus interface on SPI3
92#define LORA_SPI_PORT GPIOC // LoRa chip SPI bus pins on GPIOC
93#define LORA_SPI_AF GPIO_AF6 // LoRa chip SPI pin alternate function
94#define LORA_SPI_SCK GPIO_PIN10 // SCK pin on PE10
95#define LORA_SPI_SDO GPIO_PIN11 // SDI pin on PE11
96#define LORA_SPI_SDI GPIO_PIN12 // SDO pin on PE12
97
98#endif