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

    

STM32 – вопросы – проблемы - решения.

Предлагаю в этой теме обсуждать вопросы разработчиков на STM32.

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


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

Верно ли я понял, что таймеры в STM32 могут тактироваться максимум от 32MHz? Т.е. 10бит PWM на частоте 66kHz (как в AVR) невозможна?

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


Ссылка на сообщение
Поделиться на другие сайты
Верно ли я понял, что таймеры в STM32 могут тактироваться максимум от 32MHz?

Неверно. Если прескалер APB не равен единице (то есть, его частота не равна 72МГц), то входная частота таймеров равна удвоенной частоте APB.

То есть, например, для таймеров TIM2...TIM7 если частота APB2 равна 36МГц, то таймеры считают с частотой 72МГц.

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


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

Подборка тем по STM32:

 

Часы на STM32

http://electronix.ru/forum/index.php?showt...55&hl=STM32

 

 

ARM Cortex M3 + Linux

http://electronix.ru/forum/index.php?showt...89&hl=STM32

 

Ethernet на STM32, трафик?

http://electronix.ru/forum/index.php?showt...54&hl=STM32

 

STM32 bootloader и FreeRtos

http://electronix.ru/forum/index.php?showt...28&hl=STM32

 

 

STM32 USB_DISCONNECT 2

http://electronix.ru/forum/index.php?showt...32&hl=STM32

 

STM32 audio engine

http://electronix.ru/forum/index.php?showt...63&hl=STM32

 

SPI STM32

http://electronix.ru/forum/index.php?showt...54&hl=STM32

 

STM32 SPI(NSS - Hardware NSS mode)

http://electronix.ru/forum/index.php?showt...79&hl=STM32

 

stm32f100 Проблемы с настройкой DAC в RCC

http://electronix.ru/forum/index.php?showt...74&hl=STM32

 

 

Atollic TrueSTUDIO®/STM32, Отзывы

http://electronix.ru/forum/index.php?showt...94&hl=STM32

 

 

Программирование фильтров по входам таймеров на STM32

http://electronix.ru/forum/index.php?showt...43&hl=STM32

 

STM32F103 и захват потока данных, Справится ли?

http://electronix.ru/forum/index.php?showt...21&hl=STM32

 

STM32F103x делимся впечатлениями

http://electronix.ru/forum/index.php?showt...60&hl=STM32

 

STM32 USB_DISCONNECT

http://electronix.ru/forum/index.php?showt...94&hl=STM32

 

STM32 или LPC17xx?

http://electronix.ru/forum/index.php?showt...39&hl=STM32

 

STM32 и DFU

http://electronix.ru/forum/index.php?showt...83&hl=STM32

 

stm32f105, APB1

http://electronix.ru/forum/index.php?showt...93&hl=STM32

 

STM32 CAN + USB, Оба сразу не работают и БЕЗ варинтов ?

http://electronix.ru/forum/index.php?showt...54&hl=STM32

 

STM32 MCKIT, Асинхронник и АРМ

http://electronix.ru/forum/index.php?showt...34&hl=STM32

 

stm32 stop mode, Не могу разбудить микроконтроллер внешним прерыванием

http://electronix.ru/forum/index.php?showt...90&hl=STM32

 

STM32 mp3 playbaak

http://electronix.ru/forum/index.php?showt...08&hl=STM32

 

 

STM32 ReadOut protection, мт-линком

http://electronix.ru/forum/index.php?showt...15&hl=STM32

 

 

STM32F101C8 и FreeRtos, Имеет ли смысл?

http://electronix.ru/forum/index.php?showt...88&hl=STM32

 

Как обойти совмещение пинов can и usb на stm32f103

http://electronix.ru/forum/index.php?showt...31&hl=STM32

 

STM32 SDIO 4bit SD-card, Подскажите кто делал, в чем может быть проблема

http://electronix.ru/forum/index.php?showt...44&hl=STM32

 

 

STM32F103 USB, Что то не получается.

http://electronix.ru/forum/index.php?showt...71&hl=STM32

 

Вопрос по таймеру в STM32 Cortex

http://electronix.ru/forum/index.php?showt...76&hl=STM32

 

 

Кит на STM32, Интересный кит.

http://electronix.ru/forum/index.php?showt...66&hl=STM32

 

STM32 + IAR + download & debug, вопрос по старту программы

http://electronix.ru/forum/index.php?showt...13&hl=STM32

 

STM32: Отладка в RAM

http://electronix.ru/forum/index.php?showt...31&hl=STM32

 

