mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-27 08:10:34 +08:00
docs(script): fix up generator PWM outputs
This commit is contained in:
@@ -28,10 +28,11 @@ fc_doc_generator/
|
||||
│ └── <vendor>_<board>_wizard.json # User-supplied wizard overrides
|
||||
└── tests/
|
||||
├── conftest.py # snapshot fixture + board_* path fixtures
|
||||
├── fixtures/ # Minimal fake board trees (5 boards)
|
||||
├── fixtures/ # Minimal fake board trees
|
||||
│ ├── stm32h7_all_dshot/
|
||||
│ ├── stm32h7_mixed_io/
|
||||
│ ├── stm32h7_ppm_shared/
|
||||
│ ├── stm32h7_capture_channels/ # 8 regular + 8 initIOTimerChannelCapture outputs
|
||||
│ ├── stm32f4_no_dshot/
|
||||
│ └── imxrt_all_dshot/
|
||||
├── snapshots/ # Expected markdown output (.md files)
|
||||
@@ -56,6 +57,12 @@ python docs/scripts/fc_doc_generator/fc_doc_generator.py --apply
|
||||
# Apply a single section only:
|
||||
python docs/scripts/fc_doc_generator/fc_doc_generator.py --apply --section pwm_outputs
|
||||
|
||||
# Apply all sections to a single doc only (stem or filename, implies --apply):
|
||||
python docs/scripts/fc_doc_generator/fc_doc_generator.py --doc cuav_x25-evo.md
|
||||
|
||||
# Apply a single section to a single doc:
|
||||
python docs/scripts/fc_doc_generator/fc_doc_generator.py --doc cuav_x25-evo.md --section pwm_outputs
|
||||
|
||||
# Create a new stub FC doc (interactive wizard):
|
||||
python docs/scripts/fc_doc_generator/fc_doc_generator.py --new-doc
|
||||
|
||||
|
||||
@@ -279,6 +279,7 @@ def parse_timer_config(board_path: Path) -> dict:
|
||||
initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, …)
|
||||
initIOTimerChannelOutputClear(…) — same semantics, clears on disable
|
||||
initIOTimerChannelDshot(…) — iMXRT only: marks channel as DShot
|
||||
initIOTimerChannelCapture(…) — dual-purpose capture/output channel
|
||||
|
||||
The channel index (Channel1 = index 0, Channel2 = index 1, …) is extracted
|
||||
and stored for use by compute_bdshot() when determining per-channel BDShot
|
||||
@@ -331,6 +332,7 @@ def parse_timer_config(board_path: Path) -> dict:
|
||||
# Parse timer_io_channels[] array entries
|
||||
# Handle: initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, ...)
|
||||
# Handle: initIOTimerChannelOutputClear(...), initIOTimerChannelDshot(...)
|
||||
# Handle: initIOTimerChannelCapture(...) -- dual-purpose capture/output channels
|
||||
channels = []
|
||||
io_channels_match = re.search(
|
||||
r'constexpr\s+timer_io_channels_t\s+timer_io_channels\[.*?\]\s*=\s*\{(.*?)\};',
|
||||
@@ -341,7 +343,7 @@ def parse_timer_config(board_path: Path) -> dict:
|
||||
block = re.sub(r'//[^\n]*', '', io_channels_match.group(1))
|
||||
output_idx = 1
|
||||
for entry in re.finditer(
|
||||
r'(initIOTimerChannel(?:OutputClear|Dshot)?)\s*\(\s*io_timers\s*,\s*\{(?:Timer|PWM)::(\w+)\s*,\s*(?:Timer::|PWM::)?(\w+)\}',
|
||||
r'(initIOTimerChannel(?:OutputClear|Dshot|Capture)?)\s*\(\s*io_timers\s*,\s*\{(?:Timer|PWM)::(\w+)\s*,\s*(?:Timer::|PWM::)?(\w+)\}',
|
||||
block
|
||||
):
|
||||
func_name = entry.group(1)
|
||||
@@ -2485,8 +2487,8 @@ def generate_specifications_section(board_key: str, entry: dict) -> str:
|
||||
lines.append('### Interfaces')
|
||||
lines.append('')
|
||||
# Use group-derived count — DIRECT_PWM_OUTPUT_CHANNELS in board_config.h
|
||||
# counts all FMU timer channels including capture inputs; groups only count
|
||||
# initIOTimerChannel entries (actual servo outputs, not capture channels).
|
||||
# counts all FMU timer channels, which matches groups since
|
||||
# initIOTimerChannelCapture entries are also counted as outputs.
|
||||
groups = entry.get('groups') or []
|
||||
fmu_out = sum(len(g.get('outputs', [])) for g in groups)
|
||||
io_out = entry.get('io_outputs', 0) or 0
|
||||
@@ -2839,16 +2841,28 @@ def _has_no_rc_data(entry: dict) -> bool:
|
||||
)
|
||||
|
||||
|
||||
def apply_sections_to_docs(data: dict, sections: list = None) -> tuple:
|
||||
"""Apply generated sections to FC doc files. Returns (updated, skipped) lists."""
|
||||
def apply_sections_to_docs(data: dict, sections: list = None, doc_filter: str = None) -> tuple:
|
||||
"""Apply generated sections to FC doc files. Returns (updated, skipped) lists.
|
||||
|
||||
doc_filter: if given, only process the board whose doc_file matches this
|
||||
filename (e.g. 'cuav_x25-evo.md'). Stem-only ('cuav_x25-evo') also accepted.
|
||||
"""
|
||||
sections_to_apply = sections or APPLY_SECTIONS
|
||||
updated, skipped = [], []
|
||||
|
||||
# Normalise filter to bare filename with extension
|
||||
if doc_filter:
|
||||
p = Path(doc_filter)
|
||||
doc_filter_name = p.name if p.suffix else p.name + ".md"
|
||||
|
||||
for key, entry in data.items():
|
||||
doc_filename = entry.get('doc_file')
|
||||
if not doc_filename:
|
||||
skipped.append((key, 'no doc mapping'))
|
||||
continue
|
||||
if doc_filter and doc_filename != doc_filter_name:
|
||||
skipped.append((key, f'filtered (not {doc_filter_name})'))
|
||||
continue
|
||||
doc_path = FC_DOCS / doc_filename
|
||||
if not doc_path.exists():
|
||||
skipped.append((key, f'doc not found: {doc_filename}'))
|
||||
@@ -4355,6 +4369,12 @@ if __name__ == "__main__":
|
||||
"--section", choices=list(SECTION_GENERATORS.keys()), default=None,
|
||||
help="Apply only this section key (implies --apply).",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--doc", default=None,
|
||||
metavar="FILENAME",
|
||||
help="Apply only to this doc file, e.g. cuav_x25-evo.md (implies --apply). "
|
||||
"Stem without extension is also accepted.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--output-dir", type=Path, default=None,
|
||||
metavar="DIR",
|
||||
@@ -4454,8 +4474,8 @@ if __name__ == "__main__":
|
||||
print(f"Boards with existing PWM section: {documented}")
|
||||
print(f"Boards with any DShot: {dshot_boards}")
|
||||
|
||||
if args.apply or args.section:
|
||||
if args.apply or args.section or args.doc:
|
||||
sections = [args.section] if args.section else None
|
||||
print()
|
||||
updated, skipped = apply_sections_to_docs(data, sections)
|
||||
updated, skipped = apply_sections_to_docs(data, sections, doc_filter=args.doc)
|
||||
print(f"\nApply done. Updated: {len(updated)}, Skipped: {len(skipped)}")
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -69,6 +69,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer8",
|
||||
"outputs": [
|
||||
10
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
10
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,54 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer8",
|
||||
"outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 5,
|
||||
"timer": "Timer15",
|
||||
"outputs": [
|
||||
12
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
12
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 6,
|
||||
"timer": "Timer12",
|
||||
"outputs": [
|
||||
13,
|
||||
14
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
13,
|
||||
14
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -56,6 +56,58 @@
|
||||
"bdshot_output_only": [
|
||||
8
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": 3,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer8",
|
||||
"outputs": [
|
||||
12,
|
||||
13,
|
||||
14
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
12,
|
||||
13,
|
||||
14
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 5,
|
||||
"timer": "Timer12",
|
||||
"outputs": [
|
||||
15,
|
||||
16
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
15,
|
||||
16
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -56,6 +56,58 @@
|
||||
"bdshot_output_only": [
|
||||
8
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": 3,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer8",
|
||||
"outputs": [
|
||||
12,
|
||||
13,
|
||||
14
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
12,
|
||||
13,
|
||||
14
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 5,
|
||||
"timer": "Timer12",
|
||||
"outputs": [
|
||||
15,
|
||||
16
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
15,
|
||||
16
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -46,6 +46,40 @@
|
||||
5
|
||||
],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 3,
|
||||
"timer": "Timer2",
|
||||
"outputs": [
|
||||
6,
|
||||
7,
|
||||
8
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
6,
|
||||
7,
|
||||
8
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer12",
|
||||
"outputs": [
|
||||
9,
|
||||
10
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9,
|
||||
10
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -62,6 +62,24 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer2",
|
||||
"outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -62,6 +62,24 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer2",
|
||||
"outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer5",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -65,6 +65,20 @@
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
},
|
||||
{
|
||||
"group": 4,
|
||||
"timer": "Timer1",
|
||||
"outputs": [
|
||||
9
|
||||
],
|
||||
"dshot": false,
|
||||
"dshot_outputs": [],
|
||||
"non_dshot_outputs": [
|
||||
9
|
||||
],
|
||||
"bdshot_outputs": [],
|
||||
"bdshot_output_only": []
|
||||
}
|
||||
],
|
||||
"serial_ports": [
|
||||
|
||||
@@ -120,3 +120,9 @@ def board_stm32h7_variant():
|
||||
def board_stm32h7_graceful_fail():
|
||||
"""STM32H7, graceful-fail pattern: BMI088 starts unconditionally AND in VD000000 block."""
|
||||
return FIXTURES_DIR / "stm32h7_graceful_fail"
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def board_stm32h7_capture_channels():
|
||||
"""STM32H7, 16 outputs: 8 regular (DShot) + 8 initIOTimerChannelCapture (no DShot)."""
|
||||
return FIXTURES_DIR / "stm32h7_capture_channels"
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
# minimal fixture for capture-channel parser test
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
CONFIG_ARCH_CHIP_STM32H7=y
|
||||
CONFIG_MMCSD=y
|
||||
CONFIG_MMCSD_SDIO=y
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#define DIRECT_PWM_OUTPUT_CHANNELS 16
|
||||
#define BOARD_NUM_IO_TIMERS 5
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
#include <px4_arch/io_timer_hw_description.h>
|
||||
|
||||
/* Fixture modelling boards like cuav/x25-evo that use initIOTimerChannelCapture
|
||||
* for their higher-numbered outputs. Timer5 and Timer4 have DMA (DShot); the
|
||||
* remaining three timers do not.
|
||||
*/
|
||||
|
||||
constexpr io_timers_t io_timers[MAX_IO_TIMERS] = {
|
||||
initIOTimer(Timer::Timer5, DMA{DMA::Index1}),
|
||||
initIOTimer(Timer::Timer4, DMA{DMA::Index1}),
|
||||
initIOTimer(Timer::Timer1),
|
||||
initIOTimer(Timer::Timer8),
|
||||
initIOTimer(Timer::Timer12),
|
||||
};
|
||||
|
||||
constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = {
|
||||
initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel4}, {}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel3}, {}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel2}, {}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, {}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel2}, {}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel3}, {}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel1}, {}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel4}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer1, Timer::Channel2}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer1, Timer::Channel1}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer1, Timer::Channel3}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer8, Timer::Channel2}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer8, Timer::Channel3}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer8, Timer::Channel1}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer12, Timer::Channel1}, {}),
|
||||
initIOTimerChannelCapture(io_timers, {Timer::Timer12, Timer::Channel2}, {}),
|
||||
};
|
||||
|
||||
constexpr io_timers_channel_mapping_t io_timers_channel_mapping =
|
||||
initIOTimerChannelMapping(io_timers, timer_io_channels);
|
||||
@@ -337,7 +337,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- ICP-20100 (barometer, internal)
|
||||
@@ -350,7 +350,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
- ICM-42688P (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: PPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -375,7 +375,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -465,14 +465,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -663,14 +664,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -1291,7 +1293,7 @@ Serial port mapping could not be determined from source.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- BMP388 (barometer, internal)
|
||||
@@ -1299,7 +1301,7 @@ Serial port mapping could not be determined from source.
|
||||
- **SPI buses**: 5
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus/CPPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -1324,7 +1326,7 @@ Serial port mapping could not be determined from source.
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -1413,14 +1415,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -1617,14 +1620,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -2616,7 +2620,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 9 (FMU)
|
||||
- **PWM outputs**: 10 (FMU)
|
||||
- **Serial ports**: 7
|
||||
- **I2C ports**: 2
|
||||
- BMP388 (barometer, internal, bus 4)
|
||||
@@ -2649,7 +2653,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
"chip_model": "STM32H743",
|
||||
"has_io_board": false,
|
||||
"total_outputs": 10,
|
||||
"fmu_servo_outputs": 9,
|
||||
"fmu_servo_outputs": 10,
|
||||
"io_outputs": 0,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -2732,14 +2736,15 @@ This flight controller supports up to 10 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-8 support [DShot](../peripherals/dshot.md).
|
||||
- Output 9 does not support DShot.
|
||||
- Outputs 9-10 do not support DShot.
|
||||
- Outputs 1-8 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 10 outputs are in 3 groups:
|
||||
The 10 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Outputs 5-8 in group2 (Timer3)
|
||||
- Output 9 in group3 (Timer5)
|
||||
- Output 10 in group4 (Timer8)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -2933,7 +2938,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- BMP388 (barometer, internal)
|
||||
@@ -2946,7 +2951,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
- ICM-20602 (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus/CPPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -2970,7 +2975,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -3056,14 +3061,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -4478,7 +4484,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 8 (FMU)
|
||||
- **PWM outputs**: 14 (FMU)
|
||||
- **Serial ports**: 7
|
||||
- **I2C ports**: 4
|
||||
- ICP-20100 (barometer, internal)
|
||||
@@ -4514,7 +4520,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": false,
|
||||
"total_outputs": 14,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 14,
|
||||
"io_outputs": 0,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -4599,14 +4605,17 @@ This flight controller supports up to 14 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-14 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 14 outputs are in 3 groups:
|
||||
The 14 outputs are in 6 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer1)
|
||||
- Outputs 9-11 in group4 (Timer8)
|
||||
- Output 12 in group5 (Timer15)
|
||||
- Outputs 13-14 in group6 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -4808,7 +4817,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- BMP581 (barometer, external, bus 2)
|
||||
@@ -4821,7 +4830,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
- ICM-45686 (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: PPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -4846,7 +4855,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -4934,14 +4943,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -5132,14 +5142,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -5526,7 +5537,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 8 (FMU)
|
||||
- **PWM outputs**: 16 (FMU)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- ICP-20100 (barometer, internal, bus 4)
|
||||
@@ -5562,7 +5573,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32H743",
|
||||
"has_io_board": false,
|
||||
"total_outputs": 16,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 16,
|
||||
"io_outputs": 0,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -5648,13 +5659,17 @@ This flight controller supports up to 16 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-8 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 9-16 do not support DShot.
|
||||
- Outputs 1-7 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
- Output 8 supports Bidirectional DShot output only (no eRPM capture).
|
||||
|
||||
The 16 outputs are in 2 groups:
|
||||
The 16 outputs are in 5 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-8 in group2 (Timer4)
|
||||
- Outputs 9-11 in group3 (Timer1)
|
||||
- Outputs 12-14 in group4 (Timer8)
|
||||
- Outputs 15-16 in group5 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -5841,13 +5856,17 @@ This flight controller supports up to 16 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-8 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 9-16 do not support DShot.
|
||||
- Outputs 1-7 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
- Output 8 supports Bidirectional DShot output only (no eRPM capture).
|
||||
|
||||
The 16 outputs are in 2 groups:
|
||||
The 16 outputs are in 5 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-8 in group2 (Timer4)
|
||||
- Outputs 9-11 in group3 (Timer1)
|
||||
- Outputs 12-14 in group4 (Timer8)
|
||||
- Outputs 15-16 in group5 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -5876,7 +5895,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 8 (FMU)
|
||||
- **PWM outputs**: 16 (FMU)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- ICP-20100 (barometer, internal, bus 4)
|
||||
@@ -5912,7 +5931,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32H743",
|
||||
"has_io_board": false,
|
||||
"total_outputs": 16,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 16,
|
||||
"io_outputs": 0,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -5997,13 +6016,17 @@ This flight controller supports up to 16 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-8 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 9-16 do not support DShot.
|
||||
- Outputs 1-7 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
- Output 8 supports Bidirectional DShot output only (no eRPM capture).
|
||||
|
||||
The 16 outputs are in 2 groups:
|
||||
The 16 outputs are in 5 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-8 in group2 (Timer4)
|
||||
- Outputs 9-11 in group3 (Timer1)
|
||||
- Outputs 12-14 in group4 (Timer8)
|
||||
- Outputs 15-16 in group5 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -6190,13 +6213,17 @@ This flight controller supports up to 16 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-8 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 9-16 do not support DShot.
|
||||
- Outputs 1-7 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
- Output 8 supports Bidirectional DShot output only (no eRPM capture).
|
||||
|
||||
The 16 outputs are in 2 groups:
|
||||
The 16 outputs are in 5 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-8 in group2 (Timer4)
|
||||
- Outputs 9-11 in group3 (Timer1)
|
||||
- Outputs 12-14 in group4 (Timer8)
|
||||
- Outputs 15-16 in group5 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -6596,6 +6623,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -6932,6 +6960,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -7270,6 +7299,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -9642,7 +9672,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 13 (5 FMU + 8 IO)
|
||||
- **PWM outputs**: 18 (10 FMU + 8 IO)
|
||||
- **Serial ports**: 7
|
||||
- **I2C ports**: 4
|
||||
- IST8310 (magnetometer, internal)
|
||||
@@ -9652,6 +9682,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
- MS5611 (barometer)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -9675,7 +9706,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
"chip_model": "STM32H743",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 10,
|
||||
"fmu_servo_outputs": 5,
|
||||
"fmu_servo_outputs": 10,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": false,
|
||||
@@ -9758,12 +9789,18 @@ For battery and power module configuration see [Battery and Power Module Setup](
|
||||
|
||||
This flight controller supports up to 10 FMU PWM outputs (AUX) and 8 IO PWM outputs (MAIN).
|
||||
|
||||
All FMU outputs support [DShot](../peripherals/dshot.md) and [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
FMU Outputs:
|
||||
|
||||
The 10 outputs are in 2 groups:
|
||||
- Outputs 1-5 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 6-10 do not support DShot.
|
||||
- Outputs 1-5 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 10 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Output 5 in group2 (Timer4)
|
||||
- Outputs 6-8 in group3 (Timer2)
|
||||
- Outputs 9-10 in group4 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -9945,12 +9982,18 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
|
||||
This flight controller supports up to 10 FMU PWM outputs (AUX) and 8 IO PWM outputs (MAIN).
|
||||
|
||||
All FMU outputs support [DShot](../peripherals/dshot.md) and [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
FMU Outputs:
|
||||
|
||||
The 10 outputs are in 2 groups:
|
||||
- Outputs 1-5 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 6-10 do not support DShot.
|
||||
- Outputs 1-5 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 10 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Output 5 in group2 (Timer4)
|
||||
- Outputs 6-8 in group3 (Timer2)
|
||||
- Outputs 9-10 in group4 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -11970,7 +12013,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 19 (11 FMU + 8 IO)
|
||||
- **Serial ports**: 7
|
||||
- **I2C ports**: 4
|
||||
- IST8310 (magnetometer, internal)
|
||||
@@ -11982,7 +12025,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- **CAN buses**: 3
|
||||
- **USB**: Yes
|
||||
- **RC input**: PPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -12005,7 +12048,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32F765",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 11,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 11,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": false,
|
||||
@@ -12091,14 +12134,15 @@ This flight controller supports up to 11 FMU PWM outputs (AUX) and 8 IO PWM outp
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-4 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 5-8 do not support DShot.
|
||||
- Outputs 5-11 do not support DShot.
|
||||
- Outputs 1-4 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 11 outputs are in 3 groups:
|
||||
The 11 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Outputs 9-11 in group4 (Timer2)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -12283,14 +12327,15 @@ This flight controller supports up to 11 FMU PWM outputs (AUX) and 8 IO PWM outp
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-4 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 5-8 do not support DShot.
|
||||
- Outputs 5-11 do not support DShot.
|
||||
- Outputs 1-4 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 11 outputs are in 3 groups:
|
||||
The 11 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Outputs 9-11 in group4 (Timer2)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -15173,7 +15218,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- ICM-42688P (IMU)
|
||||
- **CAN buses**: 1
|
||||
- **USB**: Yes
|
||||
- **RC input**: PPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -17683,6 +17728,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MPU-9250 (IMU)
|
||||
- MS5611 (barometer)
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -17990,6 +18036,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MPU-9250 (IMU)
|
||||
- MS5611 (barometer)
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -20816,6 +20863,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- HMC5883L (magnetometer)
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -21122,6 +21170,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- HMC5883L (magnetometer)
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -21728,7 +21777,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- LIS3MDL (magnetometer)
|
||||
- **USB**: Yes
|
||||
- **RC input**: PPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -22032,7 +22081,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 19 (11 FMU + 8 IO)
|
||||
- **Serial ports**: 7
|
||||
- **I2C ports**: 4
|
||||
- IST8310 (magnetometer, internal)
|
||||
@@ -22043,7 +22092,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MS5611 (barometer)
|
||||
- **CAN buses**: 3
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus/CPPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -22067,7 +22116,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32F765",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 11,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 11,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": false,
|
||||
@@ -22154,14 +22203,15 @@ This flight controller supports up to 11 FMU PWM outputs (AUX) and 8 IO PWM outp
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-4 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 5-8 do not support DShot.
|
||||
- Outputs 5-11 do not support DShot.
|
||||
- Outputs 1-4 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 11 outputs are in 3 groups:
|
||||
The 11 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Outputs 9-11 in group4 (Timer2)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -22345,14 +22395,15 @@ This flight controller supports up to 11 FMU PWM outputs (AUX) and 8 IO PWM outp
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-4 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 5-8 do not support DShot.
|
||||
- Outputs 5-11 do not support DShot.
|
||||
- Outputs 1-4 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 11 outputs are in 3 groups:
|
||||
The 11 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Outputs 9-11 in group4 (Timer2)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -22382,7 +22433,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- BMM150 (magnetometer, internal)
|
||||
@@ -22392,7 +22443,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- ICM-20602 (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus/CPPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -22417,7 +22468,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32F765",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -22508,14 +22559,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer5)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -22711,14 +22763,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer1)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer5)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -22758,6 +22811,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- ICM-42688P (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -23097,7 +23151,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 8 (FMU)
|
||||
- **PWM outputs**: 9 (FMU)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- BMP388 (barometer, internal)
|
||||
@@ -23132,7 +23186,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": false,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 0,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": false,
|
||||
@@ -23218,14 +23272,15 @@ This flight controller supports up to 9 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -23413,14 +23468,15 @@ This flight controller supports up to 9 FMU PWM outputs (MAIN).
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -23450,14 +23506,14 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- IST8310 (magnetometer, external, bus 1)
|
||||
- **SPI buses**: 5
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus/CPPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -23482,7 +23538,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -23574,14 +23630,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -23777,14 +23834,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -23822,7 +23880,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- IST8310 (magnetometer, external, bus 1)
|
||||
- **SPI buses**: 4
|
||||
- **USB**: TODO: confirm USB connector type
|
||||
- **RC input**: DSM/SRXL2, S.Bus/CPPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -24460,7 +24518,7 @@ Serial port mapping could not be determined from source.
|
||||
- BMI088 (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -25072,6 +25130,7 @@ Serial port mapping could not be determined from source.
|
||||
- MS5611 (barometer)
|
||||
- **CAN buses**: 1
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -25385,7 +25444,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
- MPU-9250 (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: PPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -26044,7 +26103,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- ICP-20100 (barometer, external)
|
||||
@@ -26057,7 +26116,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- ICM-20649 (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus/CPPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -26082,7 +26141,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -26172,14 +26231,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
@@ -26370,14 +26430,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
-->
|
||||
@@ -26414,6 +26475,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MPU-9250 (IMU)
|
||||
- MS5611 (barometer)
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -26715,6 +26777,7 @@ All outputs within the same group must use the same output protocol and rate.
|
||||
- MPU-9250 (IMU)
|
||||
- MS5611 (barometer)
|
||||
- **USB**: Yes
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -27301,7 +27364,7 @@ Serial port mapping could not be determined from source.
|
||||
- BMI270 (IMU)
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: DSM/SRXL2, S.Bus
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST (via IO)
|
||||
- **Analog battery inputs**: 1
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
|
||||
@@ -28580,7 +28643,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
|
||||
### Interfaces
|
||||
|
||||
- **PWM outputs**: 16 (8 FMU + 8 IO)
|
||||
- **PWM outputs**: 17 (9 FMU + 8 IO)
|
||||
- **Serial ports**: 8
|
||||
- **I2C ports**: 4
|
||||
- ICP-20100 (barometer, internal)
|
||||
@@ -28591,7 +28654,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
- **SPI buses**: 5
|
||||
- **CAN buses**: 2
|
||||
- **USB**: Yes
|
||||
- **RC input**: PPM
|
||||
- **RC input**: SBUS, DSM/DSMX, ST24, SUMD, CRSF, GHST, PPM (via IO)
|
||||
- **Analog battery inputs**: 2
|
||||
- **Additional analog inputs**: TODO: number of additional analog inputs
|
||||
- **Ethernet**: Yes
|
||||
@@ -28616,7 +28679,7 @@ For more information see [Basic Concepts > SD Cards (Removable Memory)](../getti
|
||||
"chip_model": "STM32H753",
|
||||
"has_io_board": true,
|
||||
"total_outputs": 9,
|
||||
"fmu_servo_outputs": 8,
|
||||
"fmu_servo_outputs": 9,
|
||||
"io_outputs": 8,
|
||||
"has_sd_card": true,
|
||||
"has_ethernet": true,
|
||||
@@ -28701,14 +28764,15 @@ This flight controller supports up to 9 FMU PWM outputs (AUX) and 8 IO PWM outpu
|
||||
FMU Outputs:
|
||||
|
||||
- Outputs 1-6 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 7-8 do not support DShot.
|
||||
- Outputs 7-9 do not support DShot.
|
||||
- Outputs 1-6 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
|
||||
The 9 outputs are in 3 groups:
|
||||
The 9 outputs are in 4 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-6 in group2 (Timer4)
|
||||
- Outputs 7-8 in group3 (Timer12)
|
||||
- Output 9 in group4 (Timer1)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
```
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
## PWM Outputs {#pwm_outputs}
|
||||
|
||||
This flight controller supports up to 16 FMU PWM outputs (MAIN).
|
||||
|
||||
Outputs:
|
||||
|
||||
- Outputs 1-8 support [DShot](../peripherals/dshot.md).
|
||||
- Outputs 9-16 do not support DShot.
|
||||
- Outputs 1-7 support [Bidirectional DShot](../peripherals/dshot.md#bidirectional-dshot-telemetry).
|
||||
- Output 8 supports Bidirectional DShot output only (no eRPM capture).
|
||||
|
||||
The 16 outputs are in 5 groups:
|
||||
|
||||
- Outputs 1-4 in group1 (Timer5)
|
||||
- Outputs 5-8 in group2 (Timer4)
|
||||
- Outputs 9-11 in group3 (Timer1)
|
||||
- Outputs 12-14 in group4 (Timer8)
|
||||
- Outputs 15-16 in group5 (Timer12)
|
||||
|
||||
All outputs within the same group must use the same output protocol and rate.
|
||||
@@ -148,3 +148,45 @@ class TestComputeBdshot:
|
||||
groups = fcdg.compute_groups(timers, channels)
|
||||
groups = fcdg.compute_bdshot(groups, channels, "unknown")
|
||||
assert all(g["bdshot_outputs"] == [] for g in groups)
|
||||
|
||||
def test_capture_channel_no_bdshot_on_no_dma_timers(self, board_stm32h7_capture_channels):
|
||||
# Timer1/Timer8/Timer12 have no DMA → dshot=False → bdshot=False
|
||||
timers, channels = _parse(board_stm32h7_capture_channels)
|
||||
groups = fcdg.compute_groups(timers, channels)
|
||||
groups = fcdg.compute_bdshot(groups, channels, "stm32h7")
|
||||
for g in groups:
|
||||
if g["timer"] in ("Timer1", "Timer8", "Timer12"):
|
||||
assert g["dshot"] is False
|
||||
assert g["bdshot"] is False
|
||||
assert g["bdshot_outputs"] == []
|
||||
|
||||
|
||||
class TestComputeGroupsCapture:
|
||||
def test_capture_group_count(self, board_stm32h7_capture_channels):
|
||||
timers, channels = _parse(board_stm32h7_capture_channels)
|
||||
groups = fcdg.compute_groups(timers, channels)
|
||||
assert len(groups) == 5
|
||||
|
||||
def test_capture_total_outputs(self, board_stm32h7_capture_channels):
|
||||
timers, channels = _parse(board_stm32h7_capture_channels)
|
||||
groups = fcdg.compute_groups(timers, channels)
|
||||
all_outputs = sorted(o for g in groups for o in g["outputs"])
|
||||
assert all_outputs == list(range(1, 17))
|
||||
|
||||
def test_capture_dshot_only_on_dma_timers(self, board_stm32h7_capture_channels):
|
||||
timers, channels = _parse(board_stm32h7_capture_channels)
|
||||
groups = fcdg.compute_groups(timers, channels)
|
||||
dshot_groups = {g["timer"] for g in groups if g["dshot"]}
|
||||
assert dshot_groups == {"Timer5", "Timer4"}
|
||||
non_dshot_groups = {g["timer"] for g in groups if not g["dshot"]}
|
||||
assert non_dshot_groups == {"Timer1", "Timer8", "Timer12"}
|
||||
|
||||
def test_capture_timer_group_memberships(self, board_stm32h7_capture_channels):
|
||||
timers, channels = _parse(board_stm32h7_capture_channels)
|
||||
groups = fcdg.compute_groups(timers, channels)
|
||||
by_timer = {g["timer"]: g["outputs"] for g in groups}
|
||||
assert by_timer["Timer5"] == [1, 2, 3, 4]
|
||||
assert by_timer["Timer4"] == [5, 6, 7, 8]
|
||||
assert by_timer["Timer1"] == [9, 10, 11]
|
||||
assert by_timer["Timer8"] == [12, 13, 14]
|
||||
assert by_timer["Timer12"] == [15, 16]
|
||||
|
||||
@@ -107,6 +107,29 @@ def _entry_imxrt():
|
||||
}
|
||||
|
||||
|
||||
def _entry_stm32h7_capture_channels():
|
||||
"""16 outputs: 8 with DShot (Timer5/Timer4) + 8 capture-only (Timer1/Timer8/Timer12)."""
|
||||
return {
|
||||
"has_io_board": False, "total_outputs": 16, "io_outputs": 0,
|
||||
"serial_ports": [],
|
||||
"has_rc_input": False, "has_common_rc": False, "rc_serial_device": None,
|
||||
"has_ppm_pin": False, "ppm_shared_with_rc_serial": False,
|
||||
"has_pps_capture": False, "has_safety_switch": False, "has_safety_led": False,
|
||||
"has_buzzer": False,
|
||||
"num_power_inputs": 1, "has_redundant_power": False,
|
||||
"has_dual_battery_monitoring": False, "has_dronecan_power_input": False,
|
||||
"power_monitor_type": "analog", "has_sd_card": True,
|
||||
"rc_ports_wizard": None, "gps_ports_wizard": None, "power_ports_wizard": None,
|
||||
"groups": [
|
||||
_group(1, "Timer5", [1, 2, 3, 4], bdshot_outputs=[1, 2, 3, 4]),
|
||||
_group(2, "Timer4", [5, 6, 7, 8], bdshot_outputs=[5, 6, 7], bdshot_output_only=[8]),
|
||||
_group(3, "Timer1", [9, 10, 11], dshot=False),
|
||||
_group(4, "Timer8", [12, 13, 14], dshot=False),
|
||||
_group(5, "Timer12", [15, 16], dshot=False),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def _entry_stm32f4_no_dshot():
|
||||
return {
|
||||
"has_io_board": False, "total_outputs": 6, "io_outputs": 0,
|
||||
@@ -151,6 +174,10 @@ class TestGeneratePwmSection:
|
||||
result = fcdg.generate_pwm_section(BOARD_KEY, _entry_imxrt())
|
||||
snapshot("pwm_imxrt_all_dshot.md", result)
|
||||
|
||||
def test_stm32h7_capture_channels(self, snapshot):
|
||||
result = fcdg.generate_pwm_section(BOARD_KEY, _entry_stm32h7_capture_channels())
|
||||
snapshot("pwm_stm32h7_capture_channels.md", result)
|
||||
|
||||
def test_stm32f4_no_dshot(self, snapshot):
|
||||
result = fcdg.generate_pwm_section(BOARD_KEY, _entry_stm32f4_no_dshot())
|
||||
snapshot("pwm_stm32f4_no_dshot.md", result)
|
||||
|
||||
@@ -112,6 +112,24 @@ class TestParseTimerConfig:
|
||||
result = fcdg.parse_timer_config(board_imxrt)
|
||||
assert len(result["channels"]) == 8
|
||||
|
||||
def test_capture_channel_count(self, board_stm32h7_capture_channels):
|
||||
# 8 regular + 8 initIOTimerChannelCapture = 16 total
|
||||
result = fcdg.parse_timer_config(board_stm32h7_capture_channels)
|
||||
assert len(result["channels"]) == 16
|
||||
|
||||
def test_capture_channels_include_capture_timers(self, board_stm32h7_capture_channels):
|
||||
result = fcdg.parse_timer_config(board_stm32h7_capture_channels)
|
||||
timer_names = {ch["timer"] for ch in result["channels"]}
|
||||
assert "Timer1" in timer_names
|
||||
assert "Timer8" in timer_names
|
||||
assert "Timer12" in timer_names
|
||||
|
||||
def test_capture_channels_output_indices(self, board_stm32h7_capture_channels):
|
||||
# All 16 outputs are numbered 1..16 in order
|
||||
result = fcdg.parse_timer_config(board_stm32h7_capture_channels)
|
||||
indices = [ch["output_index"] for ch in result["channels"]]
|
||||
assert indices == list(range(1, 17))
|
||||
|
||||
def test_stm32f4_no_dshot(self, board_stm32f4):
|
||||
result = fcdg.parse_timer_config(board_stm32f4)
|
||||
assert all(not t["dshot"] for t in result["timers"])
|
||||
|
||||
Reference in New Issue
Block a user