Прошивки CleanFlight/BetaFlight для полетников

Кариёзный_монстр
SkyPlayer:

Кажется, разобрался - надо даташит на STM внимательное читать, блин. 😃
У каждого вывода STM-ки есть фиксированный перечень доступных функций, и usart_rx/usart_tx абы куда не перекинешь. .

Так на всех МК с которыми я работал )

Михаил_Ка

Приветствую
Собираю квадр.

Конфигурация: контроллер OmniBus F4 Pro Corner, видео передатчик Tramp HV, регуляторы Wraith32, камера RunCam Split v1, приемник FrSky XSR, пульт Taranis QX7.

Подключение:
Uart 1
RX1 - к телеметрии регуляторов
TX1 - SoftSerial 1 - на T-pin Tramp (smart audio)
Uart 3
RX3 - SBUS приемник XSR (беру не инвертированный сигнал)
TX3 - SoftSerial 2 - SmartPort приемник XSR (беру не инвертированный сигнал)
Uart 6
RX6 - на TX RunCam Split
TX6 - на RX RunCam Split

Работают: показания тока и напряжения с ESC, SBUS, управление камерой, OSD.
Не работает: управление Tramp`ом с пульта через OSD (переключение каналов, мощности), из телеметрии на пульте вижу только показания F000, RSSI, RxBt, и A2.

Поиск датчиков на пульте пробовал в режиме ARM и DISARM.
Подскажите где копать?

И второй вопрос по команде в CLI: serial - Что зачат цифры между номером порта и скоростью?
на GitHub`е написано Function bitmask (see serialPortFunction_e in the source), а найти этот самый serialPortFunction_e у меня не получилось, поэтому serial настраивал по аналогии с чужими сетапами. Где взять таблицу соответствия устройства и этой самой маски?

Темы на rcgroups и rcgroups 2 читал, SmartPort по 2 пинам подключать не хочу.

Еще где-то читал (ссылку не помню), что S Audio и S port в Бетафлае 3.1 на двух разных софтсериал не дружат (но было это упоминание в одном месте и про другую плату, сейчас у меня установлена версия Betaflight / OMNIBUSF4SD (OBSD) 3.2.2). FrSky XSR прошивал последней версией не для Европы, так же как и пульт и передатчик в нем.

Настройки CLI:

resource SERIAL_TX 6 C06
resource SERIAL_TX 11 A09
resource SERIAL_TX 12 B10
resource SERIAL_RX 1 A10
resource SERIAL_RX 3 B11
resource SERIAL_RX 6 C07
resource INVERTER 3 C09
resource INVERTER 6 C08

# feature
Enabled: RX_SERIAL MOTOR_STOP SOFTSERIAL TELEMETRY RSSI_ADC LED_STRIP OSD  ESC_SENSOR ANTI_GRAVITY DYNAMIC_FILTER

# serial
serial 20 1 115200 57600 0 115200
serial 0 1024 115200 57600 0 115200
serial 2 64 115200 57600 0 115200
serial 5 16384 115200 57600 0 115200
serial 30 2048 115200 57600 0 115200
serial 31 32 115200 57600 0 115200

set tlm_halfduplex = on
set tlm_inverted = on (пробовал менять на off на всякий случай- без результата)


# status
System Uptime: 24 seconds
Voltage: 0 * 0.1V (0S battery - NOT PRESENT)
CPU Clock=240MHz, GYRO=ICM20608G, ACC=ICM20608, BARO=BMP280
SD card: None inserted
Stack size: 2048, Stack address: 0x10010000
I2C Errors: 0, config size: 2084, max available config: 16384
CPU:5%, cycle time: 125, GYRO rate: 8000, RX rate: 111, System rate: 9
Arming disable flags: THROTTLE CLI
SkyPlayer
Михаил_Ка:

Не работает: управление Tramp`ом с пульта через OSD (переключение каналов, мощности)

Не работает смартаудио

Михаил_Ка:

из телеметрии на пульте вижу только показания F000, RSSI, RxBt, и A2.

Не работает с-порт телеметрии от полётника до приёмника - указанные параметры генерит сугубо сам приёмник.

Михаил_Ка
SkyPlayer:

Не работает смартаудио

SkyPlayer:

Не работает с-порт телеметрии от полётника до приёмника - указанные параметры генерит сугубо сам приёмник.

То что они не работают это я понял, потому и спросил. А вот куда смотреть?
Пробовал отключить второй СофСериал, оставить только S Audio- не заработало.

Если чем-то поможет найти причину, могу выложить все настройки CLI.

lunohod

Если передатчик tramp, то и выбирать надо не smartaudio, а tramp telemetry или как там его.

Михаил_Ка:

И второй вопрос по команде в CLI: serial - Что зачат цифры между номером порта и скоростью? на GitHub`е написано Function bitmask (see serialPortFunction_e in the source), а найти этот самый serialPortFunction_e у меня не получилось, поэтому serial настраивал по аналогии с чужими сетапами. Где взять таблицу соответствия устройства и этой самой маски