STM32 TIM4 Output Compare 4

http://electronix.ru/forum/index.php?showt...13&hl=STM32

 

 

STM32F20X - что-то новое от ST

http://electronix.ru/forum/index.php?showt...05&hl=STM32

 

STM32 & NAND

http://electronix.ru/forum/index.php?showt...59&hl=STM32

 

 

stm32f107vct непонятки с CAN, в loopback CAN1 работает а CAN2 нет

http://electronix.ru/forum/index.php?showt...57&hl=STM32

 

STM32 Virtual COM, STM32 Virtual COM

http://electronix.ru/forum/index.php?showt...04&hl=STM32

 

STM32 отладка в SRAM

http://electronix.ru/forum/index.php?showt...81&hl=STM32

 

 

STM32F103 и его SPI – непонятки

http://electronix.ru/forum/index.php?showt...02&hl=STM32

 

STM32F103 + Flash Loader Demonstrator, проблемы с процессом прошивки

http://electronix.ru/forum/index.php?showt...37&hl=STM32

 

stm32 i2c

http://electronix.ru/forum/index.php?showt...34&hl=STM32

 

Технический семинар по STM32(Москва, проводил Компел), был на нем...

http://electronix.ru/forum/index.php?showt...81&hl=STM32

 

STM32 Virtual COM Port дрова для Vista

http://electronix.ru/forum/index.php?showt...23&hl=STM32

 

STM32F103RBT6 не прошивается

http://electronix.ru/forum/index.php?showt...29&hl=STM32

 

STM32 LQFP100 & ext.SRAM multiplexed mode, КАК???

http://electronix.ru/forum/index.php?showt...76&hl=STM32

 

Проблемы J-Link + SТМ32

http://electronix.ru/forum/index.php?showt...88&hl=STM32

 

STM32, micro-eeprom в "Option bytes"

http://electronix.ru/forum/index.php?showt...04&hl=STM32

 

STM32, gcc, тип long long, ld ругается при сборке проекта

http://electronix.ru/forum/index.php?showt...62&hl=STM32

 

STM32 & ADC, не могу запустить AnalogWatchdog

http://electronix.ru/forum/index.php?showt...98&hl=STM32

 

STM32 не работает с J-Link, не понимаю...

http://electronix.ru/forum/index.php?showt...38&hl=STM32

 

Максимальное разрешение многоканального программного ШИМ на STM32, Проверьте мои измышления, плз

http://electronix.ru/forum/index.php?showt...82&hl=STM32

 

переварить NTSC c помощью STM32, видеокартинка на ноуте

http://electronix.ru/forum/index.php?showt...54&hl=STM32

 

Анонсированы новые семейства STM32F105 и STM32F107 с Ethernet MAC 10/100, Сравниваем с LPC17xx с Ethernet

http://electronix.ru/forum/index.php?showt...75&hl=STM32

 

Стратегии сброса через J-link, разные для LPC24XX и STM32?

http://electronix.ru/forum/index.php?showt...77&hl=STM32

 

