Diman_ 0 1 ноября, 2022 Опубликовано 1 ноября, 2022 (изменено) · Жалоба Добрый день. Несколько лет мелко-серийно выпускается устройство (~100 шт/год). Микроконтроллер STM32F4x7ZGT6 (ставим разные, какие придется 407, 427, 429, 437, 439). Появилась плата на которой автоматически (после подачи питания) устанавливается самопроизвольно бит "Read Out Protection" Level 1. Попытка снять бит ничего не дает - не может записать значение. Записать прошивку не дает - говорит не могу снять защиту. Пробовали три разных микроконтроллера - результат один и тот же. Облазил все 144 вывода осциллографом. BOOT0 жестко на земле. Со снятым микроконтроллером вызвонил все питания и земли. По SWD интерфейсу ST-link Utility подключается, определяет микроконтроллер, но не читает память (Read Out Protection). Питание на VCC(линейник 5-3.3В LD1117-3.3) и VDDA (отдельный линейник 5-3.3В LP2985A-3.3 - через бусину и дополнительные конденсаторы) 3.3 ровное. Из странностей: 1) На плате стоит внешний сторожевой таймер (блокируется разъемом программирования или программно портом) - пока нет прошивки он раз в 1.3 секунды на 200мсек устанавливает ресет в ноль. На больной плате синхронно с ресетом падают несколько портов и снова встают в единицу. На здоровых платах этого нет. 2) Синхронно с ресетом просаживается на 200мВ напряжение на VCAP. На здоровых платах этого нет. 3) При неоднократных попытках (100+) прошить больную плату дважды ST-link Utility удалось снять защиту, запрограммировать, проверить и запустить программу - все заработало. Но после снятия питания программа не стартовала и снова не прошивалась. 4) Активность на линиях SWD нормальная. Если переставить микроконтроллер в другую плату, то защиту можно снять, запрограммировать - все работает. Плата дорогая - размером с материнку набитая функционалом - выбрасывать жалко, а проблему решить не могу. Готов проверить любые догадки. Изменено 1 ноября, 2022 пользователем Diman_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба 9 минут назад, Diman_ сказал: На плате стоит внешний сторожевой таймер (блокируется разъемом программирования или программно портом)... Интересное решение, а схему этого решения можно увидеть? Цитата На больной плате синхронно с ресетом падают несколько портов и снова встают в единицу. На здоровых платах этого нет. ...а что есть? Если просто встают в единицу, то в чем вопрос - прошивка запустилась и работает штатно (видимо). ПО Вы писали? Должны знать, как оно работает. Цитата Синхронно с ресетом просаживается на 200мВ напряжение на VCAP. На здоровых платах этого нет. Источник питания нужный ток для всего изделия обеспечивает с запасом? Цитата Но после снятия питания программа не стартовала и снова не прошивалась. Уберите WDT пока что из схемы. И вообще - платы одинаковые? А то знаете, обычно оказывается, что ревизии чуть разные... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба Целостность земли и питания проверяли (при снятом МК)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diman_ 0 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба 4 minutes ago, Arlleex said: Интересное решение, а схему этого решения можно увидеть? ...а что есть? Если просто встают в единицу, то в чем вопрос - прошивка запустилась и работает штатно (видимо). ПО Вы писали? Должны знать, как оно работает. Источник питания нужный ток для всего изделия обеспечивает с запасом? Уберите WDT пока что из схемы. И вообще - платы одинаковые? А то знаете, обычно оказывается, что ревизии чуть разные... 1) Разъем программирования 6-ти контактный GND, SWDIO, SWCLK, RSTn, WDTEn, 3.3V. - в разъеме программатора перемычка между WDTEn и 3.3V. При воткнутом разъеме сторожевой таймер отключен - можно шить и отлаживать. 2) а что есть? Если просто встают в единицу, то в чем вопрос - прошивка запустилась и работает штатно (видимо). ПО Вы писали? Должны знать, как оно работает. Оно никак не должно работать - и на здоровой и на плохой прошивки не было. 3) Источник питания нужный ток для всего изделия обеспечивает с запасом? - источник TPS54260 Выдает до 2А. Но без прошивки плата потребляет 20 мА. Просадок питания осциллографом не обнаружил. 4) Уберите WDT пока что из схемы. И вообще - платы одинаковые? А то знаете, обычно оказывается, что ревизии чуть разные... - WDT блокируется разъемом программирования -проверено осциллографом. Плата дизайна 2018 года. 12 minutes ago, aaarrr said: Целостность земли и питания проверяли (при снятом МК)? Со снятым микроконтроллером вызвонил все питания и земли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба Цитата 407, 427, 429, 437, 439... Прошивка одна на всех? Просто, например, старшие цифры умеют задрать тактирование в 180 МГц, другие - нет, только 168... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diman_ 0 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба 3 minutes ago, Arlleex said: Прошивка одна на всех? Просто, например, старшие цифры умеют задрать тактирование в 180 МГц, другие - нет, только 168... Используем только общую периферию. Работаем на 120МГц. Это петрушка (разные микроконтроллеры) началась не от хорошей жизни, после начала проблем с покупкой комплектации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба 5 часов назад, Diman_ сказал: Появилась плата на которой автоматически (после подачи питания) устанавливается самопроизвольно бит "Read Out Protection" Level 1. 4 часа назад, Diman_ сказал: Оно никак не должно работать - и на здоровой и на плохой прошивки не было. Правильно ли я понял, что такое поведение наблюдается на свежевпаянном, еще не запрограммированном контроллере? Взять другую плату, на которой все работает, сдуть с обоих контроллеры и пройтись по всем ногам осциллографом, одновременно подавая через резистор подтяжки сначала высокий, потом низкий уровень поочередно на все остальные ноги. Чудес не бывает, наверняка где-то замыкание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба 6 часов назад, Diman_ сказал: (блокируется разъемом программирования или программно портом) Плохое решение. Можно сказать, что сторожевого таймера у вас нет. Если "блокируется программно"... 6 часов назад, Diman_ сказал: На больной плате синхронно с ресетом падают несколько портов и снова встают в единицу. На здоровых платах этого нет. Не очень понятно: кто тогда управляет этим уровнем? Сама плата или МК? Ведь во время ресета МК в сбросе и не может управлять. И тогда если поведение разное, но причина видимо не в МК, а где-то в плате. Либо сигнал ресет генерируется некорректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0men 2 1 ноября, 2022 Опубликовано 1 ноября, 2022 · Жалоба а что там со скоростью роста питания? одинаковая на всех платах? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diman_ 0 2 ноября, 2022 Опубликовано 2 ноября, 2022 (изменено) · Жалоба 12 hours ago, 0men said: а что там со скоростью роста питания? одинаковая на всех платах? Большое спасибо за наводку. Господа, проблема ушла после установления перемычки между VСС (напряжение выдает LD1117-3.3) и VDDА (напряжение выдает LP2985A-33). Защиту удалось снять и запрограммировать. На больной плате со снятым микроконтроллером измерял VCC (3.293V) и VDDA (3.331V). Буду разбираться дальше. Результаты сообщу. 17 hours ago, jcxz said: Плохое решение. Можно сказать, что сторожевого таймера у вас нет. Если "блокируется программно"... Не очень понятно: кто тогда управляет этим уровнем? Сама плата или МК? Ведь во время ресета МК в сбросе и не может управлять. И тогда если поведение разное, но причина видимо не в МК, а где-то в плате. Либо сигнал ресет генерируется некорректно. Решение не плохое. Я неправильно выразился - сторожевой таймер не блокируется программно, а сбрасывается в основном цикле программы. Изменено 2 ноября, 2022 пользователем Diman_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diman_ 0 2 ноября, 2022 Опубликовано 2 ноября, 2022 · Жалоба Всем спасибо, особенно 0men ! Фронты нарастания питания микроконтроллера на больной плате VDDA и VCC были затянуты на 0.3сек. с отставанием VCC от VDDA на 0.1сек. На здоровой этого не было. Далее посмотрел фронт появления 5В из которых получаются оба питания 3.3В, и обнаружил затянутый фронт на те же 0.3сек. Разборка со входным импульсным источником 12В->5В на TPS54260 показала - ошибка монтажа - емкость в цепи SOFT START (SS) стояла 1мкФ вместо 10нФ. Вывод: Если фронт питания VCC отстает от фронта VDDA на 0.1сек, микроконтроллер перекашивает так, что он устанавливает защиту "Read Out Protection" Level 1 и не разрешает ее менять до выключения питания (Reset не помогает). Просто пологий фронт на обоих питаниях не приводит к такой проблеме (проверенно объединением этих линий). Еще раз СПАСИБО 0men! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 2 ноября, 2022 Опубликовано 2 ноября, 2022 · Жалоба 20 минут назад, Diman_ сказал: Вывод: Если фронт питания VCC отстает от фронта VDDA на 0.1сек, микроконтроллер перекашивает так, что... ... что Вам еще повезло, что чип не пустил белый дым внутри корпуса. А может уже частично пустил, ибо схема создала МК условия вне диапазона рабочих режимов. Цитата Просто пологий фронт на обоих питаниях не приводит к такой проблеме (проверенно объединением этих линий). Не приводит, потому что для этого и придуман внутренний PVD, а также внешний (если есть) у WDT (обычно они с супервизорами в комплекте). В даташите на МК есть вполне конкретные требования по VDD/VDDA Цитата 5. It is recommended to power VDD and VDDA from the same source. A maximum difference of 300 mV between VDD and VDDA can be tolerated during power-up and power-down operation. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0men 2 2 ноября, 2022 Опубликовано 2 ноября, 2022 · Жалоба On 11/2/2022 at 10:17 AM, Diman_ said: Всем спасибо, особенно 0men ! Фронты нарастания питания микроконтроллера на больной плате VDDA и VCC были затянуты на 0.3сек. с отставанием VCC от VDDA на 0.1сек. На здоровой этого не было. Далее посмотрел фронт появления 5В из которых получаются оба питания 3.3В, и обнаружил затянутый фронт на те же 0.3сек. Разборка со входным импульсным источником 12В->5В на TPS54260 показала - ошибка монтажа - емкость в цепи SOFT START (SS) стояла 1мкФ вместо 10нФ. Вывод: Если фронт питания VCC отстает от фронта VDDA на 0.1сек, микроконтроллер перекашивает так, что он устанавливает защиту "Read Out Protection" Level 1 и не разрешает ее менять до выключения питания (Reset не помогает). Просто пологий фронт на обоих питаниях не приводит к такой проблеме (проверенно объединением этих линий). Еще раз СПАСИБО 0men! не за что ) пару дней назад тоже копался в подобном вопросе, вот и пришло в голову ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться