• CDC+MSC USB Composite Device на STM32 HAL

    • Tutorial
    image

    Мне хотелось бы верить, что хотя бы половина читателей может расшифровать хотя бы половину названия статьи :) Кто не в курсе — поясню. Мое устройство должно реализовывать сразу две USB функции:

    • Mass Storage Device (он же Mass Storage Class — MSC). Я хочу, чтобы мой девайс прикидывался обычной флешкой и отдавал файлики с данными, которые лежат на SD карте.
    • Другая функция это виртуальный COM порт (он же в терминологии USB называется Communication Device Class — CDC). Через этот канал у меня идет всякий дебажный вывод, который удобно смотреть обычным терминалом.

    В большинстве примеров по работе с USB реализуется только один тип устройства — флешка, мышка, кастомное HID устройство или виртуальный COM порт. А вот найти вменяемое объяснение как реализовать хотя бы две функции одновременно оказалось не так просто. В своей статье я хотел бы восполнить этот пробел.

    Я буду описывать создание композитного USB устройства на базе микроконтроллера STM32, но сам подход будет также применим и для других микроконтроллеров. В статье я детально разберу каждый из классов по отдельности, так и принцип построения композитных устройств. Но обо все по порядку.

    Итак, поехали!
    Читать дальше →
  • Rust, Eclipse и STM32

    • Tutorial
    Для того, чтобы подружить между собой указанные в заголовке технологии нам понадобятся:


    Идея состоит в том, чтобы с скомпилировать написанную на Rust программу в библиотеку, которую можно будет слинковать с помощью тулчейна для ARM.
    В итоге мы сможем даже вполне комфортно дебажить смешанный код на Rust и С.
    Читать дальше →
  • 15 вдохновляющих фильмов, пробуждающих желание что-то изменить

    • Перевод
    image

    Наверное, каждый из нас бывал в ситуациях, когда весь мир кажется враждебным, в душе поселяются пустота и апатия, начинает казаться, что жить незачем, да и вообще — все бессмысленно. В такие моменты очень полезным мероприятием психологической «реабилитации», чтобы прояснить сознание, может оказаться просмотр подходящего фильма. Алден Тан, специалист по мотивации, предприниматель и блогер, составил список как раз таких фильмов.
    Читать дальше →
  • GIF изнутри


    Вам когда-нибудь было интересно, как устроены gif-ки? В данной статье попробуем разобраться с внутренним строением GIF-формата и методом сжатия LZW.

    Структура GIF


    Файл в формате GIF состоит из фиксированной области в начале файла, за которой располагается переменное число блоков, и заканчивается файл завершителем изображения.


    Читать дальше →
  • Неортогональная БИНС для малых БПЛА

      БИНС
      По правилам сокращений в заголовке не должно быть, но расписав сокращения я превратил бы заголовок в аннотацию. Так что вот…
      • БИНС — бесплатформенная инерциальная навигационная система
      • БПЛА — беспилотный летательный аппарат
      • ОЧ — ось чувствительности датчика

      Речь в статье пойдет о навигационной системе, в которой ОЧ датчиков ориентированы неортогонально, т.е. расположены под некоторым, ненулевым, углом к осям системы координат, связанной с БПЛА. Особенность таких БИНС в том, что по информации от каждого из датчиков можно получить значения всех трех компонент угловой скорости (для гироскопов) и линейного ускорения (для линейных акселерометров) объекта.
      Статья написана как дополнение к Строим мультикоптер, часть вторая. Целью является описание одного из способов борьбы с дрейфом нуля в дешевых датчиках.
      Для чего нужна избыточность читать тут...
    • Эмуляция носителя FAT32 на stm32f4



      Недавно возникла данная задача — эмуляция носителя FAT32 на stm32f4.

      Её необычность заключается в том, что среди обвязки микроконтроллера вовсе может не быть накопителя.

      В моём случае накопитель был, но правила работы с ним не позволяли разместить файловую систему. В ТЗ, тем не менее, присутствовало требование организовать Mass Storage интерфейс для доступа к данным.

      Результатом работы явился модуль, который я озаглавил «emfat», состоящий из одноимённого .h и .c файла.

      Модуль независим от платформы. В прилагаемом примере он работает на плате stm32f4discovery.

      Функция модуля — отдавать куски файловой системы, которые запросит usb-host, подставляя пользовательские данные, если тот пытается считать некоторый файл.
      Читать дальше →
    • Создание профилей Bluetooth в BLE стеке TI

      • Tutorial


      В первой части статьи мы настраивали средства разработки, пытались разобраться с тем, как устроен код, как и чем его отлаживать, но так и не написали ни единой строки кода. Исправим это во второй части. Напишем собственный BLE профиль для CC2541.

      Читать дальше →
      • +14
      • 12,6k
      • 5
    • BLE стек от TI. Разработка пользовательских приложений

      • Tutorial
      Привет, Хабр!

      После написания предыдущего материала про BLE розетку я познакомился со многими
      людьми, которыми интересна тема использования BLE в собственных разработках, но есть определенные
      сложности в использовании С-программирования с BLE стеком для СС2541. Использование
      внутреннего контроллера дает много преимуществ, в частности: прошивка по воздуху, экономия
      на внешнем контроллере, сокращение числа точек пайки…
      Я решил разбить материал на две части. Первая – это подготовка к работе, программирование и
      отладка. Вторая – создание собственного BLE профиля.
      Читать дальше →
      • +9
      • 17,6k
      • 6
    • Конечный автомат (он же машина состояний) на чистом С

      Почти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
      И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память и вообще какала бабочками.
      И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).

      Собственно через регулярные выражения я к ним и пришёл.
      Читать дальше →
    • 50 цитат о программировании всех времён

      • Перевод
      Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

      50. Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.
      — Rick Cook

      49. Lisp — это не язык, а строительный материал.
      — Alan Kay

      48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
      — Edward V Berard
      Читать дальше →