RCHeliClub.ru

Технический раздел => Электроника => | Телеметрия | => Тема начата: delamonpansie от 09 Август, 2016, 17:32:49 pm

Название: Телеметрия для футабы и jive из говна и палок.
Отправлено: delamonpansie от 09 Август, 2016, 17:32:49 pm
https://github.com/delamonpansie/jitel

Задавайте ваши ответы.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 09 Август, 2016, 22:45:38 pm
Никаких ответов от меня лично не будет, спасибо за более-менее вменяемый код, с удовольствием кое-что подсмотрю! Подписался :)
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 12 Март, 2017, 23:58:57 pm
Проект взлетел, правда без контрона ;)

На питание stm32 погнал futaba ps-01, не стал изврщаться, опилилъ пока stm32f103ct-фигкакой-то, на подходе Espruino Pico (к сожалению, там опять m4 без аппаратного инвертора uart, зато входы толерантны до +5В,  нужно бы m3 или m0/l0 "вкрячить", но это совсем факультатив ;) ).
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: delamonpansie от 14 Март, 2017, 08:54:36 am
у stm32f103xx ноги тоже толерантны к 5v
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: alien131314 от 14 Март, 2017, 12:18:34 pm
в 303, если я правильно помню, часть ног ( не все ) толерантны к +5. В 103, наверное. тоже надо смотреть...
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 16 Март, 2017, 15:36:33 pm
Ну, прогресс на месте не стоитъ.

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

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


Игорь, по поводу питания - часть ног заведена напрямую на ноги ADC - вот им и не пофиг на питание, смотрим дт и в принципе совершенно чхаем ^)
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 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 (http://homepage.cem.itesm.mx/carbajal/MR2010/slides.htm) , именно по stm32f3, разговор идет про std periph lib / HAL, но очень легко переноситься на libopencm3 или что-то самодельное (оно и понятно).
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 05 Апрель, 2017, 21:57:57 pm
Хм. Все взлетело. Но. USART инициализирован на 1000009E2.

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

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

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

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

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

А, ну да. Самый ништяк - нормально работает полудуплексный режЫм, один провод, никаких наворотов, все предельно просто - что есть просто отлично!
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: delamonpansie от 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
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 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 (через собственную реализацию, правда).
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 06 Апрель, 2017, 18:10:47 pm
libopencm3 мне показался более стройным, чем HAL. HAL выглядит внутри как помойка, в то время, как исходные тексты opencm3 служат неплохой документацией.

факт! За эту наводку отдельное спасибо :-)
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 06 Апрель, 2017, 18:11:41 pm
лучше использовать ITM/ETM

полезняшка, к концу выходных прикину, что к чему ;)
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: Vovets от 06 Апрель, 2017, 18:33:49 pm
Я использую RTOS под названием ChibiOS, там есть драйвер (два разных, один чисто на прерываниях, другой DMA) для UART. Очень хорошо написано всё. Хотя и на С. STM32 там основная платформа, поэтому периферия STM поддерживается очень хорошо. DMA, всё такое. Ну, в простых случаях, без экзотики, хотя и экзотику можно прикрутить. Без всяких ST-шных библиотек, которые ад и содомия.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: Vovets от 06 Апрель, 2017, 18:35:45 pm
Кстати, с удивлением узнал, что на Али есть клоны Segger J-Link, 1500 р. Заказал, посмотрим как работает.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: delamonpansie от 06 Апрель, 2017, 18:39:37 pm
Либо некий баг в опенцм (тогда непонятно, почему HAL работает), либо там долбанные 9 датабит (кстати, проверю-ка еще раз анализатором, что там летит)

Там нет бага, количество бит это количество бит с учетом бита четности. Поэтому если ты включаешь хочешь 8 бит с паритетом, то надо включить USART_CR1_M | USART_CR1_PCE, т.е. что битов девять и девятый бит это паритет.
Итого четыре варианта в зависимости от CR1M, CR1_PCE: 8бит, 7бит с паритетом, 9бит, 8бит с паритетом.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: delamonpansie от 06 Апрель, 2017, 18:41:35 pm
Кстати, с удивлением узнал, что на Али есть клоны Segger J-Link, 1500 р. Заказал, посмотрим как работает.

