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

Проблема самопроизвольной установки "Read Out Protection" Level 1 с невозможностью снятия.

Добрый день.

Несколько лет мелко-серийно выпускается устройство (~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 нормальная.

 

Если переставить микроконтроллер в другую плату, то защиту можно снять, запрограммировать - все работает. 

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

Готов проверить любые догадки.

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

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


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

9 минут назад, Diman_ сказал:

На плате стоит внешний сторожевой таймер (блокируется разъемом программирования или программно портом)...

Интересное решение, а схему этого решения можно увидеть?

Цитата

На больной плате синхронно с ресетом падают несколько портов и снова встают в единицу. На здоровых платах этого нет.

...а что есть? Если просто встают в единицу, то в чем вопрос - прошивка запустилась и работает штатно (видимо). ПО Вы писали? Должны знать, как оно работает.

Цитата

Синхронно с ресетом просаживается на 200мВ напряжение на VCAP.  На здоровых платах этого нет.

Источник питания нужный ток для всего изделия обеспечивает с запасом?

Цитата

Но после снятия питания программа не стартовала и снова не прошивалась.

Уберите WDT пока что из схемы. И вообще - платы одинаковые? А то знаете, обычно оказывается, что ревизии чуть разные...

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


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

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:

Целостность земли и питания проверяли (при снятом МК)?

Со снятым микроконтроллером вызвонил все питания и земли.

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


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

Цитата

407, 427, 429, 437, 439...

Прошивка одна на всех? Просто, например, старшие цифры умеют задрать тактирование в 180 МГц, другие - нет, только 168...

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


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

3 minutes ago, Arlleex said:

Прошивка одна на всех? Просто, например, старшие цифры умеют задрать тактирование в 180 МГц, другие - нет, только 168...

Используем только общую периферию. Работаем на 120МГц. Это петрушка (разные микроконтроллеры) началась не от хорошей жизни, после начала проблем с покупкой комплектации.

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


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

5 часов назад, Diman_ сказал:

Появилась плата на которой автоматически (после подачи питания) устанавливается самопроизвольно бит "Read Out Protection" Level 1.

4 часа назад, Diman_ сказал:

Оно никак не должно работать - и на здоровой и на плохой прошивки не было.

Правильно ли  я понял, что такое поведение наблюдается на свежевпаянном, еще не запрограммированном контроллере? 

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

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


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

6 часов назад, Diman_ сказал:

(блокируется разъемом программирования или программно портом)

Плохое решение. Можно сказать, что сторожевого таймера у вас нет. Если "блокируется программно"...

6 часов назад, Diman_ сказал:

На больной плате синхронно с ресетом падают несколько портов и снова встают в единицу. На здоровых платах этого нет.

Не очень понятно: кто тогда управляет этим уровнем? Сама плата или МК? Ведь во время ресета МК в сбросе и не может управлять. И тогда если поведение разное, но причина видимо не в МК, а где-то в плате. Либо сигнал ресет генерируется некорректно.

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


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

12 hours ago, 0men said:

а что там со скоростью роста питания? одинаковая на всех платах?

Большое спасибо за наводку. Господа, проблема ушла после установления перемычки между VСС (напряжение выдает LD1117-3.3) и VDDА (напряжение выдает LP2985A-33). Защиту удалось снять и запрограммировать. 

На больной плате со снятым микроконтроллером измерял VCC (3.293V) и VDDA (3.331V). Буду разбираться дальше. Результаты сообщу. 

 

17 hours ago, jcxz said:

Плохое решение. Можно сказать, что сторожевого таймера у вас нет. Если "блокируется программно"...

Не очень понятно: кто тогда управляет этим уровнем? Сама плата или МК? Ведь во время ресета МК в сбросе и не может управлять. И тогда если поведение разное, но причина видимо не в МК, а где-то в плате. Либо сигнал ресет генерируется некорректно.

Решение не плохое. Я неправильно выразился - сторожевой таймер не блокируется программно, а сбрасывается в основном цикле программы.

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

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


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

Всем спасибо, особенно 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!

 

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


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

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.

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


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

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!

 

не за что ) пару дней назад тоже копался в подобном вопросе, вот и пришло в голову )

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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