HardFOC Flux V1 HAL
Unified HAL API for the HardFOC Flux valve-control platform (ESP32-S3)
Loading...
Searching...
No Matches
FluxBoardConfig.h
Go to the documentation of this file.
1
19#ifndef FLUX_BOARD_CONFIG_H_
20#define FLUX_BOARD_CONFIG_H_
21
22#include <cstdint>
23
24#include "core/hf-core-drivers/internal/hf-pincfg/src/hf_functional_pin_config_flux_v1.hpp"
25
26namespace flux::board {
27
28//==============================================================================
29// SPI buses
30//==============================================================================
31
33enum class SpiBus : uint8_t {
34 Valve = 0,
35 Pressure = 1,
36};
37
38/* Valve bus: GPIO35..38 have no IO MUX route, so it runs on SPI3_HOST through the GPIO matrix. */
39inline constexpr uint8_t kValveSpiController = 2;
40inline constexpr bool kValveSpiUseIomux = false;
41
42/* Pressure bus: GPIO10..13 are the native IO MUX pins of SPI2_HOST. */
43inline constexpr uint8_t kPressureSpiController = 1;
44inline constexpr bool kPressureSpiUseIomux = true;
45
46inline constexpr uint32_t kSpiTimeoutMs = 1000;
47
48/* MAX22200: mode 0, 1 MHz. The datasheet allows 10 MHz; 1 MHz is the rate the driver example
49 * enumerates reliably on the bench harness. */
50inline constexpr uint32_t kMax22200SpiHz = 1'000'000;
51inline constexpr uint8_t kMax22200SpiMode = 0;
52
53/* TLE92466ED: mode 1, 1 MHz (datasheet allows 8 MHz with a tightly controlled bus). */
54inline constexpr uint32_t kTle92466SpiHz = 1'000'000;
55inline constexpr uint8_t kTle92466SpiMode = 1;
56
57/* ADS7952: mode 0, 4 MHz (datasheet allows 20 MHz; 4 MHz for stability). */
58inline constexpr uint32_t kAds7952SpiHz = 4'000'000;
59inline constexpr uint8_t kAds7952SpiMode = 0;
60
61//==============================================================================
62// CAN, status LED
63//==============================================================================
64
65inline constexpr uint32_t kCanBitrate = 500'000;
66
67inline constexpr uint8_t kStatusLedChannel = 0;
68inline constexpr uint16_t kStatusLedCount = 1;
69
70//==============================================================================
71// GPIO roles the pin map does not carry (it has no direction field)
72//==============================================================================
73
80inline constexpr HfFunctionalGpioPin kInputPins[] = {
81 HfFunctionalGpioPin::MAX22200_FAULT_N,
82 HfFunctionalGpioPin::TLE92466_FAULT_N,
83};
84
91inline constexpr HfFunctionalGpioPin kValveEnablePins[] = {
92 HfFunctionalGpioPin::MAX22200_ENABLE,
93 HfFunctionalGpioPin::TLE92466_EN,
94};
95
97constexpr bool IsInputPin(HfFunctionalGpioPin pin) noexcept {
98 for (const auto p : kInputPins) {
99 if (p == pin) return true;
100 }
101 return false;
102}
103
105constexpr bool IsValveEnablePin(HfFunctionalGpioPin pin) noexcept {
106 for (const auto p : kValveEnablePins) {
107 if (p == pin) return true;
108 }
109 return false;
110}
111
112} // namespace flux::board
113
114#endif // FLUX_BOARD_CONFIG_H_
Definition FluxBoardConfig.h:26
constexpr uint8_t kTle92466SpiMode
Definition FluxBoardConfig.h:55
constexpr uint8_t kValveSpiController
ESP32-S3 SPI3_HOST.
Definition FluxBoardConfig.h:39
SpiBus
Logical SPI buses on Flux V1 (binding slot index).
Definition FluxBoardConfig.h:33
@ Valve
MAX22200 + TLE92466ED (pin map: SPI2_*)
@ Pressure
ADS7952 pressure ADC, dedicated (pin map: SPI3_*)
constexpr bool kValveSpiUseIomux
GPIO matrix.
Definition FluxBoardConfig.h:40
constexpr bool IsValveEnablePin(HfFunctionalGpioPin pin) noexcept
True when pin is in kValveEnablePins.
Definition FluxBoardConfig.h:105
constexpr uint32_t kTle92466SpiHz
Definition FluxBoardConfig.h:54
constexpr bool IsInputPin(HfFunctionalGpioPin pin) noexcept
True when pin is in kInputPins.
Definition FluxBoardConfig.h:97
constexpr uint32_t kSpiTimeoutMs
Per-transfer timeout, both buses.
Definition FluxBoardConfig.h:46
constexpr uint32_t kCanBitrate
TWAI nominal bit rate (bit/s)
Definition FluxBoardConfig.h:65
constexpr uint8_t kAds7952SpiMode
Definition FluxBoardConfig.h:59
constexpr uint8_t kStatusLedChannel
RMT channel of the WS2812 data line.
Definition FluxBoardConfig.h:67
constexpr uint32_t kMax22200SpiHz
Definition FluxBoardConfig.h:50
constexpr HfFunctionalGpioPin kValveEnablePins[]
The valve-bank enable outputs (MAX22200 ENABLE, TLE92466ED EN), active high.
Definition FluxBoardConfig.h:91
constexpr uint16_t kStatusLedCount
LEDs on the strip.
Definition FluxBoardConfig.h:68
constexpr HfFunctionalGpioPin kInputPins[]
Pins that are inputs on Flux V1: the open-drain fault outputs of the two valve drivers.
Definition FluxBoardConfig.h:80
constexpr bool kPressureSpiUseIomux
IO MUX.
Definition FluxBoardConfig.h:44
constexpr uint8_t kMax22200SpiMode
Definition FluxBoardConfig.h:51
constexpr uint32_t kAds7952SpiHz
Definition FluxBoardConfig.h:58
constexpr uint8_t kPressureSpiController
ESP32-S3 SPI2_HOST.
Definition FluxBoardConfig.h:43