Перейти к содержанию
    

Микроконтроллер STM32F407VD

Перепаяли контроллер, проблема с USB осталась. Но нашлась одна особенность. Если запустить программу в режиме отладки, без всяких брейкпоинтов, ситуация не меняется. Но! После выхода из отладки комп начинает видить плату как COM-порт, собственно как и должен и всё работает. После перезапуска платы, снова перестает определяться. Где искать проблемму?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно предположить, что при запуске отладки ваша среда совершает некие действия (настройку тактирования, отключение периферии или что-то еще), которые не дают вашей программе работать как задумано, ибо писавший программу программист полагался на значения периферийных регистров по умолчанию. При выходе из отладки отладчик на прощанье сбрасывает процессор и он начинает выполнять программу заново, но уже со сброшенной периферией. Более точно трудно сказать - вы не признались, какую среду разработки используете, а с телепатией у нас напряженка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Среда CoIDE. Программатор/отладчик ST-Link V2, расположенный на плате STM32F4Discovery.

Обнаружил еще одну особенность. Дело даже не в отладке. Отладчик отключен, USB подключен. Включаю питание платы, USB не определяется. Очень кратковременно, буквально в одно касание, замыкаю ресет на землю и после этого комп начинает видить плату, можно втыкать - вытыкать USB, всё работает, до выключения питания платы. Попробовал выпаять конденсатор С596, тот что на ресете, ситуация не изменилась.

 

Разобрался. Оказалось, что не успевал завестись внешний кварц. Увеличил HSE_STARTUP_TIMEOUT и всё заработало. А кварц не успевал стартовать, потому что емкости на нем слишком большие висели.

Но все-же для меня осталось загадкой, зачем контроллер пытается V-BUS к земле притянуть?

Изменено пользователем Haamu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но все-же для меня осталось загадкой, зачем контроллер пытается V-BUS к земле притянуть?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чем Вы схемы рисуете?

Я не рисую, я программист. А вообще вроде в Альтиуме. Но конкретно эта похоже еще в Пеинте подтерта.

 

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

Похоже что так. Просто ввела в заблуждение инициализация этой ноги:

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);  
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_OTG_FS);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я в этой инициализации ваще теряюсь) но вроде как к земле ее не тянули... а в альтернативных функциях все само работает, могли прочие поля структуры от копи паста остаться...

 

блин неужели так ноги инициализировать удобнее чем через 3-4 понятные строки?

выбор функции

выбор подтяжки (если надо)

направление

начальное значение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто ввела в заблуждение инициализация этой ноги:
Я не разбирался с системой USB этого контроллера, но строка GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; как бы подсказывает, что этот вывод настраиваивается совсем не на ввод. В задачнике спрашивается: зачем этой ноге быть выходом с открытым коллектором? Если вы сможете это обосновать, вы наверняка поймете кто и зачем тянет ее к земле. Если же обосновать не сможете - вероятно придете к выводу, что тут и кроется ошибка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу прощения, не тот кусок инициализации выложил, это от ноги ID. Инициализация V-Bus отличается лишь тем, что там не открытый коллектор, а push-pull, но сути это не меняет. Перерыл весь USB-стек и не увидел нигде, чтобы V-Bus явно подтягивалась к земле, кроме работы в режиме хоста, где она отвечает за подачу питания на подключенное устройство. Следовательно, подтягивать ее к земле в режиме девайса может только альтернативная функция.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

отличается лишь тем, что там не открытый коллектор, а push-pull, но сути это не меняет.
То есть все равно выход? Вероятно вам все же стоит почитать описание этой ноги и работы с ней в руководстве пользователя. Поверьте, в примерах из интернета могут быть ошибки. Даже если эти примеры распространяет производитель контроллера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, эта нога настроена на работу альтернативной функции, соответственно и управляется она этой самой альтернативной функцией.

Кстати, на другой плате с аналогичной схемой подключения USB, эта нога ведет себя точно так-же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

VBUS, как я предполагаю, нужна для включения подтягивающего резистора на D+ (или D- для Low speed). Естественно, она должна быть выходом, OD или PP - неважно.

Надо посмотреть по схеме, какой полярностью включается этот подтягивающий резистор. Там, наверное, и транзистор есть. А то и два. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

VBUS, как я предполагаю, нужна для включения подтягивающего резистора на D+ (или D- для Low speed).
Драссте. Ну откройте же описание. VBus - вход во всех режимах работы USB. Сигнал VBUS не входит в группу альтернативных функций (Alternative function) соответствующего разряда порта. Он является дополнительной функцией (Additional function) и включается настройками USB-контроллера, а не порта. И когда вы включаете альтернативную функцию на этой ноге вы подключаете к ней выход какой-то другой периферии.

 

Блин, да ну вас нафиг - три дня мусолить тему, которая в даташите ищется за две минуты. Причем почитать документацию автору темы предлагалось уже давно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...