Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Эксперименты с WS2815 на STM32F103

Пару вечеров промучился с реализацией протокола WS2815 на STM32F103: все никак не получалось ШИМом с DMA выдавать нужное количество импульсов так, чтобы после последнего импульса линия устанавливалась в нуль. Пришлось в итоге использовать грязный хак. В комментариях я на этот счет высказался и добавил вариант для низких частот. Дело в том, что чтобы выйти в нуль, необходимо до генерации UEV установить регистр TIM1->CCR1 в нуль. На больших частотах накладные расходы на вход в прерывание таковы, что если это делать "как нужно" (в прерывании tim1_cc_isr), получается короткий лишний импульс. Поэтому на малых скоростях устанавливаем регистр в нуль внутри прерывания по переходу 1->0, а на больших — прямо внутри прерывания DMA. Попытки манипуляции с прелоадом этого регистра не увенчались успехом (либо появлялся ложный первый импульс - копия предыдущего, либо пропадал последний). Так что, оставлю такое рукожопие. Лента светится:

Простейший сниппет практически полностью реализует нужный функционал (обработка внутри прерываний HT и TC половинок буфера DMA, а также изменение его содержимого между передачами внутри основного цикла).
Короткий видеоролик с демонстрацией того, как это работает. Теперь можно допилить сам сниппет по работе с лентой. Я думал было тетрис для дочки сделать, но потом к ужасу своему осознал, что небольшое поле 15×30 точек потребует аж 450 светодиодов! А это — 7.5 метров ленты, почти на 4000 рублей… Так что, после экспериментов сверну этот метр ленты и спрячу с остальными железячками "на будущее".
Tags: stm32, железяки
Subscribe

  • Новая железяка - продолжение

    Шел третий день отпуска… Когда собирал железяку, возник насущный вопрос: а сможет ли такой слабенький движочек гонять такую дурищу (прежде всего —…

  • Новая железяка для БТА/Ц1000

    Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую…

  • Пара зарядок с али

    3 августа заказал пару новых зарядок (нонче такое дело, что зарядок много не бывает). Сегодня получил. Обозреваю. Первая зарядка. Аж три USB и типа…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 12 comments

  • Новая железяка - продолжение

    Шел третий день отпуска… Когда собирал железяку, возник насущный вопрос: а сможет ли такой слабенький движочек гонять такую дурищу (прежде всего —…

  • Новая железяка для БТА/Ц1000

    Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую…

  • Пара зарядок с али

    3 августа заказал пару новых зарядок (нонче такое дело, что зарядок много не бывает). Сегодня получил. Обозреваю. Первая зарядка. Аж три USB и типа…