Тема: Телеметрия для футабы и jive из говна и палок.  (Прочитано 21484 раз)

0 Пользователей и 1 Гость просматривают эту тему.


Оффлайн delamonpansie

  • Сообщений: 70
« : 09 Август, 2016, 17:32:49 pm »
https://github.com/delamonpansie/jitel

Задавайте ваши ответы.

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #1 : 09 Август, 2016, 22:45:38 pm »
Никаких ответов от меня лично не будет, спасибо за более-менее вменяемый код, с удовольствием кое-что подсмотрю! Подписался :)

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #2 : 12 Март, 2017, 23:58:57 pm »
Проект взлетел, правда без контрона ;)

На питание stm32 погнал futaba ps-01, не стал изврщаться, опилилъ пока stm32f103ct-фигкакой-то, на подходе Espruino Pico (к сожалению, там опять m4 без аппаратного инвертора uart, зато входы толерантны до +5В,  нужно бы m3 или m0/l0 "вкрячить", но это совсем факультатив ;) ).

Оффлайн delamonpansie

  • Сообщений: 70
« Ответ #3 : 14 Март, 2017, 08:54:36 am »
у stm32f103xx ноги тоже толерантны к 5v

Оффлайн alien131314

  • Сообщений: 1191
    • Igor
    • Loginov
  • Город: Riga
« Ответ #4 : 14 Март, 2017, 12:18:34 pm »
в 303, если я правильно помню, часть ног ( не все ) толерантны к +5. В 103, наверное. тоже надо смотреть...
Lynx Oxy3, Synergy 696

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #5 : 16 Март, 2017, 15:36:33 pm »
Ну, прогресс на месте не стоитъ.

Нам (ок, мне) для скромных целей нужен мк нагораживания огородов, разведенный в какую-то вменяемую упаковку - аля девбоард.
Под цели подходит некий странный кетайский полетный контроллер с массой разведенных пинов (в тч и SWD), двумя "вынутыми" наружу USART и ценой где-то в 1 тр с доставкой, размером с очень крупный ноготок большого пальца ноги 52-го размера.

Стоит stm32f303 (гут). Хорошая картинка здесь http://homepage.cem.itesm.mx/carbajal/Microcontrollers/SLIDES/GPIO_Applications.pdf , страница 16. Ну и вообще для человека вроде меня, далекого от задач программирования  и мк (чур-чур) - много вкусного, есть, что вспомнить ;)


Игорь, по поводу питания - часть ног заведена напрямую на ноги ADC - вот им и не пофиг на питание, смотрим дт и в принципе совершенно чхаем ^)

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #6 : 25 Март, 2017, 17:57:06 pm »
немного вводных на stm32f303. Плата - клон SPRACINGF3, стоит ~800 р. Выводы - 3хUART. Питание - +5В. Работает аппаратная инверсия (data polarity).

Офигительный курс для недогоняющих вроде меня: Embedded Systems Course, http://homepage.cem.itesm.mx/carbajal/MR2010/slides.htm , именно по stm32f3, разговор идет про std periph lib / HAL, но очень легко переноситься на libopencm3 или что-то самодельное (оно и понятно).

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #7 : 05 Апрель, 2017, 21:57:57 pm »
Хм. Все взлетело. Но. USART инициализирован на 1000009E2.

Сделал некое подобие-заготовку здесь: https://github.com/ilyxa/sbus2-telemetry

Фактически это некая заготовка, я постараюсь накидать больше комментариев, ибо лично мне (не программисту) было поначалу сложно разобраться в тайминге, фреймах и прочем, даже при наличии кучки оборудования на столе (анализатор, осциллограф).

Допилен семихостинг (для тонких ценителей извращений, для отладки по swd мне эта штукенция показалась малопригодной).

Есть несколько мутных (для меня) фрагментов, которые я точно перепишу с использованием libopencm3 (инициализация таймеров, например). Технически можно полностью отказаться от libopencm (у меня сейчас работает как версия с HAL, так и с libopencm - в принципе, фиолетово, но смешивать не хочется стили).

В ближайших планах - у меня два десятка входов на контроллере, которые никуда не подключены ;) Сейчас успешно читаю обороты с yge120, нагородил простенький температурный датчик аналоговый, все пока кривое и косое, в декстопном варианте, но работает сносно ;) Годнота, короче, да и только :)

А, ну да. Самый ништяк - нормально работает полудуплексный режЫм, один провод, никаких наворотов, все предельно просто - что есть просто отлично!
« Последнее редактирование: 05 Апрель, 2017, 22:05:50 pm от ilyxa »

Оффлайн delamonpansie

  • Сообщений: 70
« Ответ #8 : 06 Апрель, 2017, 16:41:00 pm »
UART у футабы и должен быть 100000E2. или в "1000009E2" не опечатка?

libopencm3 мне показался более стройным, чем HAL. HAL выглядит внутри как помойка, в то время, как исходные тексты opencm3 служат неплохой документацией.

