Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: STM32 новичку в ARM что к чему

Вт окт 05, 2021 18:18:28

Поддержу Eddy_Em, прошить легко можно, зажав reset, запустив процесс прошивки и сразу же отпустив reset.

Re: STM32 новичку в ARM что к чему

Ср окт 06, 2021 09:50:54

Камрады, всем спасибо за оперативность!!! Всё удачно перепрошил по UART1.

Re: STM32 новичку в ARM что к чему

Чт окт 21, 2021 20:25:24

Может кто подскажет проверенные библиотеки для FFT на 512 точек, Q15 / Q31? Надо для M0+ (stm32g030f6).

CMSIS DSP к сожалению в память не влазит, слишком толстые таблицы создает. Опции чтобы остались только нужные таблицы, естественно, задавал. Меня бы устроило чуть медленнее, но чтобы таблиц не более 12 килобайт.

Re: STM32 новичку в ARM что к чему

Пт окт 22, 2021 08:19:41

pvit писал(а):проверенные библиотеки для FFT на 512 точек
Что означает фраза - проверенные библиотеки?
Библиотека CMSIS DSP кроме основного расчета FFT использует расчет "оконных" функций и всяких фильтров, что бы "окно" было как можно узким, тогда эффект красивее будет.
Если начать снижать точность вычислений, к примеру 12 бит АЦП -> 8 бит АЦП, выкинуть из кода "оконные" функций и всякие фильтры, в результате точность вычислений упадет, "окно" станет широким, и придем к тому эффекту, что был на AVR контролерах.

Разве вы этого хотите?

Ну раз хотите, то берете библиотеку CMSIS DSP и начинаете все таблицы пересчитывать под 8 бит АЦП, убирать все комплексные расчеты с запятой и подгонять их под обыкновенные целочисленные расчеты, выкидывать из кода все расчеты "оконных" функций и всяких фильтров и связанные с ним таблицы, в результате у вас получится всего одна таблица, максимум 200-400 байт, и кусок кода в 2 кило.

Если уж я со своими 5 классами образования справился, то вы и подавно справитесь.

Я бы мог предоставить образец кода, который с успехом влазить в stm32f030f4p6, но, к сожалению, я аматор, любитель, не профессионал, сразу налетят профессионалы: -о лишний сдвиг, -о деление, -о код не читаемый, -о это надо было на rtos или "конечных автоматах" и т.п.

Re: STM32 новичку в ARM что к чему

Пт окт 22, 2021 09:47:29

Прочитайте еще раз что я написал. Там нет ни слова про снижение точности. Есть много вариантов реализации FFT и не везде такое количество и размер таблиц как в cmsis dsp. По-моему я написал достаточно внятно, что я хочу.

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

Что означает фраза - проверенные библиотеки?


Battle tested. Которые использовали много людей, и вы лично можете подтвердить что все ок.

Re: STM32 новичку в ARM что к чему

Пт окт 22, 2021 10:26:23

pvit писал(а):что все ок.
Нет, не все ок, во первых динамический диапазон сильно зарезан, был 12 бит стал 8 бит, это как сравнивать mp3 64 кбит*сек с 320 кбит*сек.
Во вторых отсутствие "оконной" функции картинку сводит на нет. Приходится резать на уровне -15 - -25дБ, хотя это можно было бы еще отображать.
pvit писал(а):Есть много вариантов реализации FFT и не везде такое количество и размер таблиц как в cmsis dsp.
Тогда в чем проблема, берете и используете.

Re: STM32 новичку в ARM что к чему

Пт окт 22, 2021 13:10:47

Тогда в чем проблема, берете и используете.

Хотелось бы получить ответ на мой вопрос. Кто какие библиотеки для целочисленного FFT использовал, с данными Q15 / Q31.

https://radiokot.ru/forum/viewtopic.php ... 7#p4108997 вот тут я ровно про это спросил. Ничего не изменилось. Проблем нет. Есть вопрос. И меня интересует ответ именно на него, а не на что-то еще.

Re: STM32 новичку в ARM что к чему

Вт ноя 16, 2021 17:56:05

А разве Keil не за денюжку?

Атолик бесплатный под любой камень и под любой размер.

Re: STM32 новичку в ARM что к чему

Ср ноя 17, 2021 08:31:25

Атолик бесплатный под любой камень и под любой размер.

Атолик у ST дипрекейтед с 2017 года. На основе Эклипса. Кубиде - на основе эклипса. Единственная разница - наличие у атолика кнопки чистой сборки, знакомый как-то очень искал такую кнопку в кубиде.

Re: STM32 новичку в ARM что к чему

Ср ноя 17, 2021 11:52:31

дипрекейтед

Деприкейтид же :)

ps. Не совсем STM32, но я тут пару дней играюсь с Raspberry Pi Pico на двухъядерном Cortex-M0+, как раз сегодня утром плагин openOCD для VisualGDB обновился, стало быстрее и даже заработал RTT, правда только с jlink. St-link в связке с openOCD почему-то пишет, что не поддерживает SWD, а jlink напрямую с двухъядерными работает только с V10, а у меня V9. Ну и поскольку я не ищу легких путей, то за пару вечеров в качестве эксперимента был написан компилятор для модулей PIO полность отрабатывающий на этапе компиляции, т.е. после выполнения следующего кода во флеше останется только 19 двухбайтовых инструкций которые и будут выведены на печать:

