Как стать автором
Обновить
51
Карма
13.2
Рейтинг

Пользователь

USB на регистрах: isochronous endpoint на примере Audio device

Программирование микроконтроллеровСхемотехника
image<картинка с платой и наушниками>
Еще более низкий уровень (avr-vusb): habr.com/ru/post/460815
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID

Сегодня рассмотрим последний тип конечных точек, изохронный. Он предназначен для передачи данных, критичных к времени доставки, однако не гарантирует ее успешность. Самый классический пример — аудиоустройства: колонки, микрофоны.

Как ни странно, этот тип конечной точки оказался самым мозговыносящим (и это после всего, что я успел повидать с stm'ками!). Тем не менее, сегодня мы сделаем аудиоустройство и заодно чуть-чуть допилим ядро библиотеки USB. Как обычно, исходные коды доступны:
github.com/COKPOWEHEU/usb/tree/main/4.Audio_L1
github.com/COKPOWEHEU/usb/tree/main/4.Audio_F1
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры2.6K
Комментарии 9

Новости

Показать еще

USB на регистрах: interrupt endpoint на примере HID

Программирование микроконтроллеровСхемотехника


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: isochronous endpoint на примере Audio device

Продолжаем разбираться с USB на контроллерах STM32L151. Как и в предыдущей части, ничего платформо-зависимого здесь не будет, зато будет USB-зависимое. Если точнее, будем рассматривать третий тип конечной точки — interrupt. И делать мы это будем на примере составного устройства «клавиатура + планшет» (ссылка на исходники).
На всякий случай предупреждаю: данная статья (как и все остальные) — скорее конспект того, что я понял, разбираясь в этой теме. Многие вещи так и остались «магией» и я буду благодарен если найдется специалист, способный объяснить их.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры3.6K
Комментарии 4

USB на регистрах: bulk endpoint на примере Mass Storage

Программирование микроконтроллеровСхемотехника


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device

В прошлый раз мы познакомились с общими принципами организации USB и собрали простое устройство, иллюстрирующее работу конечной точки типа Control. Пришло время изучать следующий тип — Bulk. Конечные точки такого типа предназначены для обмена большими объемами информации, причем чувствительной к надежности, но не скорости обмена.

Классические примеры — запоминающие устройства и переходники вроде USB-COM. Но переходники требуют еще наличия конечной точки типа Interrupt, которую мы пока «не проходили», так что остановимся на эмуляции флешки. Точнее, двух флешек одновременно.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры2.6K
Комментарии 37

USB на регистрах: STM32L1 / STM32F1

Программирование микроконтроллеровСхемотехника


Еще более низкий уровень (avr-vusb)
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device

С программным USB на примере AVR мы уже познакомились, пришла пора взяться за более тяжелые камни — STM32. Подопытными у нас будут классический STM32F103C8T6 а также представитель малопотребляющей серии STM32L151RCT6. Как и раньше, пользоваться покупными отладочными платами и HAL'ом не будем, отдав предпочтение велосипеду.
Читать дальше →
Всего голосов 35: ↑33 и ↓2 +31
Просмотры6.3K
Комментарии 10

Изучаем RISC-V с нуля, часть 2: прерывания и стыковка с Си

Программирование микроконтроллеровСхемотехника


Продолжаем погружаться в строение контроллера GD32VF103CBT6. Теперь рассмотрим как он может обрабатывать прерывания работать под управлением высокоуровневого кода.
Первая часть здесь

Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры5.4K
Комментарии 12

Изучаем RISC-V с нуля, часть 1: Ассемблер и соглашения

Программирование микроконтроллеровСхемотехника


Издеваться мы будем над микросхемой GD32VF103CBT6, являющейся аналогом широко известной STM32F103, с небольшим, но важным отличием: вместо ядра ARM там используется ядро RISC-V. Чем это грозит нам, как программистам, попробуем разобраться.


Кратко перечислю характеристики контроллера:


  • Напряжение питания: 2.6 — 3.6 В
    • Максимальная тактовая частота: 108 МГц
    • Объем ПЗУ (flash): 128 кБ
    • Объем ОЗУ (ram): 32 кБ
    • Объем Backup регистров (сохраняемых после сброса): 42 х 16 бит = 84 байта.
    • АЦП+ЦАП: 2 штуки АЦП по 10 каналов и 12 бит каждый плюс 2 ЦАП по 12 бит.
    • Разумеется, куча прочей периферии вроде таймеров, SPI, I2C, UART и т. д.
Читать дальше →
Всего голосов 36: ↑35 и ↓1 +34
Просмотры9.3K
Комментарии 38

Трехмерная графика на STM32F103

Программирование микроконтроллеровСхемотехника
image

Небольшой рассказ о том, как впихнуть невпихуемое и отобразить в реальном времени трехмерную графику при помощи контроллера, у которого недостаточно ни скорости, ни памяти для этого.
Читать дальше →
Всего голосов 73: ↑72 и ↓1 +71
Просмотры11.8K
Комментарии 63

Изобретаем библиотеку vusb

Программирование микроконтроллеровСхемотехника

Введение


После прочтения названия может возникнуть закономерный вопрос: зачем в наше время изучать программную реализацию low-speed USB, когда существует куча дешевых контроллеров с аппаратным модулем? Дело в том, что аппаратный модуль, скрывая уровень обмена логическими уровнями, превращает протокол USB в своеобразную магию. Для того же, чтобы прочувствовать как эта «магия» работает, нет ничего лучше, чем воспроизвести ее с нуля, начиная с самого низкого уровня.


С этой целью попробуем изготовить на основе контроллера ATmega8 устройство, прикидывающееся USB-HID'ом. В отличие от распространенной литературы, мы пойдем не от теории к практике, от самого нижнего уровня к верхнему, от логических напряжений на выводах, и закончим «изобретением» той самой vusb, после каждого шага проверяя, работает ли код как ожидалось. Отдельно отмечу, что не изобретаю альтернативу этой библиотеке, а напротив, последовательно воспроизвожу ее исходный код, максимально сохраняя оригинальную структуру и названия, поясняя, для чего служит тот или иной участок. Впрочем, привычный для меня стиль написания кода отличается от стиля авторов vusb. Сразу же честно признаюсь, что помимо альтруистического интереса (рассказать другим сложную тему) имею и корыстный — изучить тему самостоятельно и через объяснение выловить для себя максимум тонких моментов. Отсюда же следует, что какой-то важный момент может быть упущен, или какая-то тема не до конца раскрыта.


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


Также отмечу, что рассматривается только low-speed USB, даже без упоминания, чем отличаются более скоростные разновидности.

Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Просмотры10.4K
Комментарии 22

Начало работы с stm32 или не повторяйте моих ошибок

Программирование микроконтроллеровСхемотехника
Из песочницы

image


Небольшой рассказ о граблях, встреченных на пути познания ARM на примере stm32f103c8t6 и stm32l151rct6.

Читать дальше →
Всего голосов 58: ↑44 и ↓14 +30
Просмотры42.5K
Комментарии 66

Информация

В рейтинге
343-й
Зарегистрирован
Активность