Т.к. для меня это был первый большой проект на stm32, пришлось много ходить по документации, в итоге оказалось проще написать некоторые вещи сразу через регистры, а не с помощью интерфейсов opencm3. Возможно сейчас бы сделал по другому, но тогда в голове все эти USART_SR_NE были свежи и писать напрямую было просто и понятно.

newlib нужен для stdio, а stdio нужен для printf. Поэтому если хочется печатать в SWD, то нужен newlib. SWD страшно тормозной. Вместо него лучше использовать ITM/ETM. Его точно можно сконфигурировать на 1Мбит, который типичный usb-uart может прожевать. Вроде как можно и быстрее, но у меня нечем проверить. Пример можно посмотреть вот тут https://github.com/PetteriAimonen/STM32_Trace_Example

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #9 : 06 Апрель, 2017, 17:55:55 pm »
UART у футабы и должен быть 100000E2. или в "1000009E2" не опечатка?

   usart_set_mode(SBUS_PORT, USART_MODE_TX_RX);
   usart_set_baudrate(SBUS_PORT, 100000);
   usart_set_databits(SBUS_PORT, 9);
   usart_set_parity(SBUS_PORT, USART_PARITY_EVEN);
   usart_set_stopbits(SBUS_PORT, USART_STOPBITS_2);
   usart_set_flow_control(SBUS_PORT, USART_FLOWCONTROL_NONE);
   usart_enable_halfduplex(SBUS_PORT);
   usart_enable_rx_inversion(SBUS_PORT);
   usart_enable_tx_inversion(SBUS_PORT);

прям как есть, как работает. Либо некий баг в опенцм (тогда непонятно, почему HAL работает), либо там долбанные 9 датабит (кстати, проверю-ка еще раз анализатором, что там летит), либо еще один вариант, что я конкретно не догоняю три предложения о работе в half-duplex (хотя сложно там чего-то не догонять). Я обсмотрел clearflight, px4, еще что-то с поддержкой sbus - везде 8E1, но примеров по передаче не видел.

Еще момент - при попытке работать с 8E2 мне приходилось использовать вот такую конструкцию:

   /**
    * enable Overrun disable while debug?
    * USART_ISR_ORE flag
    */
   USART_CR3(SBUS_PORT) |= USART_CR3_OVRDIS;

либо "подчищать" каждый раз хвосты в _CR2/_CR3, плюс постоянно фиксировалась "странная" ошибка PE (parity error) при засмотре в шину анализатором. C 9E2 все чуднО работает (как и должно). Еще подумал - half-duplex не при чем, без него аналогичная петрушка (gpio9/10 tx/rx  с подтяжкой).

Кстати, сейчас озадачился проверкой аналогичной петрушки, но только на attiny и только разбор кадра sbus, без телеметрии - так вот там тоже работает конструкция 9E2 (через собственную реализацию, правда).
« Последнее редактирование: 06 Апрель, 2017, 18:10:27 pm от ilyxa »

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #10 : 06 Апрель, 2017, 18:10:47 pm »
libopencm3 мне показался более стройным, чем HAL. HAL выглядит внутри как помойка, в то время, как исходные тексты opencm3 служат неплохой документацией.

факт! За эту наводку отдельное спасибо :-)

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #11 : 06 Апрель, 2017, 18:11:41 pm »
лучше использовать ITM/ETM

полезняшка, к концу выходных прикину, что к чему ;)

Оффлайн Vovets

  • Сообщений: 465
  • Владимир
    • Владимир
    • Красовский
  • Город: Москва
« Ответ #12 : 06 Апрель, 2017, 18:33:49 pm »
Я использую RTOS под названием ChibiOS, там есть драйвер (два разных, один чисто на прерываниях, другой DMA) для UART. Очень хорошо написано всё. Хотя и на С. STM32 там основная платформа, поэтому периферия STM поддерживается очень хорошо. DMA, всё такое. Ну, в простых случаях, без экзотики, хотя и экзотику можно прикрутить. Без всяких ST-шных библиотек, которые ад и содомия.
С уважением, Владимир.

Оффлайн Vovets

  • Сообщений: 465
  • Владимир
    • Владимир
    • Красовский
  • Город: Москва
« Ответ #13 : 06 Апрель, 2017, 18:35:45 pm »
Кстати, с удивлением узнал, что на Али есть клоны Segger J-Link, 1500 р. Заказал, посмотрим как работает.
С уважением, Владимир.

Оффлайн delamonpansie

  • Сообщений: 70
« Ответ #14 : 06 Апрель, 2017, 18:39:37 pm »
Либо некий баг в опенцм (тогда непонятно, почему HAL работает), либо там долбанные 9 датабит (кстати, проверю-ка еще раз анализатором, что там летит)

Там нет бага, количество бит это количество бит с учетом бита четности. Поэтому если ты включаешь хочешь 8 бит с паритетом, то надо включить USART_CR1_M | USART_CR1_PCE, т.е. что битов девять и девятый бит это паритет.
Итого четыре варианта в зависимости от CR1M, CR1_PCE: 8бит, 7бит с паритетом, 9бит, 8бит с паритетом.