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

STM32F070, ошибка заводского загрузчика, не попадитесь.

Разработал устройство на STM32F070 c USB. Кварц поставил с потолка 16 МГц. Когда пришла пора выпускать партию - вспомнил про заводской загрузчик и решил не запаивать разъем SWD. Собрали партию. Для заливки программы втыкаю в USB - не читаются дескрипторы. Проверяю схему - порядок. Проверяю генерацию на кварце - 16 МГц как в аптеке. Беру вторую плату - то же яйцо, только в профиль. Подпаиваю отладчик, заливаю свою программу - в моей программе USB работает. Перечитываю руководство пользователя - там ссылка на AN2606. В нем в описании загрузчика F070 в одной из таблиц написано: 

Цитата

The external clock can be used for all
bootloader interfaces and should have one
of the following values [24, 18, 16, 12, 8, 6,
4] MHz. The PLL is used to generate 48
MHz for USB and system clock.

Мои 16 МГц упомянуты. Внизу таблицы приписка:

Цитата

If HSI deviation exceeds 1% , the bootloader might not function correctly.

Не мой случай, у меня температура комнатная и питание 3.3 В. Читаю errata - там ничего нет. Перечитываю AN2606 "от корки до корки" - в конце главы, посвященной загрузчику F070, в разделе "Bootloader version" в таблице в колонке "Known limitation" написано:

Цитата

At bootloader startup, the HSITRIM value is set to
(0) (in HSITRIM bits on RCC_CR register) instead
of default value (16), as consequence a deviation
is generated in crystal measurement. For better
results, please use the smallest supported crystal
value (ie. 4 MHz).

Впаиваю на соплях кварц 4 МГц вместо 16 - дескрипторы считываются.

 

Нехорошие люди! Не матросы! В errata вписать это они поленились. В этом же документе в перечислении допустимых частот ссылку на это ограничение дать они поленились. А мне теперь или срочно искать кварцы 4 МГц или делать оснастку для подлючения SWD через иглы. Повезло, что партия изделий всего 30 шт. и иглы есть в столе и лишняя плата в качестве основания с отверстиями под разъем SWD.

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


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

Разве STM32F070  поддерживает заводской бутлоадер с USB ?

В даташите загрузка только с уарта.

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


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

7 minutes ago, Сергей Борщ said:

Разработал устройство на STM32F070 c USB.

Это у STM такая тенденция что ли пошла с каждым разом все хуже и хуже ?

Или это у всех производителей так ?

Столкнулся с такой ситуацией.

STM32H743. В корпусе LQFP-176 заводской загрузчик по UART работает.

В корпусе LQFP-144 заводской загрузчик похоже вообще отсутствуют.

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


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

Спасибо за бдительность!

31 минуту назад, Сергей Борщ сказал:

...в разделе "Bootloader version" в таблице в колонке "Known limitation" написано...

Т.е., насколько я понял, они при запуске загрузчика включают HSI (вернее, он уже включен).
А потом, средствами RCC-контроллера, смотрят на точность внешнего клока? Типа проверяют есть ли он вообще и насколько точен?
И, таким образом, из-за запоротого триммера им всякая частота (внешняя) кажется неточной и соответственно загрузчик не работает?

31 минуту назад, Сергей Борщ сказал:

А мне теперь или срочно искать кварцы 4 МГц или делать оснастку для подлючения SWD через иглы...

PLS-ка обычная, не? Если так, то в таких случаях я бы просто сделал ответку на штырях PLS, вставлял колодку в плату и наклонял ее.
От загиба обеспечивается плотный и надежный контакт на время удержания. Для прошивки этого вполне хватит. 30 штук это еще не страшно:smile:

34 минуты назад, Сергей Борщ сказал:

Нехорошие люди! Не матросы!

Это да. У STM всегда все было как-то через одно место:to_take_umbrage:
Но есть у них одно неоспоримое преимущество - низкая цена.
У меня только из-за этого очевидный выбор в их пользу в большинстве случаев.

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


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

1 час назад, Lmx2315 сказал:

Разве STM32F070  поддерживает заводской бутлоадер с USB ?

В даташите загрузка только с уарта.

В datasheet вообще про загрузку ничего не нашел, а в руководстве пользователя:

