|
Сдох контроллер или..? |
|
|
|
Feb 3 2016, 13:22
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Компилятор KEIL, контроллер - STM32F103RET6 При попытке прошить через J-LINK интерфейс SWD выдает среди прочего Цитата * JLink Info: Found SWD-DP with ID 0x1BA01477 * JLink Info: Found SWD-DP with ID 0x1BA01477 * JLink Info: Found Cortex-M3 r1p1, Little endian. * JLink Info: FPUnit: 0 code (BP) slots and 0 literal slots ROMTableAddr = 0xE00FF003 Error: Flash Download failed - Target DLL has been cancelled Flash Load finished at 16:22:40 А в окошке alert выскакивает Invalid ROM Table
Сообщение отредактировал murmur - Feb 3 2016, 13:27
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 38)
|
Feb 3 2016, 19:02
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Перепайка контроллера на заведомо исправный не помогла. Танцы с бубном привели к следующему - если поставить в настройках J-Link галочку "autoClk", то выставляется 200 кГц и программирование идет очень медленно. Запускается программа, работает штатно, но тоже ооооочень медленно - вывод на экран замедлен. Раньше нормально работавший код Код TIM_TimeBaseStructure.TIM_Period = 5; TIM_TimeBaseStructure.TIM_Prescaler = 7200-1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
// Output Compare Toggle Mode configuration: Channel3
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OC3Init(TIM2, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Disable); выдает импульсы диной не 500 мкс, как расчитано, а около 5 мс. Как думаете, кварц?
|
|
|
|
|
Feb 4 2016, 06:59
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Программа (скажу даже в более широком смысле - проект) не изменилась. Еще раз пропаяла замененный контроллер - вроде бы он стал работать с нормальной скоростью. Но прошивка все равно идет только на 200 кГц. Иногда контроллер не запускается вообще, тогда помогает только перепрошивка.
К слову - старый контроллер, с которого начались проблемы, выпаянный с платы, попробовала смонтировать на другое устройство - все отлично, шьется любой проект с любыми настройками.
дорожки+кабель - 12 см. 2 недели до этого все шилось нормально. Единственно, что было накануне -в 1 см от кварца есть микросхема в корпусе SO-8, накануне она подвергалась замене феном, теоретически я могла перегреть кварц и конденсаторы. Но непосредственно после пайки все работало около 10 минут.
Скажите, объяснимо ли такое поведение (нормальная работа контроллера и низкая скорость прошивки) проблемами с кварцем? Вообще кварц принимает какое либо участие в работе контроллера, когда последний прошивается?
Еще одна тонкость - NRST у меня в воздухе. Хорошо ли он подтянут внутри контроллера? НЕ может ли он наловить помех?
Сообщение отредактировал murmur - Feb 4 2016, 06:46
|
|
|
|
|
Feb 6 2016, 19:42
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Какая-то дрянь все-таки на ножку проникает. Пойман всплеск до 5 вольт(входное напряжение, до преобразователя, около 6-ти вольт). Но, к слову, большинство осциллограмм без этого всплеска, но устройство в эти моменты не запускается. Может быть всплески столь коротки, что осциллографи их не ловит. Схему и топологию вы видели, что может быть источником этого всплеска? Вот что на осциллограмме при подключении питания к устройству.
Сообщение отредактировал murmur - Feb 6 2016, 19:55
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 7 2016, 13:43
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
HardEgor, вот честно, еще до вашего сообщения сама к этому пришла. Отпаяла ножку выхода линейного преобразователя от платы, то есть фактически отсоединила всю схему от узла питания. Померяла напряжение на этой ножке - кошмар, на ней как раз 5 вольтовый всплеск. Бракованый преобразователь получается.
P.S. сколько раз при подобных проблемах (не запускается, не программируется и пр.) первые советы, которые давали - посмоти помехи, посмотри разводку, посмотри длину кабелей. Некоторые, взглянув на топологию, критиковали разводку земли и били себя в грудь, что именно в этом дело. Никогда вышеперечисленное не оказывалось причиной, она жевсегда была банальна. Вроде нынешней.
Сообщение отредактировал murmur - Feb 7 2016, 13:44
|
|
|
|
|
Feb 7 2016, 17:42
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
ПРичиной появления пятивольтового импульса была "культура производства" - плохой контакт земли с земляным "крокодильчиком" осциллографа (все это сносно и даже без искажений компенсировалось связью по земле USB осцилографа и J-LINK, как оказывается для работы этого достаточно, а в моменты включения происходят перекосы). Пятивольтовый импульс исчез, на осциллографе плавное нарастание напряжения до 3.3 вольт. Но вот проблемы это почему-то не решило. Контроллер бывает не стартует. Может какая наносекундная помеха? У меня осциллограф всего 200 кГц дискретизации, может и не поймать. Цитата Сомневаюсь в браке преобразователя Подтверждаю. Я отпаяла преобразователь и запитала схему от импульсника на LM2596s - та же периодически возникающая проблема. Цитата теперь питание идёт через паразитную землю через щупы осциллографа или через плату отладки или еще как... Полностью отключила плату от паразитов, ни осциллографа, ни программатора, только питание - знаете, частота сбоев только возросла. Будем искать...
|
|
|
|
|
Feb 9 2016, 04:56
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Разрешилось. Прям как в анекдоте - Владимир Владимирович, скажите, что делаю российские войска на Украине? - Что делают? Отсутствуют.
Так и тут. Почему не запускается контроллер? Да на самом деле он запускался и наверное все это время тихо надо мной посмеивался. На самом деле ПЕРИОДИЧЕСКИ не стартовал не контроллера, а дисплей, программа контроллера узрев ошибку дисплея, спокойно шла дальше, а так как никаких других исполнительных устройств на плате нет, догадаться что контроллер работает никак было нельзя. Вы скажете, эх ты раззява, а отладчик на что? Дело в том, что, как я уже писала выше, за день до этого была замена микросхемы феном. С противоположной стороны платы располагается дисплей, его контроллер как раз в проекции микросхемы. Перегрела я контроллер и теперь дисплей должен 2-3 секунды после включения прогреться, тогда он заводится и работает без сбоев.
Так вот по поводу отладчика - пока прошьешь контроллер, пока повозишься с кнопками - дисплей прогревается и обретает работоспособность. И когда происходит ресет, запускается функция инициализации дисплея и устройство в целом работает нормально. Иными словами, отладчиком по определению нельзя было поймать момент сбоя.
А как же прикосновение пальца? Вот как раз прикосновение пальцем после прогрева дисплея и вызывало ресет и нормальный запуск устройства. Доказательство вышесказанному - убрала RC цепочку с NRST - все работает нормально.
Как вылечилось? В конечном устройстве конечно же будет установлен исправный дисплей, но в программу добавлена проверка работоспособности дисплея в цикле, пока дисплей не откликнется.
Спасибо за поддержку)
|
|
|
|
|
Feb 9 2016, 12:31
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Дисплей не мешал контроллеру. Еще раз говорю - кто-то мне посоветовал в SWD кабеле пустить только линии данных и плюса питания. У него видимо работало благодаря земле USB. У меня (еще 2 недели назад) не заработало, я соединила минус питания с землей J-LINK. Заработало. я осталась довольна. Нужен этот разъем был на один раз (при серийном производстве), почему бы и нет. Не знаю почему, может положение кабеля питания относительно какого-нибудь источника помех поменялось, но программироваться контроллер перестал. Когда я стала играться с RC-цепочкой на NRST, предположение о ресете от помех было ошибочным - как в том анекдоте про таракана, который без ног не слышит, а потому не реагирует на команды. Вылечилось только тогда, когда я подпаяла провод поближе к SWD и соединила его с землей J-LINK. На этом проблемы с прошивкой контроллера исчезли. Но осталась проблема с запуском. Цитата Вообще-то, по уму, в отлаживаемых устройствах всегда желательно иметь какой-либо канал вывода отладочного лога. Так мне SWD для отладки хватало выше крыши. На худой конец, отлаживаемую информацию я выводила на экран. Все ножки контроллера были задействованы, UART-не вариант. Код дисплея был отработанный, проверенный, сам дисплей надежно припаян, исправен, как казалось. Поэтому когда включаешь устройство и видишь пустой экран, который даже не моргает от инициализации, первая мысль - про контроллер. Цитата Я так и не понял причину. Дисплей наводил помеху на цепи NRST? как дисплей мог наводить помеху, если он не работал? Ничего он не наводил. Еще раз говорю, контроллер работал, просто если он обращался к дисплею в первую секунду после включени питания (не запуска, контроллера, а именно включения питания), дисплей молчал. Дисплей прогревался 2-3 секунды, обретал работоспособность и если контроллер перезагружался дисплей работал. Цитата Мне кажется это все опять притянуто за уши. Программа перестроена так, что контроллер обращается к дисплею непрерывно после старта, пока тот не ответит. В результате - холодное устройство выводит на экран информацию через 3-4 секунды, прогретое- сразу же. RC-цепочку с NRST убрала, ситуация не ухудшилась. Все программирутеся, все запускается, ничто не ресетится само.
|
|
|
|
|
Feb 9 2016, 12:46
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(murmur @ Feb 9 2016, 18:31)  Так мне SWD для отладки хватало выше крыши. На худой конец, отлаживаемую информацию я выводила на экран. Все ножки контроллера были задействованы, UART-не вариант. Код дисплея был отработанный, проверенный, сам дисплей надежно припаян, исправен, как казалось. Поэтому когда включаешь устройство и видишь пустой экран, который даже не моргает от инициализации, первая мысль - про контроллер. Как видите - не хватало. И не бывает "отработанного и проверенного кода". Бывает только "код с пока непроявившимися багами"  И не всё можно отладить точками останова и т.п. Особенно в реал-тайм системах. Вот тут как раз удобен UART.
|
|
|
|
|
Feb 9 2016, 14:08
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(murmur @ Feb 9 2016, 13:31)  только линии данных и плюса питания это как это Цитата(murmur @ Feb 9 2016, 13:31)  Так мне SWD для отладки хватало выше крыши хотя бы светодиодиком красным мигайте
|
|
|
|
|
Feb 11 2016, 08:01
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(ViKo @ Feb 11 2016, 08:26)  Вместо 4-ногого (или больше) разъема для отладчика и программатора вы поставили 2-ногий разьем для перемычки, которая еще и может быть снята (кстати, можно наоборот, снимать после программирования). Сказать, что большой выигрыш, так нет. Это очень большой выигрыш, так как единный разъем используется и для программирования и для выходного потока отладочных данных (как консоль). И никто не мешает на разъем выдать сигнал от BOOT, чтобы без перемычек-джамперов на плате. Это действительно удобно, я тоже к этому иду. Единственное но: не через любой порт возможно программирование, а консоль обычно по остаточному принципу выделяется.
|
|
|
|
|
Feb 11 2016, 08:27
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Ruslan1 @ Feb 11 2016, 11:01)  Это очень большой выигрыш, так как единный разъем используется и для программирования и для выходного потока отладочных данных (как консоль). И никто не мешает на разъем выдать сигнал от BOOT, чтобы без перемычек-джамперов на плате. Это действительно удобно, я тоже к этому иду. Единственное но: не через любой порт возможно программирование, а консоль обычно по остаточному принципу выделяется. Когда начнете выискивать глюки в программе, пользуясь убогой отладкой только по последовательному порту, вспомните свои слова насчет очень большого выигрыша. Если все отлажено (фантастика), тогда можно и минимализмом помаяться. Интересно, сколько в общей цене изделия составляют 6 штырей на плате? Или 6 отверстий.
|
|
|
|
|
Feb 11 2016, 10:43
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(ViKo @ Feb 11 2016, 12:26)  Вместо 4-ногого (или больше) разъема для отладчика и программатора вы поставили 2-ногий разьем для перемычки, которая еще и может быть снята (кстати, можно наоборот, снимать после программирования). Сказать, что большой выигрыш, так нет. На макетах у меня есть все разъемы, могу и отлаживать и программировать. Зато в производстве и при настройке не надо никакого специального оборудования - банальный RS232 и компьютер с программой из которой можно и запрограммировать и проверить работу, посмотрев на журнал, и настроить серийный номер с десятком параметров при градуировке. И умеет всё это делать не специальный человек, умеющий работать с отладчиком, а любая девочка которая умеет нажимать на кнопки и у неё есть четкая инструкция, в которой прописана вся последовательность. . Цитата(Огурцов @ Feb 11 2016, 15:46)  swd over ethernet ? лучше уж тогда over wifi !  Смех-смехом, а у меня есть задумка не реализованная - настройка over RFID, лежит у меня NVRAM с програмированием через RFID, только не помню чья - или Infineon или ST.
|
|
|
|
|
Feb 11 2016, 12:04
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Ruslan1 @ Feb 11 2016, 12:26)  6 штырей на плате для специального программатора- это бывает очень дорого, и стоимость штырей тут ни при чем. Можно 4. У младшеньких STM32 нет SWO. Можно даже 3, без NRST. И все равно это будет полноценный программатор и отладчик. И стоимость штырей тут ни при чем. Цитата(HardEgor @ Feb 11 2016, 13:43)  Зато в производстве и при настройке не надо никакого специального оборудования - банальный RS232 и компьютер с программой из которой можно и запрограммировать и проверить работу, посмотрев на журнал, и настроить серийный номер с десятком параметров при градуировке. И умеет всё это делать не специальный человек, умеющий работать с отладчиком, а любая девочка которая умеет нажимать на кнопки и у неё есть четкая инструкция, в которой прописана вся последовательность. . А для работы вам нужен RS-232? Если да, то желание сделать все-в-одном понятно, интересно, стоит взять на заметку. Если нет, то... а приемопередатчики RS-232 на плате стоят? Или они на подключаемой к разъему плате?
|
|
|
|
|
Feb 11 2016, 12:25
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(ViKo @ Feb 11 2016, 14:04)  Можно 4. У младшеньких STM32 нет SWO. Можно даже 3, без NRST. И все равно это будет полноценный программатор и отладчик. И стоимость штырей тут ни при чем. Значит, Вы все-таки не видите разницу между отладкой и программированием. Отладка- для разработчика. Программирование- на производстве и у квалифицированных пользователей. И чем меньше для программирования нужно специализированного инструмента-тем лучше. Например, у меня есть прибор, имеющий три "уровня сложности" обновления ПО: 1) файл на usb флэшку (ничего дополнительного не нужно) 2) USB бутлоадер (USB шнур плюс спецпрограмма в компьютере) 3) внутрисхемный программатор (спецжелезо плюс спецпрограмма) Причем уровень (2) появился не сразу, его нужность стала ясна в процессе эксплуатации, когда во время (1) что то пошло "не так", а (3) географически далеко от клиента.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|