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

stm32F030C8 и стирание страницы флэша

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

Только USART1.

Покажите пожалуйста обработчик прерывания USART1.

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


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

2 часа назад, DpInRock сказал:

Внутри прерывания - считывание символа в волатильную переменную.

Для теста полезно было бы без всяких обработчиков: Запустить извне входящий поток символов в UART на максимальной частоте следования и попробовать выполнить запись флешь.

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


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

On 6/15/2020 at 7:04 PM, DpInRock said:

Вот такое прямо наблюдение. 

Полно глюков наблюдается, главное понять в чьих байтах они проявляются. Я тут ставил вопрос про работу таймеров в 030F4 - так и повисло по причинам, хоть и решил по факту. Можно, конечно, сетовать на криворукость стшников, но всю жисть этим заниматься не продуктивно, хотя, определенно, железные глюки есть.

Мой проект сейчас в этой части похож на ваш, 030F4, идут байты с uart через dma, параллельно эмулируется eeprom, нормально работает.

Себе пометил. Спасибо.

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


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

32 минуты назад, Vlad_G сказал:

железные глюки есть.

Все железные глюки перечислены в ES. Практика показывает, что в подавляющем большинстве случаев у ST все норм, а не прав программист.

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

Глянул ES - там ничего по теме топика нет.

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


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

59 минут назад, adnega сказал:

Все железные глюки перечислены в ES.

Но, все-таки, редко бывают и реально песочные глюки. Я однажды на такие натыкался, правда на процессоре от Microchip.

 

Однако с тезисом

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

Практика показывает, что в подавляющем большинстве случаев у ST все норм, а не прав программист.

соглашусь.

 

Всяко может быть, а вдруг у ТС китайский аналог STM-ки, и он сам даже об этом не знает? Вполне вероятный исход событий.

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


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

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

Но, все-таки, редко бывают и реально песочные глюки. Я однажды на такие натыкался, правда на процессоре от Microchip.

Я тоже. На глюк не указанный в еррата (позже добавили). Но было такое всего 1 раз за всю карьеру (насколько помню).

Что как бы и подтверждает тезис о том, что баг ТС-а с вероятностью 99.99% - его собственный.

Тем более на таких популярных МК, которые много кто использует, баги должны быстро выявляться и попадать в еррата. Если б ещё чип какой-то редкий был, другое дело....

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


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

Ну, собственно, контроллер STM32F030R8T6.

Тактирование от HSI, Flash Prefetch Buffer выключен.

USART1 19200-E-1, RX/TX на PA10/PA9.

В системе крутится еще таймер TIM1, по 1мс прерыванию которого отсчитываю 1с и даю флажок в main().

В main() по этому флажку запускаю стирание последнего сектора Flash.

С ПК-шной программы задуваю сплошной поток данных с 0 паузой между байтами.

Раз в 1с, там же, где даю команду на очистку сектора Flash, переключаю светодиод. Переключается, работает.

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


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

STM32F030C8.

У иных STM32 такое не наблюдается. 
Я был бы рад и прыгал до потолка, если бы нашелся мой глюк. Но у меня потолки около 3 метров. Не допрыгнешь.

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


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

19.06.2020 в 10:08, Arlleex сказал:

Ну, собственно, контроллер STM32F030R8T6.

Тактирование от HSI, Flash Prefetch Buffer выключен.

До этого я не имел практических дел (почти) с "народным" STM32F103. Но захотелось сделать небольшую ерундовину. Взял давно валявшуюся платку с STM32F103R8T6 (некогда купленную на али). Всё более-менее запустилось, но в процессе запуска наткнулся на один косяк: При включённом "prefetch buffer" + выполнении кода из flash + достаточно высокой SYSCLK происходит сбой в работе - выполнение кода процессором улетает по случайным адресам памяти. Если выполнять код из ОЗУ на любой штатной SYSCLK - всё ок. Если выключить prefetch - тоже всё ок. Методом тыка нашёл, что на SYSCLK<=36МГц - всё работает ок, на SYSCLK>=48МГц - имеет место быть глюк (между этими частотами не искал точную граничную частоту). Тактирование от кварца+PLL если что.

С питанием всё ок. Также прочитал про все биты в RCC, PWR и FLASH.ACR - ничего.

Прошерстил errata - там про это ни слова. Вот и странно - вроде такой со всех сторон обсосанный чип, а про такой глюк нет упоминаний. Хотя в errata указано "This errata sheet applies to the revisions B, Z, Y, 1, 2, 3 and X". Может такой баг есть в ревизии A? Неужто у меня она??? На сайте ST для неё ничего нет. Или китайцы прислали подделку, а не true STM32F103? :scratch_one-s_head:

 

PS: Вобщем интерес скорее академический - это известный баг STM32F103 или у меня в консерватории что-то не так? :mega_shok:

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


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

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

PS: Вобщем интерес скорее академический - это известный баг STM32F103 или у меня в консерватории что-то не так?

Девайсов на 103-м у нас полно и нареканий никогда не было...

Присоединяюсь к ответу @Vasily_, а может китайский аналог STM-ки.

На али ардуино-платы на этих МК ведрами за копейки продают, так что там или клон, или брак.

 

P.S. Все девайсы на этом МК у меня на максимальной частоте, HSE от кварца + PLL, prefetch buffer тоже всегда включен.

Подобный баг наблюдал один раз в жизни, когда не правильно настроил количество циклов доступа к Flash. Но он проявлялся практически сразу.

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


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

10.07.2020 в 21:56, jcxz сказал:

Методом тыка нашёл, что на SYSCLK<=36МГц - всё работает ок, на SYSCLK>=48МГц - имеет место быть глюк (между этими частотами не искал точную граничную частоту). Тактирование от кварца+PLL если что.

Нужно настроить wait-states в регистре FLASH_ACR. Цитата из RM:

Цитата

Bits 2:0 LATENCY: Latency
These bits represent the ratio of the SYSCLK (system clock) period to the Flash access time.
000 Zero wait state, if 0 < SYSCLK≤ 24 MHz
001 One wait state, if 24 MHz < SYSCLK ≤ 48 MHz
010 Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz

 

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


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

On 7/11/2020 at 2:05 AM, Arlleex said:

На али ардуино-платы на этих МК ведрами за копейки продают

Я таки не понимаю, как можно брать у китайцев некитайские микросхемы? Одно дело купить там esp8266 (хотя слышал что одни китайцы подделываю других), другое дело евпропейскую F103... Хотя у меня на работе взял плату с клоном китайским, маркировку не помню. Но оканчивается на F103. Работает. Вот только до каких пределов?

7 hours ago, AHTOXA said:

Нужно настроить wait-states в регистре FLASH_ACR. Цитата из RM:

О, появилась надежда, что китайцы - ребята честные)

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


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

12 часов назад, AHTOXA сказал:

Нужно настроить wait-states в регистре FLASH_ACR. Цитата из RM:

Тоже про это подумал, но автор темы пишет:

10.07.2020 в 19:56, jcxz сказал:

Также прочитал про все биты в RCC, PWR и FLASH.ACR - ничего.

Я так понял, что эти биты он настроил.

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


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

1 час назад, Сергей Борщ сказал:

Я так понял, что эти биты он настроил.

Ну, если настроил (и сделал это правильно), то эта тема будет темой про необъяснимые явления в мире микроконтроллеров :crazy:

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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