Re: STM32 новичку в ARM что к чему

Пн мар 21, 2022 21:58:34

Вопрос не по stm, но очень мелкий по EFM, но скорее всего просто по ARM. Планирую сделать интепретатор команд типа двигаться прямо, направо, стоп итп. для робота. В общем, он должен вызываться каждые 2,5мс. Или чаще, но если нет флага готовности данных сразу выход. Пока собираюсь из высокоуровневого процесса, который и будет кидать в очередь команды вызывать просто в цикле эту процедуру. Но я вообще-то ленивый и возникла мысль, а не вызывать ли её по прерыванию. Причем приоритет задать самый низкий, чтобы не мешать другим прерываниям, что там уже и так толпами работают. Но если вызывать по прерыванию, неплохо бы его как-то привязать к флагу, который поднимает другое прерывание, сообщая что данные готовы. Но, это прерывание имеет довольно высокий приоритет и я не могу в нем вызывать эту процедуру - она слишком развесистая для прерывания.

Так вот вопрос, есть ли какой механизм из одного прерывания сформировать запрос другого прерывания, чтобы оно вызвалось следом?

Re: STM32 новичку в ARM что к чему

Пн мар 21, 2022 22:03:52

То есть если данные не готовы, прерывание не вызывать? Ну так запретите его, а в другом прерывании разрешите.

Re: STM32 новичку в ARM что к чему

Пн мар 21, 2022 22:11:29

А кто это прерывание вызовет? Прерывание о готовности данных у меня вызывает DMA по окончании трансфера, затем делается небольшая обработка и выставляется флаг готовности данных. Хорошо, я туда добавлю NVIC_EnableIRQ(). А дальше?

Re: STM32 новичку в ARM что к чему

Пн мар 21, 2022 22:13:10

есть ли какой механизм из одного прерывания сформировать запрос другого прерывания, чтобы оно вызвалось следом?

Есть PendSV, задаешь ему самый низкий приоритет и выставляешь бит SCB_ICSR_PENDSVSET.

Re: STM32 новичку в ARM что к чему

Пн мар 21, 2022 22:55:29

Ага. Примерно так?
Код:
  NVIC_SetPriority(PendSV_IRQn, 7);


потом в высокоуровневом делаю
Код:
SCB->ICSR |= SCB_ICSR_PENDSVSET_Msk;


и получаю вызов в
Код:
void PendSV_Handler(void)


о, и код уже раскрашен....

Re: STM32 новичку в ARM что к чему

Пн мар 21, 2022 23:43:16

А кто это прерывание вызовет?

Что значит "кто"? У вас же прерывание по таймеру каждые 2.5 мс, вот таймер и вызовет. Просто пока данных нет,прерывание запрещено, и обработчик вызываться не будет.

Re: STM32 новичку в ARM что к чему

Вт мар 22, 2022 07:54:50

Кхе,там у меня нет прерываний. Два канала сравнения таймера объединённые по ИЛИ (c использованием Peripheral Reflex System) пинают АЦП который снимает два набора данных с фотосенсоров без подсветки и с подсветкой. А третий канал данных включает и выключает эту подсветку. Всё самостоятельно, без прерываний. Ну и АЦП делает запросы ПДП чтобы скинуть результат. И вот только тут есть прерывание по окончании трансфера.

А, я могу добавить прерывание по переполнению таймера. Мне это в голову не пришло, так как переполнение происходит между этими двумя измерениями. А, если как вы говорите разрешать и запрещать, тогда, действительно, ямогу его отложить. Ок, пусть будет это ПланБ, если с PendSV у меня что-то не понравится.

Re: STM32 новичку в ARM что к чему

Вт мар 22, 2022 09:47:39

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

Кхе,там у меня нет прерываний.

Так есть прерывания или нет?
В любом случае можно и просто рандомный флаг прерывания выставлять вручную. Ну не знаю, I2C неиспользуемого например.
С другой стороны, если у вас опрос относительно медленный, может проще опрашивать в основном цикле флаг DMA или какой-нибудь программный.

Re: STM32 новичку в ARM что к чему

Чт апр 07, 2022 21:35:37

Продолжение глупого вопроса не по stm32, а по вообще ARM. А как называется функция, которая обслуживает PendSV прерывание?

В EFM32GG12 я назвал её PendSV_Handler и всё прекрасно работает.
Код:
void PendSVInit(void) {
  NVIC_SetPriority(PendSV_IRQn, PendSV_IRQ_priority);
}

void PendSV_Handler(void) {
  profiler();
}


Но теперь пытаюсь это перенести на Cypress PSoC cy8c5268 и вместо этой функции я вылетаю в IntDefaultHandler:
Может кто знает как сделать, чтобы оно тут работало?

Re: STM32 новичку в ARM что к чему

Чт апр 07, 2022 21:50:37

Открываем startup-файл, ищем там таблицу векторов прерываний и смотрим/прописываем там нужный.
Ответить