#ifndef CONFIG_H #define CONFIG_H // ============================================ // SaltyLab Balance Bot — MAMBA F722S FC // Pin assignments from Betaflight: DIAT-MAMBAF722_2022B // ============================================ // --- IMU: MPU6000 (SPI1) --- // SPI1: PA5=SCK, PA6=MISO, PA7=MOSI // WHO_AM_I = 0x68 #define MPU_SPI SPI1 #define MPU_CS_PORT GPIOA #define MPU_CS_PIN GPIO_PIN_4 // GYRO_CS 1 #define MPU_EXTI_PORT GPIOC #define MPU_EXTI_PIN GPIO_PIN_4 // GYRO_EXTI 1 (data ready IRQ) #define GYRO_ALIGN CW270 // gyro_1_sensor_align = CW270 // --- Barometer: BMP280 or DPS310 (I2C1) --- #define BARO_I2C I2C1 #define BARO_SCL_PORT GPIOB #define BARO_SCL_PIN GPIO_PIN_8 // I2C_SCL 1 #define BARO_SDA_PORT GPIOB #define BARO_SDA_PIN GPIO_PIN_9 // I2C_SDA 1 // Magnetometer also on I2C1 (external, header only) // --- LEDs --- #define LED1_PORT GPIOC #define LED1_PIN GPIO_PIN_15 // LED 1 (active low) #define LED2_PORT GPIOC #define LED2_PIN GPIO_PIN_14 // LED 2 (active low) // --- Buzzer --- #define BEEPER_PORT GPIOB #define BEEPER_PIN GPIO_PIN_2 // BEEPER 1 #define BEEPER_INVERTED 1 // beeper_inversion = ON // beeper_od = OFF (push-pull) // --- Battery Monitoring (ADC3) --- #define ADC_VBAT_PORT GPIOC #define ADC_VBAT_PIN GPIO_PIN_1 // ADC_BATT 1 #define ADC_CURR_PORT GPIOC #define ADC_CURR_PIN GPIO_PIN_3 // ADC_CURR 1 #define ADC_IBAT_SCALE 115 // ibata_scale // --- LED Strip (WS2812) --- #define LED_STRIP_PORT GPIOB #define LED_STRIP_PIN GPIO_PIN_3 // LED_STRIP 1 (TIM2_CH2) // --- OSD: MAX7456 (SPI2) --- #define OSD_SPI SPI2 #define OSD_CS_PORT GPIOB #define OSD_CS_PIN GPIO_PIN_12 // OSD_CS 1 // SPI2: PB13=SCK, PB14=MISO, PB15=MOSI // --- Blackbox Flash: M25P16 (SPI3) --- #define FLASH_SPI SPI3 #define FLASH_CS_PORT GPIOA #define FLASH_CS_PIN GPIO_PIN_15 // FLASH_CS 1 // SPI3: PC10=SCK, PC11=MISO, PB5=MOSI // --- Motor Outputs (PWM/DShot) --- #define MOTOR1_PORT GPIOC #define MOTOR1_PIN GPIO_PIN_8 // TIM8_CH3 #define MOTOR2_PORT GPIOC #define MOTOR2_PIN GPIO_PIN_9 // TIM8_CH4 #define MOTOR3_PORT GPIOA #define MOTOR3_PIN GPIO_PIN_8 // TIM1_CH1 #define MOTOR4_PORT GPIOA #define MOTOR4_PIN GPIO_PIN_9 // TIM1_CH2 #define MOTOR5_PORT GPIOB #define MOTOR5_PIN GPIO_PIN_0 // TIM3_CH3 #define MOTOR6_PORT GPIOB #define MOTOR6_PIN GPIO_PIN_1 // TIM3_CH4 #define MOTOR7_PORT GPIOA #define MOTOR7_PIN GPIO_PIN_10 // TIM1_CH3 #define MOTOR8_PORT GPIOB #define MOTOR8_PIN GPIO_PIN_4 // TIM3_CH1 // --- UARTs --- // USART1: PB6=TX, PB7=RX (serial 0, SmartAudio/VTX) #define UART1_TX_PORT GPIOB #define UART1_TX_PIN GPIO_PIN_6 #define UART1_RX_PORT GPIOB #define UART1_RX_PIN GPIO_PIN_7 // USART2: PA2=TX, PA3=RX (serial 1) #define UART2_TX_PORT GPIOA #define UART2_TX_PIN GPIO_PIN_2 #define UART2_RX_PORT GPIOA #define UART2_RX_PIN GPIO_PIN_3 // USART3: PB10=TX, PB11=RX (serial 2, SBUS RX default) #define UART3_TX_PORT GPIOB #define UART3_TX_PIN GPIO_PIN_10 #define UART3_RX_PORT GPIOB #define UART3_RX_PIN GPIO_PIN_11 // UART4: PA0=TX, PA1=RX (serial 3) #define UART4_TX_PORT GPIOA #define UART4_TX_PIN GPIO_PIN_0 #define UART4_RX_PORT GPIOA #define UART4_RX_PIN GPIO_PIN_1 // UART5: PC12=TX, PD2=RX (serial 4) #define UART5_TX_PORT GPIOC #define UART5_TX_PIN GPIO_PIN_12 #define UART5_RX_PORT GPIOD #define UART5_RX_PIN GPIO_PIN_2 // USART6: PC6=TX, PC7=RX (serial 5) #define UART6_TX_PORT GPIOC #define UART6_TX_PIN GPIO_PIN_6 #define UART6_RX_PORT GPIOC #define UART6_RX_PIN GPIO_PIN_7 // --- PINIO (switchable outputs, e.g. VTX power) --- #define PINIO1_PORT GPIOC #define PINIO1_PIN GPIO_PIN_2 // pinio_config = 129 (USER1) #define PINIO2_PORT GPIOC #define PINIO2_PIN GPIO_PIN_0 // pinio_config = 129 (USER2) // --- SaltyLab Assignments --- // Hoverboard ESC: USART2 (PA2=TX, PA3=RX) or USART3 // ELRS Receiver: UART4 (PA0=TX, PA1=RX) — CRSF 420000 baud // Jetson: USART6 (PC6=TX, PC7=RX) // Debug: UART5 (PC12=TX, PD2=RX) // --- PID Tuning --- #define PID_KP 35.0f #define PID_KI 1.0f #define PID_KD 1.0f #define PID_INTEGRAL_MAX 500.0f #define PID_LOOP_HZ 1000 // --- Safety --- #define MAX_TILT_DEG 25.0f #define RC_TIMEOUT_MS 500 #define ARMING_HOLD_MS 3000 #define MAX_SPEED_LIMIT 100 #define WATCHDOG_TIMEOUT_MS 50 #endif // CONFIG_H