github.com/betaflight/betaflight/blob/…/serial.h#L…

Проще в конфигураторе настроить.

ЕМНИП, телеметрия не работает при подключенном конфигураторе.

Михаил_Ка
lunohod:

Если передатчик tramp, то и выбирать надо не smartaudio, а tramp telemetry или как там его.

Его то же выбирал (забыл написать) как вариант.

При выборе tramp строка получается:
serial 30 8192 115200 57600 0 115200
при выборе SmartAudio меняется на
serial 30 2048 115200 57600 0 115200

при этом в OSD в меню VTX SmartAudio> STATX
выбрав tramp получаю значения (постоянные значения):
STATUS OFFL
Baudrate 4800
Sent 0
остальные 0

а выбрав Samart Audio получаю значения:
STATUS OFFL
Baudrate 4800 меняется до 4950 и обратно
Sent от 0 до 10
остальные 0

Поэтому и спрашивал про параметры команды Serial.

Михаил_Ка
lunohod:

ЕМНИП, телеметрия не работает при подключенном конфигураторе.

Пробовал и с отключенным- эффект тот же.

lunohod:

Пины для softserial верно настроены? Куда вообще подключены tramp и sport?

TX1 - SoftSerial 1 на PA09
TX3 - SoftSerial 2 на PB10

Tramp подключен от t-pin на контроллер J27 TX1
XSR подключен от Sport на контроллер J1 TX3

Михаил_Ка
lunohod:

resource list что показывает?

# resource list
Currently active IO resource assignments:
(reboot to update)
--------------------
A00: ADC_RSSI
A01: FREE
A02: MOTOR 1
A03: MOTOR 2
A04: MPU_CS
A05: SPI_SCK 1
A06: SPI_MISO 1
A07: SPI_MOSI 1
A08: FREE
A09: SERIAL_TX 11
A10: SERIAL_RX 1
A11: USB
A12: USB
A15: OSD_CS
B00: MOTOR 4
B01: MOTOR 3
B03: BARO_CS
B04: BEEPER
B05: LED 1
B06: LED_STRIP
B07: SDCARD_DETECT
B08: FREE
B09: FREE
B10: FREE
B11: SERIAL_RX 3
B12: SDCARD_CS
B13: SPI_SCK 2
B14: SPI_MISO 2
B15: SPI_MOSI 2
C00: FREE
C01: FREE
C02: FREE
C03: FREE
C04: MPU_EXTI
C05: FREE
C06: SERIAL_TX 6
C07: SERIAL_RX 6
C08: INVERTER 6
C09: INVERTER 3
C10: SPI_SCK 3
C11: SPI_MISO 3
C12: SPI_MOSI 3
D02: FREE

Currently active DMA:
--------------------
DMA1 Stream 0: LED_STRIP
DMA1 Stream 1: MOTOR 1
DMA1 Stream 2: MOTOR 3
DMA1 Stream 3: FREE
DMA1 Stream 4: FREE
DMA1 Stream 5: FREE
DMA1 Stream 6: MOTOR 2
DMA1 Stream 7: MOTOR 4
DMA2 Stream 0: FREE
DMA2 Stream 1: FREE
DMA2 Stream 2: FREE
DMA2 Stream 3: FREE
DMA2 Stream 4: ADC
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE
lunohod:

На PA11 и PB10 больше ничего не сконфигурировано?

Что то неувязочка вышла с resource list буду разбираться
PA11 не правильно написал softserial 1 на PA09

Михаил_Ка
lunohod:

На B10 отсутствует SERIAL_TX 12, но это sport. Отчего tramp не работает - я хз.

Почему команда <resource> показывает:
resource SERIAL_TX 12 B10
а команда <resource list> :
B10: FREE

Попробовал вернуть
resource SERIAL_TX 3 B10 как было изначально.

команда <resource> показывает:
resource SERIAL_TX 3 B10
а команда <resource list> :
всё равно
B10: FREE

отключил XSR от контроллера без изменений

SkyPlayer
lunohod:

ЕМНИП, телеметрия не работает при подключенном конфигураторе.

С чего бы? Всё прекрасно работает - по крайней мере, через хардварный UART у меня.

Михаил_Ка
Михаил_Ка:

Конфигурация: контроллер OmniBus F4 Pro Corner, видео передатчик Tramp HV, регуляторы Wraith32, камера RunCam Split v1, приемник FrSky XSR, пульт Taranis QX7.

Подключение:
Uart 1
RX1 - к телеметрии регуляторов
TX1 - SoftSerial 1 - на T-pin Tramp (smart audio)
Uart 3
RX3 - SBUS приемник XSR (беру не инвертированный сигнал)
TX3 - SoftSerial 2 - SmartPort приемник XSR (беру не инвертированный сигнал)
Uart 6
RX6 - на TX RunCam Split
TX6 - на RX RunCam Split

Почему не заработала эта схема так и не разобрался.

