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

Category:

Первые успехи с USB

Итак, поскребя по сусекам посмотрев примеры с easyelectronics.ru, я таки собрал все воедино и у меня получился рабочий эмулятор USB→COM (его, кстати, можно и как реальный использовать при небольшой доработке).
Вот — исходники. Пока что в них полным-полно мусора, но наконец-то после выполнения
make && make load

и переподключении USB (почему-то сразу после заливки железяка не определяется, наверное, нужно при запуске сначала отключить USB, подержать его немного так, а потом уже включать - ХЗ, будет моим домашним заданием) появляется устройство /dev/ttyACM0!!!

Я установил простенький пакетик tinyserial (сильно облегченная версия minicom'а, близкая к мастдайкотерминалу) и попробовал повзаимодействовать с железякой.
Какой же была моя радость, когда сразу же после запуска я получил:
com /dev/ttyACM0 1500000
C-a exit, C-x modem lines status
[STATUS]: RTS CTS DTR 
 !"#$%&'()
Fad
*
Fad
+
Fad
,
Fad
-
Fad
.
Shn
/
Shn
0
Shn
1
Shn
23
Off
45
On 
6
Blk
78
Unk
9
Shn
:;
Shn

Fad
<
Fad

Fad
=>?@A
Unk

Интересно то, что т.к. реального последовательного порта "с той" стороны пока нет, скорость можно установить совершенно любую. Мы пока не проверяем, что там за настройки порта компьютер прислал.

Ну и напоследок расскажу, что же делает этот пример.
Здесь при запуске активируется подключение к USB и запускается в режиме мерцания светодиод. Скважность мерцания изменяется командами '+' и '-', команда '0' отключает светодиод, команда '1' включает постоянное свечение, команда 'b' активирует режим мерцания.
Кроме того, я попробовал возможности EXTI: на кнопочку WAKEUP повесил прерывание. При нажатии кнопки светодиод либо горит постоянно (если до этого мигал или был потушен), либо мигает.
Таймер запущен с интервалом в 10мс, поэтому мерцания светодиода почти не заметно: команды '+' и '-' как бы изменяют его яркость.
Сама макетка один раз в секунду отправляет поочередно символы с кодами от 33 до 127 включительно, а также сигнализирует о принятии команды от пользователя.
Понятное дело, из-за того, что tinyserial отправляет команды посимвольно, сделать более длинный командный пакет в нем нельзя. Но это уже просто — для дальнейших испытаний напишу простенькую программку-коммутатор.


Tags: stm32, usb, железяки
Subscribe

  • Хеши строковых команд для МК

    Долго я к этому шел, но, похоже, пора уже: однобуквенные команды сложно запоминать (особенно если команд толпа, и большая часть с этими буквами…

  • OBS studio

    В общем, надоумили меня попробовать трансляцию в youtube. Напрямую скринкасты он писать не умеет, но может забирать поток с промежуточного…

  • M$ teams…

    Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК,…

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
  • 2 comments