8

8051USB

Реализация USB Device на микроконтроллерах STC8HxxU

Мне очень нравятся эти микроконтроллеры: малая цена (usb-вариант купил по 18 рублей за штуку, просто на Озоне), большой диапазон питающих напряжений (1,8-5,5 вольт), возможность уйти в глубокую спячку, возможность работать вообще без "обвязки" (встроенный RC генератор, встроенная цепь сброса), и прошиваться нативно через USB, не требуя ни программатора, ни USB-UART шнурка, ни драйверов.

Одно плохо - с документацией не очень хорошо, а с "экосистемой" (библиотеками, видюшками и инструкциями, как этим всем пользоваться) совсем швах.

Постараемся исправить это недоразумение, хотя сейчас и самому бы освоить разные классы USB устройств и сделать библиотеку, от которой я сам бы не плевался.

Пока что здесь следующие проекты:

  • 00 - пример USB HID взятый напрямую из даташита. Но вполне рабочий (хотя он лишь пересылает взад данные отправленные на устройство)
  • 01 - этот пример, доведённый до минимально рабочей библиотеки USB HID
  • 02 - предельно упрощённая логика USB HID (выкинули эндпоинты, конечный автомат, пересылку длинных массивов, превышающих размер буфера)
  • 03 - код для изучения USB PHY, нужен был, чтобы сделать "пассивную" гальваническую развязку USB, возможно, "впервые за 30 лет существования USB",
  • 04 - библиотека USB HID на глубоко оптимизированном ассемблере. Код + таблица дескрипторов занимает 390 байт, чистый код - 207 байт. Но работает ничуть не хуже.
  • 05 - пример USB CDC (виртуальный COM порт), взятый от разработчика контроллера (сама библиотека не имеет открытых исходных кодов, только хедер для вызова функций)
  • 06 - библиотека USB CDC на ассемблере, в процессе создания.

Детальное описание этих проектов: https://nabbla.ru/category/8051/