Хреново работает, прошивка постоянно слетает.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: ilyxa от 06 Апрель, 2017, 18:42:56 pm
Итого четыре варианта в зависимости от CR1M, CR1_PCE: 8бит, 7бит с паритетом, 9бит, 8бит с паритетом.

Вот теперь понятно, спасибо. Отсюда - PE и сдвижка в верхнем полубайте на один бит, которую я никак не мог обьяснить при передаче. Блин, тяжкая у вас, программистов, жисть, хех ;)
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: Vovets от 06 Апрель, 2017, 18:44:52 pm
Хреново работает, прошивка постоянно слетает.
Такой (https://ru.aliexpress.com/item/V8-V9-V9-3-V9-4-Software-SUPPORT-GOOD-QUALITY-Jlink-j-link-IF-YOU-HAVE/32779051270.html?spm=2114.13010608.0.0.yaFDGK) хреново работает?
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: delamonpansie от 06 Апрель, 2017, 18:56:17 pm
Хреново работает, прошивка постоянно слетает.

Такой ([url]https://ru.aliexpress.com/item/V8-V9-V9-3-V9-4-Software-SUPPORT-GOOD-QUALITY-Jlink-j-link-IF-YOU-HAVE/32779051270.html?spm=2114.13010608.0.0.yaFDGK[/url]) хреново работает?


Именно такой.  Вот инструкция по расирпичиванию http://gronlier.fr/blog/2015/07/unbrick-and-update-an-j-link-v8-clone/ (http://gronlier.fr/blog/2015/07/unbrick-and-update-an-j-link-v8-clone/) . Кстати, я вот поддался всеобщему настроению и тоже купил себе jlink. А чем он так лучше чем дешевый китайский свисток с swd? Потому что после пары перешивок я плюнул и забросил его в дальний ящик. Может быть зря?
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: Vovets от 06 Апрель, 2017, 19:31:50 pm
Я купил клон аппаратной версии 9, она уже сделана на STM32F205, так что если брикнется, то брикнется. :)
Искал стандартный оригинальный ST-Link V2, он 500 р. стоит, а это 1500, решил испытать судьбу. Сейчас пользуюсь отпиленным от какой-то Нуклео, но захотел в корпусе.
Надеюсь, что j-link
a) быстрее
б) их gdb сервер "лутше" чем OpenOCD.
И у них есть SWO вьювер (программа), хочу дебаг-принт не через uart.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: delamonpansie от 06 Апрель, 2017, 20:06:48 pm
SWO вьювер (программа), хочу дебаг-принт не через uart.
semihosting очень тормозной, надо использовать itm/etm, я давал ссылку выше.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: Vovets от 06 Апрель, 2017, 20:22:28 pm
semihosting очень тормозной, надо использовать itm/etm, я давал ссылку выше.
Это не semihosting, это я форматирую строку на таргете и посылают через SWO на хост и вижу строку в этой программе. Быстрый последовательный канал.
https://mcuoneclipse.com/2015/07/07/using-segger-real-time-terminal-rtt-with-eclipse/ (https://mcuoneclipse.com/2015/07/07/using-segger-real-time-terminal-rtt-with-eclipse/)
И, кстати, совсем забыл, есть же ещё Segger RTT (https://mcuoneclipse.com/2015/07/07/using-segger-real-time-terminal-rtt-with-eclipse/). Но для этого нужен J-Link. Но это вообще супер быстро.
Название: Re: Телеметрия для футабы и jive из говна и палок.
Отправлено: Vovets от 07 Апрель, 2017, 19:35:33 pm
Блин, оказывается Сеггер сделал специальную прошивку для обычного ST-Link V2 (https://www.segger.com/jlink-st-link.html), который встроен в Нуклео и прочие.
Скачал, прошил, получил j-link. Поигрался, работает очень быстро. 64 К программы загружается и стартует практически мгновенно. Падений-зависаний также не было.
Поигрался также с RTT - тоже очень понравилось. Думаю, вопрос отладочой печати, и не только печати, я для себя пока решил. Хотя и требуется сколько-то RAM под буферы.