Easyelectronics.ru

Электроника для всех
Текущее время: 25 фев 2021, 07:58

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 3524 ]  На страницу Пред.  1 ... 135, 136, 137, 138, 139, 140, 141  След.
Автор Сообщение
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 20 дек 2020, 17:54 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Мне не понятно как работает механизм. Вот к примеру флеш чистый. Boot 0/1 =1. Нажимаем прошить или дебаг через st link. Вот где программа возьмёт данные этой картинки, если по сути она все ещё на компе?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 20 дек 2020, 18:01 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Залил прошивку(или только картинку) один раз во флеш, дальше заливаешь в RAM, а картинку берешь из флеша. Или внешний флеш подключи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 20 дек 2020, 20:51 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Reflector спасибо за ответ. Но, меня это вопрос интересует не с точки зрения "как заставить работать". А с точки зрения как не переписывать флеш сто раз при отладке.
Везде пишут, что загрузка из рам как раз про это. Но, меня интересуют есть ли какие-то ограничения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 20 дек 2020, 21:20 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Signaller писал(а):
Но, меня это вопрос интересует не с точки зрения "как заставить работать". А с точки зрения как не переписывать флеш сто раз при отладке.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 20 дек 2020, 23:34 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Хм, я вообщем почитал эту тему по разным форумам. Оказывается там не все так просто, начиная с того что код надо серьёзно править что бы он нормально работал из рам (хотя бы та же таблица прерываний). А я думал, типа кнопку жмакнул и вперёд.
Reflector писал(а):
[
А в предыдущем ответе я что написал? При выполнении кода из RAM берется адрес картинки из флеша, для чего ее нужно предварительно залить всего один раз.

А где гарантия что компилятор при очередном цикле отладки не подвинет её во флеше? То есть, надо следить за адресом.

С другой стороны, я что-то не помню случая что бы кто-то убил флеш мк многократно перезаписью. Хотя вопрос не однократно подымался что для stm32 и АВР, что для плис.
Так что видимо, пока отложу работу из рам, пока она реально не понадобится. Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 21 дек 2020, 00:01 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Signaller писал(а):
Оказывается там не все так просто, начиная с того что код надо серьёзно править что бы он нормально работал из рам (хотя бы та же таблица прерываний).

От IDE зависит, при создании проекта может быть выбор запускать из флеша или RAM, тогда править придется только если хочется все переключать на ходу.

Цитата:
А где гарантия что компилятор при очередном цикле отладки не подвинет её во флеше? То есть, надо следить за адресом.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 21 дек 2020, 12:39 
Старожил

Зарегистрирован: 28 сен 2018, 00:25
Сообщения: 367
Signaller, мне кажется ты рано начал об этом беспокоиться. Вот интересно, у кого нибудь контроллер в процессе написания и отладки хоть один контроллер сдох именно по причине отказа флеши от перезаписей? Да и в любом случае это ведь отладочный экземпляр. Ну даже если и сдохнет контроллер, сдуть и запаять новый - минутное дело, и стоят они не космических денег. А в серийное устройство в любом случае пойдет новый контроллер, который прошьется один раз, ну до сотни раз, если с загрузчиком и пользователь может сам обновлять прошивку..
Вот лично у меня жив еще самый первый stm8s003 на отладочной плате на которой я экспериментирую и разовые поделки на один раз. Так у него вообще заявлено до 100 перезаписей..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 21 дек 2020, 13:02 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Та-да, я ж выше так и написал. Плюс прочитал, что над флешью висит какой-то умный контроллер выбора команд (предсказание переходов и тп) . Так что выполнение кода из рам может быть даже медленнее чем из флеш.
Просто пишут во всяких уроках мол "выполняйте код из рам, экономите флешь". Не стоит оно видимо того на начальных этапах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 21 дек 2020, 13:24 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Signaller писал(а):
Плюс прочитал, что над флешью висит какой-то умный контроллер выбора команд (предсказание переходов и тп) . Так что выполнение кода из рам может быть даже медленнее чем из флеш.

От мк многое зависит, у меня на H7 вектора прерываний в ITCM RAM, стек в DTCM RAM, при отладке код обычно в AXI SRAM, а еще помимо флеша есть SRAM123 и SRAM4. И даже если основной код будет во флеше все равно иногда полезно отдельные функции запускать из TCM потому что это может быть заметно быстрее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 21 дек 2020, 13:34 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Спасибо учту на будущее, но для меня это все пока чёрная магия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 21 дек 2020, 14:49 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 862
Цитата:
я что-то не помню случая что бы кто-то убил флеш мк многократно перезаписью

Обрати внимание, как у СТМ указан ресурс флэш: 100000 циклов перезаписи, но не_более 1000 при гарантированном цикле сохранения 20 лет и максимальной температуре. По-моему, выводы очевидны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 21 дек 2020, 15:28 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Спасибо, да это важный момент. Но у меня пока речь идёт о хоббийных проектах. Думаю не вылезу за рамки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 15:28 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Хм, не успел я забить на вот эту все тему исполнением в RAM. Как она ко мне вернулась. Суть в чем, я еще не дошел толком до таймеров и прерываний, но хотелось запилить что-то типа шим на выходе С13 STM32F401. Ну да ладно, для теста написать софтовый pwm не проблема.
Однако оказалось что у arm нет функции delay_us. А потому я просто написал пустой цикл.
Код:
void delay_loop ()
{
   for (volatile int t=0; t<100;t++)
      {};

   }

Каково же было мое удивление когда результирующая частота была кхм, не очень высокой. (Точнее я сначала влепил t<1000, думая что этого будет мало, а оказалось что много:)).
Я залез в дизасм и у видел следующее:
Код:
08000684:   ldr     r3, [sp, #4]
08000686:   adds    r3, #1
08000688:   str     r3, [sp, #4]
0800068a:   ldr     r3, [sp, #4]
0800068c:   cmp     r3, #99 ; 0x63
0800068e:   ble.n   0x8000684 <main+260>

Вот эти 6 команд равны одному проходу цикла, и занимают аж но целых 26 тактов если верить SysTick. Я конечно понимаю, что считать такты у арм на инструкцию дело не очень благодарное. Но STM32 вроде как говорит что благодаря конвееру и предсказанию переходов среднее время выполнения должно быть 1 такт.
А тут выходит как не крути по 4 такта на инструкцию (что в дебаг что в релиз, что с оптимизацией и без). И хваленная частота 84 МГц превращается в еффективную 21... Настройки клока вроде тоже верные (выводил на mco), на самом мк никаких задач кроме тупого мигания не делается.
Я правильно понимаю что если воткнуть вот эту функцию в рам, то она будет крутиться быстрее? Если да, может подскажете какую статью как это делал для GCC (cubeide), а то битый час гуглю, и везде какие обрывки, то команд, то скриптов.

ЗЫ Может показатся, что я лезу в дебри. Но на самом деле у меня программа максимум достаточно "проста", хочу прикрутить камеру типа OV7670, у которой емнип, надо забирать данные с частотой не меньше 7 МГц. А тут выходит, что к мк ее не подключишь ибо ногодрыг на такой скорости не доступен, надо искать камень с DCMI. А тут еще оказывается и производительность ядра, не совсем то что кажеться на первый взгляд. А я пытаюсь оценить какой же мне камень нужен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 16:03 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Signaller писал(а):
Вот эти 6 команд равны одному проходу цикла, и занимают аж но целых 26 тактов если верить SysTick. Я конечно понимаю, что считать такты у арм на инструкцию дело не очень благодарное. Но STM32 вроде как говорит что благодаря конвееру и предсказанию переходов среднее время выполнения должно быть 1 такт.

Даже если кеширование с предвыборкой отключить и прописать максимальные 7WS все равно 26 тактов не должно быть, видимо неправильно меряешь.
Хотя нет, с 7WS наверно и больше будет, но проблема наверняка в недонастроеном FLASH->ACR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 16:53 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Reflector
Я генерил проект через куб (наивно полагая, что там уже все настроенно). Ткните пожалуйста куда смотреть.
UPD. Нашел, вроде все норм задержка 2 цикла (как по дш), кеши включены.


Последний раз редактировалось Signaller 22 дек 2020, 17:03, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 17:00 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Регистр указан, что там куб генерит я не знаю, но если там все включено, значит проблема в измерениях.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 17:06 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Понял, попробую вывести выход таймера на порт, что бы убедится что клоки верно настроенны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 17:37 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Проверил на F3, для 2WS получается 11 тактов, а там даже ART нет который может дополнительно цикл оптимизировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 18:46 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4961
Откуда: КЧР, поселок Нижний Архыз
Мужики, кто работал с STM32F303, такой вопрос: CAN и USB одновременно могут работать?
Ну и еще вопрос: я в даташите увидел, что в отличие от STM32F0x2 у этих нет возможности запустить USB без кристалла. Может, есть что у STM32, что умеет аппаратные флоаты, имеет шустрый АЦП с встроенным усилителем и умеет одновременно USB и CAN, причем, USB без кварца?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 19:04 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1417
Eddy_Em писал(а):
Мужики, кто работал с STM32F303, такой вопрос: CAN и USB одновременно могут работать?

С CAN дела не имел, но работать должно.

Цитата:
я в даташите увидел, что в отличие от STM32F0x2 у этих нет возможности запустить USB без кристалла. Может, есть что у STM32, что умеет аппаратные флоаты, имеет шустрый АЦП с встроенным усилителем и умеет одновременно USB и CAN, причем, USB без кварца?

Из относительно старого, например, L433, из нового - G4 или даже L5, только это все пока не купишь за $1.5, как F303. И еще у L серий усилитель не особо шустрый...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 22 дек 2020, 20:44 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4961
Откуда: КЧР, поселок Нижний Архыз
ОК, спасибо. Буду тогда на 303 ориентироваться, пусть и придется место под кварц тратить...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 23 дек 2020, 00:09 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2455
Откуда: Киев
Signaller писал(а):
Понял, попробую вывести выход таймера на порт, что бы убедится что клоки верно настроенны.

Вообщем вывел переключение пина по переполнению таймера 10 (84MHz) с предделителем ноль, и периодом 840. Ожидаемо получил частоту 50КГц. Короче клоки впорядке.
Продолжаю експеременты. В этот раз я закинул в главный цикл следующий код:
Код:
[quote]
LL_GPIO_ResetOutputPin(LED_C13_GPIO_Port, LED_C13_Pin);
   LL_GPIO_SetOutputPin(LED_C13_GPIO_Port, LED_C13_Pin);
   LL_GPIO_ResetOutputPin(LED_C13_GPIO_Port, LED_C13_Pin);
   LL_GPIO_SetOutputPin(LED_C13_GPIO_Port, LED_C13_Pin);
и так еще много раз...

Компилятор в этом случае поступил умно, и часть кода таки перевел в нормальные команды:
Код:
080007b2:   str     r1, [r3, #24]
080007b4:   str     r2, [r3, #24]
080007b6:   str     r1, [r3, #24]
080007b8:   str     r2, [r3, #24]
080007ba:   str     r1, [r3, #24]
080007bc:   str     r2, [r3, #24]

Что дало на выходе "ногодрыг" аж под 42МГц (правда мой 100МГц осцилл скорее синус показывает).
То есть на команду тратится 2 такта и какой-то пайплайн тайм есть.
Но вот прикол, Systick каждую команду считает по 4 если это делать по шагам в дебаггере. А вот если сделать что-то вроде, get tick () вначале и конце то в среднем выходит 2 такта на команду.
Я таким же образом повторил эксперемент для своего for loop (на весь цикл от 0 до 100), и получил в среднем 10 тактов на холостой цикл, что уже ближе к ожиданиям.
То есть пайплайн работает, но видимо не в режиме покомандного исполнения.
Всем спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 23 дек 2020, 20:17 
Заглядывает иногда

Зарегистрирован: 16 дек 2012, 22:17
Сообщения: 75
Подскажите как настроить у stm32f030f4 считывание АЦП с 0 и 1канала. инжектированных каналов нет,как понял из даташита он опрашивает все по очереди. Если настроить на 1 канал все работает хорошо, а если переключаю
if(ch==0)ADC_ChannelConfig(ADC1, ADC_Channel_0, ADC_SampleTime_28_5Cycles);
else ADC_ChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_28_5Cycles);
значения берет из нулевого канала, на первый не переключает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 23 дек 2020, 20:31 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7286
Для начала, о типовой проблеме - загрузите с ST снипетсы для семейства F0 и внимательно их изучите.

Работа с несколькими "входами" обычно делается так:
1. в RAM создается буфер по нужное кол-во отсчетов (каналов)
2. в ADC настраивается работа с нужными каналами (выбор входов) и режим работы по DMA
3. настраивается DMA (уточню - DMA1ch1) по перекладыванию слов из ADC в данный буфер (п1)
4. настраивается "пинатель" ADC - либо это будет програмный запуск или аппаратный сигнал с таймера. Лучше второе.
В результате, у вас в буфере всегда будут актуальные значения считанных каналов.
В снипетсах есть соответствующий пример.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 для чайников
СообщениеДобавлено: 23 дек 2020, 23:21 
Заглядывает иногда

Зарегистрирован: 16 дек 2012, 22:17
Сообщения: 75
Спасибо, теперь сразу запустилось с первого раза, а получается без DMA 2 и более каналов не опросить?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3524 ]  На страницу Пред.  1 ... 135, 136, 137, 138, 139, 140, 141  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB