Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32 bluepill как заставить чувствовать коннект по usb?

Вт июл 27, 2021 18:42:25

При подключении к каком нибудь терминалу(cutecom, putty, terminal 1b, termit) устройства часто умеют понимать, есть ли у них коннект с компом(когда соединён юсб). То есть воткнул юсб-загорелся светодиод с питанием, запустил программу, нажал коннект-загорелся второй, нажал дисконнект-погас второй. Как реализовать такую штуку в блюпиле?

Должно работать как в линуксе так и винде.

Re: STM32 bluepill как заставить чувствовать коннект по usb?

Ср июл 28, 2021 12:17:30

нужно писать программу....

Re: STM32 bluepill как заставить чувствовать коннект по usb?

Ср июл 28, 2021 12:26:19

Ты зачем на ЛОРе запретил анонимам комментировать? Я бы уже давно тебе написал там.
Поясняю: сам этим делом интересовался какое-то время назад. Никакого механизма, позволяющего определять, что у тебя на линии кто-то сидит, если он никаких сигналов не шлет, не существует. Однако, при коннекте тебе приходит SET_CONTROL_LINE_STATE (DTR или RTS), так что можно выставлять флаг подсоединения (как здесь у меня). Однако, аналогичный запрос ты получаешь, как только активируется модуль ядра, обслуживающий твою CDC. Поэтому нужно еще проверять при отправлении сообщений: если получаешь ошибку, сбрасываешь флаг коннекта в нуль. Еще некоторые терминалы могут послать SEND_BREAK при отключении, на него тоже сбрасываешь флаг (как и на состояние USB suspend).

Как вообще ты мог разрабатывать USB CDC, если не столкнулся с необходимостью реакции на базовые запросы хоста?

P.S. Да, в "блюпиле" жесткая подтяжка USB DP (да еще и резистор 10кОм вместо положенного 1.5кОм), поэтому нужно немного переделать.
Ответить