|
Микроконтроллер STM32F407VD, Проблемы с прошивкой |
|
|
|
Apr 10 2014, 05:54
|
Группа: Новичок
Сообщений: 1
Регистрация: 10-04-14
Пользователь №: 81 309

|
Добрый день! Возникла такая проблема, в данной схеме включения, возникают проблемы с прошивкой. ( Прошивается, но, раз через раз). Может кто-нибудь сталкивался с проблемами с микроконтроллером STM32F407VD? С чем это может быть связано?
Сообщение отредактировал IgorKossak - Apr 11 2014, 05:34
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 30)
|
Apr 10 2014, 07:18
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Pavel30 @ Apr 10 2014, 07:54)  ( Прошивается, но, раз через раз). Я бы выкинул тяжелое наследие оккупацииPIC16C84 в виде C596.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 10 2014, 07:35
|
Группа: Новичок
Сообщений: 4
Регистрация: 16-03-06
Пользователь №: 15 309

|
Цитата(Сергей Борщ @ Apr 10 2014, 11:18)  Я бы выкинул тяжелое наследие оккупацииPIC16C84 в виде C596. Конденсатор там как раз соответствует даташиту, в отличие от R583.
|
|
|
|
|
Apr 10 2014, 09:58
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 12-12-13
Пользователь №: 79 587

|
Цитата(Golikov A. @ Apr 10 2014, 13:52)  а разве флэш перешить без спец команд можно? Прошили, проверили прошивку, если ок, то все проблемы у вас в программе... Знаю, что нельзя. В том то и загадка. Дело точно не в программе. Пробовал простейшую программку зашивать, которая просто несколько байт по USART принимает. Те же чудеса происходят. А вот на Discovery то же самое работает как часы.
|
|
|
|
|
Apr 11 2014, 10:44
|

Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 23-03-11
Из: Россия
Пользователь №: 63 824

|
Цитата(Haamu @ Apr 11 2014, 12:11)  Новый фокус. Линия V_BUS от USB и резистор P580. Подключаю USB разъем, со стороны разъема на резисторе 5В, со стороны контроллера - всего 0.5В. Контроллер на подключение разъема никак не реагирует. Делаю вывод, что сгорел вход контроллера. Но как-то странно он сгорел, потому что, если убрать инициализацию USB и настроить ногу PA9 на вход, то контроллер видит сигнал на этой ноге. Так же и на выход работает. Реально такое или снова фантастика какая-то? Может все же резистор плохо пропаян? В корзинке опыта были случаи, что вывод вроде припаян, но то ли трафарет с браком, то ли пасты "зажмотили" и после пропайки, обыкновенным паяльником все наладилось. В пользу этого говорит :" если убрать инициализацию USB и настроить ногу PA9 на вход, то контроллер видит сигнал на этой ноге. Так же и на выход работает."
|
|
|
|
|
Apr 11 2014, 11:11
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 12-12-13
Пользователь №: 79 587

|
Цитата(Leopoldius @ Apr 11 2014, 14:44)  Может все же резистор плохо пропаян? В корзинке опыта были случаи, что вывод вроде припаян, но то ли трафарет с браком, то ли пасты "зажмотили" и после пропайки, обыкновенным паяльником все наладилось. В пользу этого говорит :" если убрать инициализацию USB и настроить ногу PA9 на вход, то контроллер видит сигнал на этой ноге. Так же и на выход работает." Как раз не в пользу, а наоборот. Если нога настроена на вход, то напряжение с обоих сторон резистора одинаковое. А паяльником пропаивал...
|
|
|
|
|
Apr 16 2014, 08:41
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Можно предположить, что при запуске отладки ваша среда совершает некие действия (настройку тактирования, отключение периферии или что-то еще), которые не дают вашей программе работать как задумано, ибо писавший программу программист полагался на значения периферийных регистров по умолчанию. При выходе из отладки отладчик на прощанье сбрасывает процессор и он начинает выполнять программу заново, но уже со сброшенной периферией. Более точно трудно сказать - вы не признались, какую среду разработки используете, а с телепатией у нас напряженка.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 16 2014, 08:53
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 12-12-13
Пользователь №: 79 587

|
Среда CoIDE. Программатор/отладчик ST-Link V2, расположенный на плате STM32F4Discovery. Обнаружил еще одну особенность. Дело даже не в отладке. Отладчик отключен, USB подключен. Включаю питание платы, USB не определяется. Очень кратковременно, буквально в одно касание, замыкаю ресет на землю и после этого комп начинает видить плату, можно втыкать - вытыкать USB, всё работает, до выключения питания платы. Попробовал выпаять конденсатор С596, тот что на ресете, ситуация не изменилась.
Разобрался. Оказалось, что не успевал завестись внешний кварц. Увеличил HSE_STARTUP_TIMEOUT и всё заработало. А кварц не успевал стартовать, потому что емкости на нем слишком большие висели. Но все-же для меня осталось загадкой, зачем контроллер пытается V-BUS к земле притянуть?
Сообщение отредактировал Haamu - Apr 16 2014, 10:55
|
|
|
|
|
Apr 18 2014, 09:50
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 13-02-12
Пользователь №: 70 236

|
Haamu А в чем Вы схемы рисуете?
|
|
|
|
|
Apr 21 2014, 14:17
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 12-12-13
Пользователь №: 79 587

|
Цитата(Eminem @ Apr 18 2014, 13:50)  А в чем Вы схемы рисуете? Я не рисую, я программист. А вообще вроде в Альтиуме. Но конкретно эта похоже еще в Пеинте подтерта. Цитата(Golikov A. @ Apr 19 2014, 18:27)  может чтобы определить есть внешние питание == подключение или нет? Ибо устройства с автономным питанием должны контролировать подключение через мониторинг 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);
|
|
|
|
|
Apr 22 2014, 05:32
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 12-12-13
Пользователь №: 79 587

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

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ViKo @ Apr 22 2014, 16:47)  VBUS, как я предполагаю, нужна для включения подтягивающего резистора на D+ (или D- для Low speed). Драссте. Ну откройте же описание. VBus - вход во всех режимах работы USB. Сигнал VBUS не входит в группу альтернативных функций (Alternative function) соответствующего разряда порта. Он является дополнительной функцией (Additional function) и включается настройками USB-контроллера, а не порта. И когда вы включаете альтернативную функцию на этой ноге вы подключаете к ней выход какой-то другой периферии. Блин, да ну вас нафиг - три дня мусолить тему, которая в даташите ищется за две минуты. Причем почитать документацию автору темы предлагалось уже давно.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|