Цитата

Embedded boot loader
The embedded boot loader is located in the System memory, programmed by ST during production. It is used to reprogram the Flash memory using one of the following serial interfaces:
 USART on pins PA14/PA15 or PA9/PA10
 I2C on pins PB6/PB7 ( STM32F070xx and STM32F030xC devices only)
 USB DFU interface (STM32F070xx devices only)

 

1 час назад, Arlleex сказал:

Т.е., насколько я понял, они при запуске загрузчика включают HSI (вернее, он уже включен).
А потом, средствами RCC-контроллера, смотрят на точность внешнего клока? Типа проверяют есть ли он вообще и насколько точен?

Я так понимаю, что сравнивая с частотой HSI они примерно прикидывают, на какую из допустимых частота HSE больше всего похожа и дальше настраивают PLL на работу от кварца этой частоты. А поскольку частоту HSI они в процессе запуска загрузчика сами же и портят - то 16 МГц ошибочно определяют как 18 и вместо 48 МГц на выходе PLL получают 42.6. Поэтому USB и не заводится. В остальных контроллерах F0 с USB есть система подстройки HSI от SOF, в них заводской загрузчик HSE не использует.

1 час назад, Arlleex сказал:

PLS-ка обычная, не?

PLD c шагом 1.27. Я таких не использую, в закромах ничего похожено нет. Пока вышел из положения так (у китайцев подпружиненные иголки дешевы, поэтому есть некоторый запас на такой пожарный случай):

image.thumb.png.33a565db0babd48e439c76ee69c1eff2.png

В понедельник буду искать кварцы по знакомым, потому что производить весь процесс программирования и проверки при помощи одного кабеля USB удобнее.

1 час назад, dimka76 сказал:

В корпусе LQFP-144 заводской загрузчик похоже вообще отсутствуют.

Это легко проверить. Адреса, по которым он расположен, описаны. Прочитать память по этим адресам отладчиком несложно.

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


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

15 minutes ago, Сергей Борщ said:

Это легко проверить. Адреса, по которым он расположен, описаны. Прочитать память по этим адресам отладчиком несложно.

Так и сделал. И обнаружил его отсутствие )))

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


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

12.12.2020 в 22:51, dimka76 сказал:

Так и сделал. И обнаружил его отсутствие )))

А в чем прикол этого загрузчика? Подобные камни всегда через swd прошивал, уж точно знаю, что если камень жив, то уж прошьется обязательно, а тут как и следовало - лотерея...

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


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

5 minutes ago, mantech said:

А в чем прикол этого загрузчика?

Прикол в том, что при 20 пинах SWD может оказаться непозволительной роскошью. Заодно работа интерфейса проверяется.

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


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

22 минуты назад, mantech сказал:

А в чем прикол этого загрузчика?

Через него можно обновлять прошивку периферийных плат с главной платы, не выдумывая свой протокол и загрузчик. Единственный, ИМХО, минус - могут стянуть прошивку)

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

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


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

14 минут назад, aaarrr сказал:

Прикол в том, что при 20 пинах SWD может оказаться непозволительной роскошью.

STM32H743 20 пинов, что-то новенькое.

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


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

12 минут назад, Vasily_ сказал:

STM32H743 20 пинов, что-то новенькое.

Простите, в теме указан STM32F070. Ой, ошибся. Сорри.

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

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


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

30 минут назад, aaarrr сказал:

Прикол в том, что при 20 пинах SWD может оказаться непозволительной роскошью.

Причем тут 20 пин, это в смысле житаг стандартный чтоль? Всегда 4 пинов хватало, ресет, дата, клок и общая...

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


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

12.12.2020 в 22:35, Сергей Борщ сказал:

Я так понимаю, что сравнивая с частотой HSI они примерно прикидывают, на какую из допустимых частота HSE больше всего похожа и дальше настраивают PLL на работу от кварца этой частоты. А поскольку частоту HSI они в процессе запуска загрузчика сами же и портят - то 16 МГц ошибочно определяют как 18 и вместо 48 МГц на выходе PLL получают 42.6. Поэтому USB и не заводится.

Не, просто не находит частоты из списка. И не настраивается на загрузку по USB.

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


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

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

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

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

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

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

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

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

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

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