Так же остались вопросы почему команды <resource list> и <resource> после перезагрузки контроллера показывают разные значения. По документации после перегрузки должны быть одинаковыми 😵

После экспериментов 😃 было выяснено, что смена местами как вместе так и подключение по одному к TX1 и TX3, как через СофтСериал, так и напрямую ни S Port ни S Audio не заработали.

В результате поисков наткнулся на Tramp HV incompatibility issue with F4 hardware UARTs

В итоге эксперименты и чтение как наших, так и импортных ресурсов утомили и было сделано следующее:

  1. Smart Audio (Tramp Audio) подключено через SoftSerial 1 на pin MOTOR 5
  2. Smart Port подключен через SoftSerial 2 на pin LED_STRIP

Smart Audio (Tramp Audio) через SoftSerial так же работает на pin LED_STRIP- проверил.

Если кому-то понадобятся мои настройки:

feature SOFTSERIAL
feature TELEMETRY
feature ESC_SENSOR
feature LED_STRIP

resource MOTOR 1 A02
resource MOTOR 2 A03
resource MOTOR 3 B01
resource MOTOR 4 B00
resource MOTOR 5 none
# MOTOR 5 - A01 default value

resource LED_STRIP 1 none
# LED_STRIP 1 - B06 default value

resource SERIAL_TX 11 A01
# Smart Audio on SoftSerial 1 to pin MOTOR 5
# resource SERIAL_TX 1 NONE
# resource SERIAL_TX 11 A09

resource SERIAL_TX 12 B06
# Smart Port on SoftSerial 2 to pin LED_STRIP
# resource SERIAL_TX 3 NONE
# resource SERIAL_TX 12 B10

set sbus_inversion = OFF
set cpu_overclock = ON
set serialrx_provider = SBUS
set current_meter = ESC
set battery_meter = ESC

set tlm_halfduplex = on
set tlm_inverted = on

serial 0 1024 115200 57600 0 115200
serial 2 64 115200 57600 0 115200
serial 5 16384 115200 57600 0 115200
serial 30 8192 115200 57600 0 115200
serial 31 32 115200 57600 0 115200

В общем УРА!!! Можно собирать на раму 😃

SkyPlayer:

телеметрия не работает при подключенном конфигураторе.

Подтверждаю при включенном конфигураторе у меня телеметрия не работает, состояние ARM или DISARM значения не имеет.

SkyPlayer
lokanaft:

Вот видео в тему для экономии юартов и проводов:

Он пока сырой как болото весной - телеметрия лагает жутко, данных на экранах BF LUA вообще хрен дождёшься.
Я уже писал в соседней теме, что полагаю весьма странной идеей - пихать управление, телеметрию, LUA и RSSI в ПОЛУДУПЛЕКСНЫЙ (однопроводный) протокол. Это ж как участок “реверсивного движения” при ремонте дороги - “пробки” обеспечены по определению. Кой смысл было упираться в однопроводный протокол вместо двухпроводного асинхронного (например, вывод SBUS в качестве TX и SPort в качестве RX) - мне непонятною

MFer
SkyPlayer:

Кой смысл было упираться в однопроводный протокол вместо двухпроводного асинхронного (например, вывод SBUS в качестве TX и SPort в качестве RX)

допилят все. в этом плане бетафлайт молорики.

SkyPlayer
MFer:

допилят все.

Чем раньше сообразят перейти на дуплекс - тем скорее допилят. 😃 Я правда никак не могу понять смысла “упёртости” в 1-проводку, это ж “сам себе злобный Буратино”. 😃

lokanaft

Разработчик в слаке ответил, что на днях уже будет улучшение в протоколе.

tuskan
SkyPlayer:

Чем раньше сообразят перейти на дуплекс - тем скорее допилят. 😃 Я правда никак не могу понять смысла “упёртости” в 1-проводку, это ж “сам себе злобный Буратино”. 😃

на каждом полетнике уже есть СБАС. Или ППМ.
И их “однопроводные” можно использовать.
если сожрать “живой” уарт - нафиг оно все нужно?

SkyPlayer

Что-то вы дюже загадочное написали 😁
1)

tuskan:

если сожрать “живой” уарт - нафиг оно все нужно?

SBUS - это и так “живой” UART, причём аппаратный, а не софтовый - на некоторых полётниках этот же UART “продублирован” отдельными RX и TX (на F4, как правило, разница этих “пятаков” в наличии инвертора на пятаке SBUS) И, хотя занят там только RX, порт оказывается занят целиком. Так что для FPort можно было бы использовать тот же “SBUSовский” UART “по полной”, раз уж FPort в том числе заменяет SBUS.
2) По поводу использования SBUS+SPort - я больше имел в виду приёмник (XSR), где изначально не было предусмотренно асинхронного выходного порта.
3)

tuskan:

И их “однопроводные” можно использовать.

Убогость “однопроводности” и проблемы, вылезающие из этой убогости, я уже описал выше - после того как натолкнулся на них на практике.