поднять USB на Olimex STM32-H103, апноут не курится :(

http://electronix.ru/forum/index.php?showt...42&hl=STM32

 

stm32 max jtag speed

http://electronix.ru/forum/index.php?showt...91&hl=STM32

 

STM32F101x + LSE, проблема с часовым генератором

http://electronix.ru/forum/index.php?showt...42&hl=STM32

 

как подключить программатор на FTDI к IAR для работы с STM32

http://electronix.ru/forum/index.php?showt...43&hl=STM32

 

STM32 + RTC&IrDA, Есть ли подводные камни?

http://electronix.ru/forum/index.php?showt...20&hl=STM32

 

Атомарная операция, STM32F10x

http://electronix.ru/forum/index.php?showt...24&hl=STM32

 

STM32: одновременно использовать DMA для USART1 и SPI2 нельзя?

http://electronix.ru/forum/index.php?showt...60&hl=STM32

 

STM32F101 Rev. Z

http://electronix.ru/forum/index.php?showt...74&hl=STM32

 

 

Errata для STM32

http://electronix.ru/forum/index.php?showt...75&hl=STM32

 

STM32 и ADC, Где храниться информация о текущем конвертируемом канале АЦП из группы

http://electronix.ru/forum/index.php?showt...77&hl=STM32

 

STMicroelectronics разродилась новым семейством - STM32

http://electronix.ru/forum/index.php?showt...69&hl=STM32

 

натокам периферии STM32, Синхронизация массивов, передаваемых и принимаемых по DMA

http://electronix.ru/forum/index.php?showt...35&hl=STM32

 

stm32 не работает pwm на remap TIM3_CH2 (PB.5)

http://electronix.ru/forum/index.php?showt...89&hl=STM32

 

STM32 + IAR, Подскажите методологию

http://electronix.ru/forum/index.php?showt...39&hl=STM32

 

DAC в STM32 Cortex, Библиотечные примеры не работают

http://electronix.ru/forum/index.php?showt...55&hl=STM32

 

Кеил и STM32, Что не позволено дивайсу?

http://electronix.ru/forum/index.php?showt...54&hl=STM32

 

STM3210B-EVAL

http://electronix.ru/forum/index.php?showt...93&hl=STM32

 

STM32F103xxx от ST, Контроллер на ядре Cortex-M3

http://electronix.ru/forum/index.php?showt...94&hl=stm32

 

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


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

 

Проблемы J-Link + SТМ32

http://electronix.ru/forum/index.php?showt...88&hl=STM32

 

 

STM32 не работает с J-Link, не понимаю...

http://electronix.ru/forum/index.php?showt...38&hl=STM32

 

STM32F102C6 не работает с MT-Link. Смотрел приведенные выше темы. Там не мой случай. Аналоговое питание подключено, mt-link подключал коротким шнурком. результат - 0.

 

Пробую законнектиться с процем с помощью JFlashARM.exe V382. пишет

Connecting ...
- Connecting via USB to J-Link device 0
- J-Link firmware: V1.20 (J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5)
- JTAG speed: 5 kHz (Auto)
- Initializing CPU core (Init sequence) ...
- ERROR: Failed to connect

и выдает окно

Bad JTAG communication: Write to IR: Expected 0x1, got 0x7 (TAP Command : 2) @ Off 0x5

 

свежескаченный JFlashARM.exe V420p пишет

Connecting ...
- Connecting via USB to J-Link device 0
- J-Link firmware: V1.20 (J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5)
- JTAG speed: 5 kHz (Fixed)
- ERROR: Wrong AHB ID (15:3). Expected 0x04770001 (Mask 0x0FFFFF0F), Found 0xFFFFFFFF
- Initializing CPU core (Init sequence) ...
- JTAG speed: 5 kHz (Fixed)
- ERROR: Failed to connect

 

jlink.exe при запуске пишет

SEGGER J-Link Commander V4.20p ('?' for help)
Compiled Nov 19 2010 15:55:19
DLL version V4.20p, compiled Nov 19 2010 15:55:07
Firmware: J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5
Hardware: V5.00
S/N: 11111117 
VTarget = 3.339V
Info: Could not measure total IR len. TDO is constant high.

WARNING: CPU core not found.
No devices found on JTAG chain. Trying to find device on SWD.
No device found on SWD.
Did not find any core.
No devices found on JTAG chain. Trying to find device on SWD.
No device found on SWD.
Did not find any core.
J-Link>

 

питание звонил и мерил - все нормально.

jtag выводы звонил и смотрел осциллографом - тоже все нормально, кроме вывода которым контроллер должен отвечать - там всегда 1.

из jlink.exe дергал ногами jtag тоже дергается что и где положено.

 

в JFlashARM.exe добавлял reset и halt - не помогло.

 

JFlashARM.exe V420p выбирал процессор STM32F102C6 и STM32F102C6(allow opt///) тоже не помогло.

 

сброс от залочки

JLinkSTM32.exe говорит

Connecting to J-Link...O.K.
Using SWD as target interface.
Target interface speed: 1000kHz.
Could not identify STM32 device.
Press any key to exit.

 

mt-link рабочий - коннектится к sam7x без проблем

 

аппаратного выключения jtag вроде в этом проце нет

 

процессоры новые...

 

пробовал wigglerом - тоже не коннектится :(

 

версия mt link Hardware: V5.00 может в этом проблема?

 

 

может есть еще какие нибуть идеи и соображения?

 

 

 

 

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


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

 

Может Вам 6-ю версию прошивки попробовать? Могу скинуть схему 6-го MT-LINK и прошивку если надо? У меня есть MT-LINK v6.0 шьет STM32 нормально.

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


Ссылка на сообщение
Поделиться на другие сайты
Может Вам 6-ю версию прошивки попробовать? Могу скинуть схему 6-го MT-LINK и прошивку если надо? У меня есть MT-LINK v6.0 шьет STM32 нормально.

 

Приму с благодарностью и схему и прошивку.... Написал вам письмо...

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


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

Проблема решена. были перепутаны tms и tck ноги jtag....

mt-link версии 5.0 работает с контроллерами st32...

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

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


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

Наткнулся на одну непонятную вещь в таймере общего назначения (2-4) STM32F103.

 

Работаю с таймером 2. 3-й канал сконфигурирован как вход. Направление счета как up-counter.

Цель- измерять период импульсов на ноге - входе 3-го канала).

 

3-й канал настроен на Input Cupture, по факту захвата вызывается прерывание. (CC3IE=1)

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

В идеальных условиях все работает.

 

Но есть особенность- не понятно, как к этой конфигурации относится ARR ? Опытным путем установлено что его надо устанавливать в 0xFFFF, для полного диапазона измерений.

Предполагаю, что после перезагрузки таймера туда запишется это число?.

 

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

 

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

 

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

 

Но мне это не нравится. Очевидно, есть какое-то событие, происходящее по переполнению таймера, приводящее к корректной работе. Но какое?

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


Ссылка на сообщение
Поделиться на другие сайты
Очевидно, есть какое-то событие, происходящее по переполнению таймера, приводящее к корректной работе. Но какое?

Это событие называется "update event". По нему ARR и прескалер грузятся из предварительного в теневой регистр. То есть, начинают действовать новые значения. Для генерации update event вручную надо сделать так:

TIM2->EGR |= TIM_EGR_UG;

И ещё совет: не надо каждый раз сбрасывать таймер. Это расточительно (практически таймер занят только под один канал захвата), и к тому же страдает точность (вы теряете тики, прошедшие за время входа в прерывание). Просто запоминайте предыдущее значение регистра захвата, и вычитайте его из вновь захваченного. Это даст длительность импульса. А таймер пусть работает в свободном режиме (от 0 до 0xFFFF).

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


Ссылка на сообщение
Поделиться на другие сайты
Это событие называется "update event". По нему ARR и прескалер грузятся из предварительного в теневой регистр. То есть, начинают действовать новые значения. Для генерации update event вручную надо сделать так:

TIM2->EGR |= TIM_EGR_UG;

И ещё совет: не надо каждый раз сбрасывать таймер. Это расточительно (практически таймер занят только под один канал захвата), и к тому же страдает точность (вы теряете тики, прошедшие за время входа в прерывание). Просто запоминайте предыдущее значение регистра захвата, и вычитайте его из внования не запрещать ь захваченного. Это даст длительность импульса. А таймер пусть работает в свободном режиме (от 0 до 0xFFFF).

 

Спасибо! Про то что таймер можно не сбрасывать, я подумал, но извечная привычка экономить переменные и память на них пересилила.. (пока мне нужен только один канал захвата)..

 

Теперь пытаюсь понять- я что же происходит при старте программы если прерывание разрешено и есть импульсы на входе? ? пробовал смотреть в отладчике содержимое регистров- все работает корректно- значения ARR не меняется.. меняется ли прескалер, вот не посмотрел.. :( ..

При приходе прерывания выполняется обработчик, таймер сбрасывается, потом начинает увеличиваться.. но при приходе следующего импульса значение регистра захвата и самого таймера не 400-500мкс , как ожидалось, а 14-15 тысяч. Величина прескалера- 71, частота счетчика получается 1 Мгц.

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


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

Нет ли у кого примера по работе с USB-HOST MassStorage для 105й - 107й серии STM32 ?

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


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

Их не существует в природе - похоже, что индусы из ST не осилили USB host :(

Даже в комплекте с отладочной платой от ST идут бинарники (!), собранные с использованием платного стека USB.

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


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

у ST есть аппноут IAP бутлодера, я его переделал чтобы тот грузил прошивку не по UART, а с SD карты.

Но, бутлодер располагается с адреса 0x08000000, программа с адреса 0x08003000

Чтобы войти в бут - необходимо выключить питание МК и включить снова

Вопрос: можно ли перепрыгнуть на 0x08000000 адрес из основной программы без перезапуска?

Или лучше врубить ватчдог и дождаться пока он сбросит проц?

 

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


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

При приходе прерывания выполняется обработчик, таймер сбрасывается, потом начинает увеличиваться.. но при приходе следующего импульса значение регистра захвата и самого таймера не 400-500мкс , как ожидалось, а 14-15 тысяч.

 

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

 

DBGMCU_Config (DBGMCU_TIM3_STOP, ENABLE);  // stop timer3 while debugging

 

либо на "регистровом" уровне программирования:

 

DBGMCU->CR |= DBGMCU_TIM3_STOP;

 

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

 

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.