Если не ошибаюсь, то момент соединения с шиной обозначается прерыванием по РЕСЕТ.
У меня в STM32F303 тоже нет бита подтяжки. На плате резистор тупо припаян.
Собрал схему, для проверки достал где-то ещё завалявшуюся плату STM32 H-103.
По поводу событий при подключении..
прерывание по РЕСЕТ.?
Нет, мне кажется, не совсем так. Подробнее. Первое событие RESET - это сброс FRES. Тут мы включаем тактирование, настраиваем флаги и т.д. По первому РЕСЕТу мы только конфигурируем и настраиваем девайс. Но на данном этапе данный RESET никак не свидетельствует о подключении шины.
Об подключении к шине непосредственно свидетельствует второй РЕСЕТ (флаг в ISTR первого РЕСЕТа не забываем очистить), о котором и упомянул Z_h_e, и который отправляется уже хостом. Но до этого хаб определяет наличие подтяжки D+. Тут я и стал.(Схему собрал, но не работает). Какое событие отвечает за обнаружение подтяжки D+. ?
Весь процесс я понимаю, идет так:
- после включения девайса (только девайса, без подключения к шине) (и после конфигурирования модуля)устанавливается событие SUSP (более 3мс отсутствия активности на шине). Контроллер успешно уводит девайс в данный режим. Выставляется флаг. Флаг от первого РЕСЕТа (который по сбросу FRES) очищаем. Ждем второго РЕСЕТа от компа.
- в это время (после установления SUSP) при подключении к шине должно произойти событие WKUP
(пробуждение устройства и сброс бита low-power mode). Т.е. тут девайс должен определить наличие подтяжки и дать компу информацию о своем присутствии на шине.Но последнее (именно событие WKUP) почему-то не проходит. Втыкаю девайс в комп - прерывание по WKUP молчит. Такое на двух платах. И на своей и на заводской от Olimex.



