|
STM32 – вопросы – проблемы - решения. |
|
|
|
Nov 24 2010, 05:59
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Подборка тем по STM32: Часы на STM32 http://electronix.ru/forum/index.php?showt...55&hl=STM32ARM Cortex M3 + Linux http://electronix.ru/forum/index.php?showt...89&hl=STM32Ethernet на STM32, трафик? http://electronix.ru/forum/index.php?showt...54&hl=STM32STM32 bootloader и FreeRtos http://electronix.ru/forum/index.php?showt...28&hl=STM32STM32 USB_DISCONNECT 2 http://electronix.ru/forum/index.php?showt...32&hl=STM32STM32 audio engine http://electronix.ru/forum/index.php?showt...63&hl=STM32SPI STM32 http://electronix.ru/forum/index.php?showt...54&hl=STM32STM32 SPI(NSS - Hardware NSS mode) http://electronix.ru/forum/index.php?showt...79&hl=STM32stm32f100 Проблемы с настройкой DAC в RCC http://electronix.ru/forum/index.php?showt...74&hl=STM32Atollic TrueSTUDIO®/STM32, Отзывы http://electronix.ru/forum/index.php?showt...94&hl=STM32Программирование фильтров по входам таймеров на STM32 http://electronix.ru/forum/index.php?showt...43&hl=STM32STM32F103 и захват потока данных, Справится ли? http://electronix.ru/forum/index.php?showt...21&hl=STM32STM32F103x делимся впечатлениями http://electronix.ru/forum/index.php?showt...60&hl=STM32STM32 USB_DISCONNECT http://electronix.ru/forum/index.php?showt...94&hl=STM32STM32 или LPC17xx? http://electronix.ru/forum/index.php?showt...39&hl=STM32STM32 и DFU http://electronix.ru/forum/index.php?showt...83&hl=STM32stm32f105, APB1 http://electronix.ru/forum/index.php?showt...93&hl=STM32STM32 CAN + USB, Оба сразу не работают и БЕЗ варинтов ? http://electronix.ru/forum/index.php?showt...54&hl=STM32STM32 MCKIT, Асинхронник и АРМ http://electronix.ru/forum/index.php?showt...34&hl=STM32stm32 stop mode, Не могу разбудить микроконтроллер внешним прерыванием http://electronix.ru/forum/index.php?showt...90&hl=STM32STM32 mp3 playbaak http://electronix.ru/forum/index.php?showt...08&hl=STM32STM32 ReadOut protection, мт-линком http://electronix.ru/forum/index.php?showt...15&hl=STM32STM32F101C8 и FreeRtos, Имеет ли смысл? http://electronix.ru/forum/index.php?showt...88&hl=STM32Как обойти совмещение пинов can и usb на stm32f103 http://electronix.ru/forum/index.php?showt...31&hl=STM32STM32 SDIO 4bit SD-card, Подскажите кто делал, в чем может быть проблема http://electronix.ru/forum/index.php?showt...44&hl=STM32STM32F103 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=STM32STM32 + IAR + download & debug, вопрос по старту программы http://electronix.ru/forum/index.php?showt...13&hl=STM32STM32: Отладка в RAM http://electronix.ru/forum/index.php?showt...31&hl=STM32STM32 TIM4 Output Compare 4 http://electronix.ru/forum/index.php?showt...13&hl=STM32STM32F20X - что-то новое от ST http://electronix.ru/forum/index.php?showt...05&hl=STM32STM32 & NAND http://electronix.ru/forum/index.php?showt...59&hl=STM32stm32f107vct непонятки с CAN, в loopback CAN1 работает а CAN2 нет http://electronix.ru/forum/index.php?showt...57&hl=STM32STM32 Virtual COM, STM32 Virtual COM http://electronix.ru/forum/index.php?showt...04&hl=STM32STM32 отладка в SRAM http://electronix.ru/forum/index.php?showt...81&hl=STM32STM32F103 и его SPI – непонятки http://electronix.ru/forum/index.php?showt...02&hl=STM32STM32F103 + Flash Loader Demonstrator, проблемы с процессом прошивки http://electronix.ru/forum/index.php?showt...37&hl=STM32stm32 i2c http://electronix.ru/forum/index.php?showt...34&hl=STM32Технический семинар по STM32(Москва, проводил Компел), был на нем... http://electronix.ru/forum/index.php?showt...81&hl=STM32STM32 Virtual COM Port дрова для Vista http://electronix.ru/forum/index.php?showt...23&hl=STM32STM32F103RBT6 не прошивается http://electronix.ru/forum/index.php?showt...29&hl=STM32STM32 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=STM32STM32, micro-eeprom в "Option bytes" http://electronix.ru/forum/index.php?showt...04&hl=STM32STM32, gcc, тип long long, ld ругается при сборке проекта http://electronix.ru/forum/index.php?showt...62&hl=STM32STM32 & ADC, не могу запустить AnalogWatchdog http://electronix.ru/forum/index.php?showt...98&hl=STM32STM32 не работает с 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=STM32stm32 max jtag speed http://electronix.ru/forum/index.php?showt...91&hl=STM32STM32F101x + LSE, проблема с часовым генератором http://electronix.ru/forum/index.php?showt...42&hl=STM32как подключить программатор на FTDI к IAR для работы с STM32 http://electronix.ru/forum/index.php?showt...43&hl=STM32STM32 + RTC&IrDA, Есть ли подводные камни? http://electronix.ru/forum/index.php?showt...20&hl=STM32Атомарная операция, STM32F10x http://electronix.ru/forum/index.php?showt...24&hl=STM32STM32: одновременно использовать DMA для USART1 и SPI2 нельзя? http://electronix.ru/forum/index.php?showt...60&hl=STM32STM32F101 Rev. Z http://electronix.ru/forum/index.php?showt...74&hl=STM32Errata для STM32 http://electronix.ru/forum/index.php?showt...75&hl=STM32STM32 и ADC, Где храниться информация о текущем конвертируемом канале АЦП из группы http://electronix.ru/forum/index.php?showt...77&hl=STM32STMicroelectronics разродилась новым семейством - STM32 http://electronix.ru/forum/index.php?showt...69&hl=STM32натокам периферии STM32, Синхронизация массивов, передаваемых и принимаемых по DMA http://electronix.ru/forum/index.php?showt...35&hl=STM32stm32 не работает pwm на remap TIM3_CH2 (PB.5) http://electronix.ru/forum/index.php?showt...89&hl=STM32STM32 + IAR, Подскажите методологию http://electronix.ru/forum/index.php?showt...39&hl=STM32DAC в STM32 Cortex, Библиотечные примеры не работают http://electronix.ru/forum/index.php?showt...55&hl=STM32Кеил и STM32, Что не позволено дивайсу? http://electronix.ru/forum/index.php?showt...54&hl=STM32STM3210B-EVAL http://electronix.ru/forum/index.php?showt...93&hl=STM32STM32F103xxx от ST, Контроллер на ядре Cortex-M3 http://electronix.ru/forum/index.php?showt...94&hl=stm32
--------------------
Magic Friend
|
|
|
|
|
Nov 26 2010, 06:58
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 9-02-06
Из: Челябинск
Пользователь №: 14 160

|
Цитата(Danis @ Nov 24 2010, 10:59)  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 может в этом проблема? может есть еще какие нибуть идеи и соображения?
|
|
|
|
|
Nov 28 2010, 17:45
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(Alfa @ Nov 26 2010, 10:58)  может есть еще какие нибуть идеи и соображения? Может Вам 6-ю версию прошивки попробовать? Могу скинуть схему 6-го MT-LINK и прошивку если надо? У меня есть MT-LINK v6.0 шьет STM32 нормально.
--------------------
Magic Friend
|
|
|
|
|
Nov 29 2010, 03:53
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 9-02-06
Из: Челябинск
Пользователь №: 14 160

|
Цитата(Danis @ Nov 28 2010, 22:45)  Может Вам 6-ю версию прошивки попробовать? Могу скинуть схему 6-го MT-LINK и прошивку если надо? У меня есть MT-LINK v6.0 шьет STM32 нормально. Приму с благодарностью и схему и прошивку.... Написал вам письмо...
|
|
|
|
|
Dec 3 2010, 03:47
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 9-02-06
Из: Челябинск
Пользователь №: 14 160

|
Проблема решена. были перепутаны tms и tck ноги jtag.... mt-link версии 5.0 работает с контроллерами st32...
Сообщение отредактировал Alfa - Dec 3 2010, 03:49
|
|
|
|
|
Dec 4 2010, 11:43
|

Знающий
   
Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499

|
Наткнулся на одну непонятную вещь в таймере общего назначения (2-4) STM32F103.
Работаю с таймером 2. 3-й канал сконфигурирован как вход. Направление счета как up-counter. Цель- измерять период импульсов на ноге - входе 3-го канала).
3-й канал настроен на Input Cupture, по факту захвата вызывается прерывание. (CC3IE=1) В обработчике регистр таймера обнуляется, и регистр захвата переписывается в переменную. Все банально. В идеальных условиях все работает.
Но есть особенность- не понятно, как к этой конфигурации относится ARR ? Опытным путем установлено что его надо устанавливать в 0xFFFF, для полного диапазона измерений. Предполагаю, что после перезагрузки таймера туда запишется это число?.
Также, после старта программы, таймер должен хоть один раз переполнится до возникновения первого прерывания. Иначе в регистре захвата какие-то числа, не соответствующие периоду возникновения прерываний, сильно превышающие его. (контролирую прерывание, дергая в обработчике ножкой и смотрю осциллографом).
Логика обнаружения этой особенности работы- надо или подавать импульсы на вход после старта программы или включать прерывание через некоторое время после старта программы.
Пока обошел это, поставив включение прерывания по захвату в конец загрузочных операций, чтобы после инициализации таймера проходило времени больше чем период таймера.
Но мне это не нравится. Очевидно, есть какое-то событие, происходящее по переполнению таймера, приводящее к корректной работе. Но какое?
|
|
|
|
|
Dec 4 2010, 20:44
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Serj78 @ Dec 4 2010, 16:43)  Очевидно, есть какое-то событие, происходящее по переполнению таймера, приводящее к корректной работе. Но какое? Это событие называется "update event". По нему ARR и прескалер грузятся из предварительного в теневой регистр. То есть, начинают действовать новые значения. Для генерации update event вручную надо сделать так: Код TIM2->EGR |= TIM_EGR_UG; И ещё совет: не надо каждый раз сбрасывать таймер. Это расточительно (практически таймер занят только под один канал захвата), и к тому же страдает точность (вы теряете тики, прошедшие за время входа в прерывание). Просто запоминайте предыдущее значение регистра захвата, и вычитайте его из вновь захваченного. Это даст длительность импульса. А таймер пусть работает в свободном режиме (от 0 до 0xFFFF).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Dec 5 2010, 10:08
|

Знающий
   
Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499

|
Цитата(AHTOXA @ Dec 4 2010, 23:44)  Это событие называется "update event". По нему ARR и прескалер грузятся из предварительного в теневой регистр. То есть, начинают действовать новые значения. Для генерации update event вручную надо сделать так: Код TIM2->EGR |= TIM_EGR_UG; И ещё совет: не надо каждый раз сбрасывать таймер. Это расточительно (практически таймер занят только под один канал захвата), и к тому же страдает точность (вы теряете тики, прошедшие за время входа в прерывание). Просто запоминайте предыдущее значение регистра захвата, и вычитайте его из внования не запрещать ь захваченного. Это даст длительность импульса. А таймер пусть работает в свободном режиме (от 0 до 0xFFFF). Спасибо! Про то что таймер можно не сбрасывать, я подумал, но извечная привычка экономить переменные и память на них пересилила.. (пока мне нужен только один канал захвата).. Теперь пытаюсь понять- я что же происходит при старте программы если прерывание разрешено и есть импульсы на входе? ? пробовал смотреть в отладчике содержимое регистров- все работает корректно- значения ARR не меняется.. меняется ли прескалер, вот не посмотрел..  .. При приходе прерывания выполняется обработчик, таймер сбрасывается, потом начинает увеличиваться.. но при приходе следующего импульса значение регистра захвата и самого таймера не 400-500мкс , как ожидалось, а 14-15 тысяч. Величина прескалера- 71, частота счетчика получается 1 Мгц.
|
|
|
|
|
Dec 12 2010, 11:57
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Serj78 @ Dec 5 2010, 11:08)  ...пробовал смотреть в отладчике ... При приходе прерывания выполняется обработчик, таймер сбрасывается, потом начинает увеличиваться.. но при приходе следующего импульса значение регистра захвата и самого таймера не 400-500мкс , как ожидалось, а 14-15 тысяч. Ключевое слово: "под отладчиком". В STM32F по умолчанию периферия продолжает "тикать" в реальном времени, пока происходит останов под отладчиком или пошаговые прохождения по программе. Чтобы остановить периферию (в твоем случае - Таймер), необходимо установить при инициализации системы нужный бит в узле отладки, что можно сделать либо библиотечной функцией: Код DBGMCU_Config (DBGMCU_TIM3_STOP, ENABLE); // stop timer3 while debugging либо на "регистровом" уровне программирования: Код DBGMCU->CR |= DBGMCU_TIM3_STOP; Конечно, внешний измеряемый сигнал остановить нельзя, но под отладчиком, по крайней мере, не будет выбега таймера.
|
|
|
|
|
Dec 16 2010, 13:07
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(Ivan Kuznetzov @ Dec 9 2010, 07:44)  Вопрос: можно ли перепрыгнуть на 0x08000000 адрес из основной программы без перезапуска? Или лучше врубить ватчдог и дождаться пока он сбросит проц? Я включаю не вачдог, а программный сброс. Потом после сброса анализирую флаг. Программный сбос в отличие от вачдога не срабатывает при аварийных ситуациях.
--------------------
ASB
|
|
|
|
|
Dec 19 2010, 17:25
|

Участник

Группа: Участник
Сообщений: 38
Регистрация: 10-11-05
Из: Таганрог
Пользователь №: 10 659

|
Можно и другим способом. А именно так как описано в Application Note 2557 "STM32F10xxx in-application programming using the USART (IAP)". Фактически переход по нужному адресу осуществляется через присвоение этого адреса указателю на функцию, с последующим вызовом этой функции. Только не забудьте об переинициализации стека (макрос "__MSR_MSP()" в исходнике cortexm3_macro.s ). Успехов!
--------------------
Вы пробовали выключить и снова включить?
|
|
|
|
|
Dec 21 2010, 15:54
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 29-09-06
Пользователь №: 20 821

|
stm32f105 реализую USB-OTG (в режиме only-host) запрос дескриптора к 0-точке осуществляется по одному каналу или надо заводить канал на передачу и канал на приём ?
|
|
|
|
|
Jan 11 2011, 14:29
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 25-07-06
Пользователь №: 19 070

|
Цитата(Ivan Kuznetzov @ Dec 6 2010, 04:11)  Нет ли у кого примера по работе с USB-HOST MassStorage для 105й - 107й серии STM32 ? Появилось на сайте ST: STM32F105/107xx USB Host library (UM1021)
|
|
|
|
|
Jan 13 2011, 12:52
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 5-01-05
Пользователь №: 1 809

|
Подбираю процессор для нового проекта. Рассматриваю STM32F103 или F105 в корпусе LQFP64. Вопрос про ADC: какой входной диапазон напряжения ADC - VREF = 1,2 V или VDA = 3,3 V? Вопрос возник по причине того, что в AN-2834 (глава Using a preamplifier) пишется, что слабый сигнал можно усилмвать до 3В. А в DataSheet на STM32F105 входное напряжение ограничено VREF, которая в корпусе LQFP64 на пинах недоступна. Да, проверить сам не могу, т.к. не имею оного железа.
|
|
|
|
|
Jan 20 2011, 18:11
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
10мкФ на резет - это не слишком ли? 0.1 всегда ставили, да и меньше видел. В AN2586 0.1 мкФ на резет нарисовано.
|
|
|
|
|
Jan 24 2011, 09:16
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Вопрос по поводу объёма флэш памяти. Как-то раз, оператор в производстве случайно залил программу для STM32F103RB (128КБ) в STM32F103R8 (64КБ). Программатор не ругался, программа работает, но когда я сделал тоже самое (залил в STM32F103R8 больше чем 64 КБ) через JTAG, он работать отказался (при отладке увидел, что останавливается на инструкции BKPT в самом начале). Получается, что в R8 - 128 KB с нюансом. С STM32F103RС та же история, декларировано 256 КБ, на самом деле 512. Может, у кого-нибудь найдётся конкретное объяснение описанных свойств процессоров? Это понятно, что делают один кристалл для всей ветки, заглушают часть схемы и по-другому маркируют корпус. Интересно, что это за технологическая операция такая у ST что флэш всёравно работает?
|
|
|
|
|
Jan 24 2011, 15:41
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(OVladimir @ Jan 24 2011, 10:16)  Вопрос по поводу объёма флэш памяти. Как-то раз, оператор в производстве случайно залил программу для STM32F103RB (128КБ) в STM32F103R8 (64КБ). Программатор не ругался, программа работает, но когда я сделал тоже самое (залил в STM32F103R8 больше чем 64 КБ) через JTAG, он работать отказался (при отладке увидел, что останавливается на инструкции BKPT в самом начале). Получается, что в R8 - 128 KB с нюансом. Вы с коллегой над одним и тем же экземпляром процессора измывались? Если нет, моя версия - STM32F103R8 на самом деле был STM32F103RB. Я сам пару раз накалывался, т.к., если процессор не свежаком из трубы, а из коробки с образцами, на маркировке "8" и "B" почти невозможно отличить друг от друга!
|
|
|
|
|
Jan 25 2011, 08:20
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(KnightIgor @ Jan 24 2011, 17:41)  Вы с коллегой над одним и тем же экземпляром процессора измывались? Если нет, моя версия - STM32F103R8 на самом деле был STM32F103RB. Я сам пару раз накалывался, т.к., если процессор не свежаком из трубы, а из коробки с образцами, на маркировке "8" и "B" почти невозможно отличить друг от друга! Действительно, отличить очень сложно, но у нас уже давно массовое производство и отличать маркировку уже научились. "Измывались" мы над несколькими разными процессорами, и речь идёт не о похожести B на 8.
|
|
|
|
|
Jan 26 2011, 16:16
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата Вопрос по поводу объёма флэш памяти. Обычное дело - маркетинг. Кристаллы во всех корпусах одинаковые.  Почти не шутка.
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Jan 27 2011, 18:06
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(Serj78 @ Jan 26 2011, 21:08)  А каким программатором заливали? Через бутлоадер? Не очень понятно, в каких случаях можно залить более 64км, а в каких нет.. Цитата(skripach @ Jan 26 2011, 21:08)  Обычное дело - маркетинг. Кристаллы во всех корпусах одинаковые. Почти не шутка. в производстве, конечно же, через BootLoader, у себя на столе через jtag, в обоих случаях получается запрограммировать без ошибок, только вот в случае jtag программа не работает (я об этом уже писал), в этом и заключается нюанс, который выделен маркировкой (R8-64КБ, RB-128КБ и т.д.) Цитата(KnightIgor @ Jan 26 2011, 21:08)  А, кстати о массовости: довольны STM32F? Какова статистика? Бодрящая статистика, на самом деле. Работает как часики (если программа правильная, без жуков, что называется), несколько тысяч просессоров уже работают, никаких аномалий, было, правда, несколько полу-дохлых, но это в производстве при тесте сразу обнаружилось. P.S. Зря я, наверное, эту тему тут начал, ST, может, голову оторвать захотят....
Сообщение отредактировал OVladimir - Jan 27 2011, 18:11
|
|
|
|
|
Jan 28 2011, 14:27
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 29-10-09
Пользователь №: 53 291

|
Народ, кто уже успел попробовать stm32L151-152? Большая проблема: В СТОП-МОДе потребление составляет 300мкА, вместо заявленных 1-2!!! В Стэндбай-Моде всё честно- 1мкА, но он мне не подходит, т.к. во-первых не сохраняет SRAM, а во-вторых, отключает ИОН, который мне нужен все время совне. Почему в СТОПе такое потребление? Пример я взял стандартный из библиотеки, он маленький, запутаться невозможно. Единственное, что я изменил -это тактирование: не от внешнего резонатора, а от внутреннего(пробовал и MSI и HSI+PLL) -------------------------------- Все, проблема решена: необходимо дополнительно перевести все порты с цифрового входа на аналоговый вход.
Сообщение отредактировал fiim - Jan 29 2011, 07:36
|
|
|
|
|
Jan 30 2011, 07:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(Ivan Kuznetzov @ Jan 29 2011, 22:37)  Опробовал на флешках, мышках и клавиатуре. Флешки больше 8 Гб в упор не видит. У флешек на 8 Гб видит только 4. Почему? Где-то под размер отвели 32-битную переменную или в промежуточных вычислениях недосмотрели, а 2 32 как раз 4G.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Jan 30 2011, 11:32
|
Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476

|
Цитата(fiim @ Jan 28 2011, 17:27)  Народ, кто уже успел попробовать stm32L151-152? Большая проблема: В СТОП-МОДе потребление составляет 300мкА, вместо заявленных 1-2!!! В Стэндбай-Моде всё честно- 1мкА, но он мне не подходит, т.к. во-первых не сохраняет SRAM, а во-вторых, отключает ИОН, который мне нужен все время совне. Почему в СТОПе такое потребление? Пример я взял стандартный из библиотеки, он маленький, запутаться невозможно. Единственное, что я изменил -это тактирование: не от внешнего резонатора, а от внутреннего(пробовал и MSI и HSI+PLL) -------------------------------- Все, проблема решена: необходимо дополнительно перевести все порты с цифрового входа на аналоговый вход. А где вы разжились этими камушками? Образцы уже поставляют?
|
|
|
|
|
Jan 31 2011, 07:55
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 29-10-09
Пользователь №: 53 291

|
Цитата(topkin @ Jan 30 2011, 14:32)  А где вы разжились этими камушками? Образцы уже поставляют? Да, это образец, просто повезло, вовремя отхватил, наверно последний был в Терре. Думаю скоро появятся в продаже. Note: Переводить все порты на аналоговый вход желательно, но не обязательно(тем более, что в стоп-моде могут потребоваться какие-то уровни на пинах): главное отключить подтяжки(пулап-пулдаун)жтага-это они в основном столько кушают.
Сообщение отредактировал fiim - Jan 31 2011, 08:03
|
|
|
|
|
Feb 1 2011, 15:46
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Danis @ Nov 19 2010, 19:19)  Предлагаю в этой теме обсуждать вопросы разработчиков на STM32. ТЕМА: неверное значение при считывании регистра DBGMCU_IDCODE, STM32F103RB. Попробовал в программе вывести значение этого RO регистра (с помощью printf(), разумеется). Согласно Reference Manual RM0008, стр. 1055, регистр всегда доступен. С удивлением увидел нули! 1. Начал под отладчиком пошагово - вдруг все считалось правильно! 2. Вышел из отладчика, нажимал RESET, перезапуская процессор, - по-прежнему все правильно. 3. Передернул питание - опять нули!. Повторяем с шага 1. - опять правильно считывается, пока питание не передернешь. Кто сталкивался?
|
|
|
|
|
Feb 1 2011, 17:44
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Ну правильно, DBG различают POR и остальные резеты. 0 читается один раз после включения? Может какие-то тонкости синхронизации шин. На 100м не воспроизвелось.
|
|
|
|
|
Feb 1 2011, 19:30
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(akimych @ Feb 1 2011, 18:44)  Ну правильно, DBG различают POR и остальные резеты. 0 читается один раз после включения? Может какие-то тонкости синхронизации шин. На 100м не воспроизвелось. Пробовал читать подрят несколько раз - все равно нули после передергивания питания. О синхронизации не скажу... Читаю лишь после того, как запущена вся периферия. Как я написал, согласно актуальному Reference Manual регистр читается и из пользовательской программы. Где-то в недрах форума ST я действительно нашел упоминание, что считывается только в режиме debug, а иначе - нули, но это касалось первых ревизий. Мой процессор имеет в DBGMCU_IDCODE (если удалось считать) значение 0x20030410, что означает Medium Density Device Revision Y. Интересно, что втыкает единократный вход в режим debug после переброски питания, что после этого считывается реальное значение... Может надо прочесть разок POR?
Сообщение отредактировал KnightIgor - Feb 1 2011, 19:31
|
|
|
|
|
Feb 1 2011, 22:28
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата Может надо прочесть разок POR? Не представляю, как можно прочитать POR  Но вот если прочитать errata, то можно выяснить Цитата The DBGMCU_IDCODE and DBGMCU_CR debug registers are accessible only in debug mode (not accessible by the user software). When these registers are read in user mode, the returned value is 0x00. И касается походу всех ревизий 101 и 103го.
|
|
|
|
|
Feb 2 2011, 00:06
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Потому что обычный RESET на эти регистры не влияет.
Сообщение отредактировал akimych - Feb 2 2011, 00:06
|
|
|
|
|
Feb 14 2011, 13:53
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
stm32f10x_nvic.hCODE /* NVIC Init Structure definition */ typedef struct { u8 NVIC_IRQChannel; u8 NVIC_IRQChannelPreemptionPriority; u8 NVIC_IRQChannelSubPriority; FunctionalState NVIC_IRQChannelCmd; } NVIC_InitTypeDef;
--------------------
ASB
|
|
|
|
|
Feb 14 2011, 20:12
|
Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476

|
Привет всем, столкнулся с такой проблемой в STM32F100RB, проблема решена на данный момент, но думаю будет полезно осваивающим. В проекте используются 3 канала АЦП, проводится преобразование входных сигналов с максимальной частотой - 1.2мкс по очереди и данные передаются через DMA в память, далее обработка и тому подобное, пользую IAR EW. Создал проект, в режиме дебага все отлаживается, проверил работоспособность программы, завершаю дебаг, далее вношу еще изменения в проект, пытаюсь снова войти в режим отладки и все... IAR ругается что невозможно соединиться с платой, первоначавльно думал что проц сгорел. Хотя фирмаваре внутри камня крутится и нормально работает! Зашил эту же программу в STM32VLDiscovery и ситуация полностью повторилась. Долго чесал затылок, в итоге попробовал приконнектиться к плате с помощью софтины ST-Link Utility и на тебе, микроконтроллер виден! Очистил прошивку, передернул питание, далее снова в IAR EW, проблема исчезает, но стоит 1 раз прошить и ситуация повторяется с точностью. Вдоль и поперек занимался любовью с DMA и АЦП, не помогло, но выяснил, что перед тем как нажать кнопку дебага или перепрошивки в софтине, необходимо нажать кнопку ресета на плате и вуалля, шьется как ни в чем не бывало! Далее собрал проект под uVision, там такая проблема не повторилась. Соответственно все подозрения пали на IAR EW. В итоге воспользовался техподдержкой ST, ребята 2 дня думали и написали ответ, что это косяк IAR EW. В кратце, при прошивке IAR EW сбрасывает только ядро, далее грузится в ОЗУ алгоритм загрузки кода flash, но в это время DMA передает данные с каналов АЦП в память, соответственно происходит конфликт и микроконтроллер зависает. В итоге они мне прислали исправленный файл ххх.mac, который необходимо скормить IAR EW по адресу по пути - вашадиректория\Embedded Workbench 6.0\arm\config\flashloader\ST\. Так и сделал, проблема исчезла. В общем, теперь остановка DMA происходит, файл прикрепил, необходимо его распаковать. P.S. Всем удачи в нашем нелегком труде! В следующем релизе IAR обещали исправить эту проблему:-)
|
|
|
|
|
Feb 18 2011, 11:34
|
Группа: Новичок
Сообщений: 1
Регистрация: 21-02-05
Пользователь №: 2 803

|
Вернувшись к проекту через год неожиданно наткнулся на проблему с драйвером STM Virtual COM Port. С тех пор OS рабочем компе сменилась с XP на Win7. Использовал демонстрационный проект Virtual_COM_Port из STM32_USB-FS-Device_Lib_V3.1.0. Проблема в следующем: при подключении прибора к USB порту устройство STMicroelectronics Virtual COM Port появляется, но не может запуститься: Запуск этого устройства невозможен. (Код 10). Отчасти проблема решается установкой буфера приема = 64 байта (VIRTUAL_COM_PORT_DATA_SIZE), но работа порта неустойчива, прием идет со сбоями Пробовал VCPDriver: v1.1, v1.2, v1.3
На XP все работало без глюков, с любым размером буфера
|
|
|
|
|
Feb 19 2011, 10:23
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата Пробовал VCPDriver: v1.1, v1.2, v1.3 Интересно, чем они отличаются. Учитывая, что это и не драйвер по сути, просто inf файл. Драйвер родной виндовый usbser, который в разных версиях винды может отличаться. Глянуть бы каким-нибудь usblyzer-ом что там происходит.
|
|
|
|
|
Mar 1 2011, 06:29
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180

|
Цитата(InsolentS @ Mar 1 2011, 08:39)  Не пойму, нужно ли выводить ресет на разьем SWD? Или достаточно SWCLK и SWDIO ? Достаточно, на мелких платах только их и использую.
|
|
|
|
|
Mar 1 2011, 12:25
|

Местный
  
Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897

|
Цитата(e-serg @ Mar 1 2011, 11:29)  Достаточно, на мелких платах только их и использую. Спасибо. А на крупных платах как поступаете? Разводите JTAG?
--------------------
Курильщик даташитов со стажем
|
|
|
|
|
Mar 1 2011, 16:24
|

Местный
  
Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897

|
Цитата(scifi @ Mar 1 2011, 17:43)  Тоже вывожу только SWCLK и SWDIO. Выводить JTAG смысла не вижу: разве JTAG даёт какое-нибудь преимущество над SWD при отладке? Вроде скорость заливки во FLASH выше. Я правильно понимаю, что в любой момент времени, если на пинах SWCLK и SWDIO появится определённая последовательность данных, проц перейдёт в режим отладки? Получается потенциально опасная ситуация
--------------------
Курильщик даташитов со стажем
|
|
|
|
|
Mar 1 2011, 20:06
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(InsolentS @ Mar 1 2011, 19:24)  Я правильно понимаю, что в любой момент времени, если на пинах SWCLK и SWDIO появится определённая последовательность данных, проц перейдёт в режим отладки? Получается потенциально опасная ситуация Вот что сказано в руководстве по STM32: Цитата If the debugger host wants to switch to the SW-DP, it must provide a dedicated JTAG sequence on TMS/TCK (respectively mapped to SWDIO and SWCLK) which disables the JTAG-DP and enables the SW-DP. This way it is possible to activate the SWDP using only the SWCLK and SWDIO pins. This sequence is: 1. Send more than 50 TCK cycles with TMS (SWDIO) =1 2. Send the 16-bit sequence on TMS (SWDIO) = 0111100111100111 (MSB transmitted first) 3. Send more than 50 TCK cycles with TMS (SWDIO) =1 Я так понимаю, этот танец с бубном сделан таким для того, чтобы он никак не мог произойти при нормальном использовании JTAG. Поэтому можно спать спокойно.
|
|
|
|
|
Mar 2 2011, 12:10
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата если на пинах SWCLK и SWDIO появится определённая последовательность данных, проц перейдёт в режим отладки? Получается потенциально опасная ситуация Не проц перейдет в режим отладки, а JTAG переключится в режим SWD. Резет теоретически может пригодиться на случай, если прошивка переводит мк в режим, когда отладчик не может подключиться. Но я бы на этот случай подключал boot0 на землю через резистор, чтобы в крайнем случае можно было запустить бутлоадер и потом отладчик.
|
|
|
|
|
Mar 9 2011, 09:33
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Ivan Kuznetzov @ Mar 2 2011, 17:12)  Проверил: если проц перевести в STOP при включенном IWDG, то последний сбросит МК. Т.е. надо вачдог как-то обновлять во время спячки Посмотри DBGMCU тему: если в регистре DBGMCU->CR установить бит DBGMCU_IWDG_STOP (0x100) где-нибудь в процессе инициализации системы, то при отладке IWDG тоже будет стоять. Это имеется ввиду? Цитата(InsolentS @ Mar 3 2011, 17:26)  Кто-нибудь пробовал применить встроенный CEC интерфейс для чего-нибудь полезного? Например, в качестве дополнительного UART или I-wire (если это вообще возможно) ? CEC интерфейса как отдельного железа нет: это библиотечная реализации протокола управления бытовой аппаратурой с использованием существующей "обычной" периферии.
Сообщение отредактировал KnightIgor - Mar 9 2011, 09:32
|
|
|
|
|
Mar 9 2011, 13:06
|

Местный
  
Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897

|
Цитата(KnightIgor @ Mar 9 2011, 14:33)  Посмотри DBGMCU тему: если в регистре DBGMCU->CR установить бит DBGMCU_IWDG_STOP (0x100) где-нибудь в процессе инициализации системы, то при отладке IWDG тоже будет стоять. Это имеется ввиду?
CEC интерфейса как отдельного железа нет: это библиотечная реализации протокола управления бытовой аппаратурой с использованием существующей "обычной" периферии. А за что отвечает пин "CEC" (PB8 в stm32f100xx) ?
--------------------
Курильщик даташитов со стажем
|
|
|
|
|
Mar 13 2011, 20:00
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 18-06-06
Пользователь №: 18 144

|
Кто-нибудь разбирался с изохронным USB? В документации для STM32F103C8 написано, что максимальный размер пакета для изохронного эндпоинта 512 байт. Но не понятно, в случае эндпоинта с двумя буферами, получается максимальный размер пакета 256 байт ?
Использую библиотеку STM32_USB-FS-Device_Driver V3.2.1. При передаче пакетов размером 192 байта с интервалом 1мс работает, а 384 - уже нет...
Еще не совсем понятно, как устанавливать значения ENDP1_BUF0Addr и ENDP1_BUF1Addr в файле usb_conf.h.
|
|
|
|
|
Mar 14 2011, 07:19
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(Ant. @ Mar 14 2011, 00:00)  Но не понятно, в случае эндпоинта с двумя буферами, получается максимальный размер пакета 256 байт ? Вот из даташита. 22.2 USB main features ● USB specification version 2.0 full-speed compliant ● Configurable number of endpoints from 1 to 8 ● Cyclic redundancy check (CRC) generation/checking, Non-return-to-zero Inverted (NRZI) encoding/decoding and bit-stuffing ● Isochronous transfers support ● Double-buffered bulk/isochronous endpoint support ● USB Suspend/Resume operations ● Frame locked clock pulse generation Note: The USB uses a dedicated 512-byte SRAM memory for data transmission and reception (only the USB accesses this SRAM).У меня так и получилось. MAx размер пакета 256 байт.
--------------------
Magic Friend
|
|
|
|
|
Mar 14 2011, 13:20
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 26-03-10
Пользователь №: 56 229

|
Подскажите - как правильно организовать работу DMA с группой введеных каналов ADC1 и ADC2, или введеные каналы только в прерывании надо обслуживать?
|
|
|
|
|
Mar 14 2011, 17:42
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата из даташита Цитата Only the end of conversion of a regular channel generates a DMA request ...
|
|
|
|
|
Mar 14 2011, 18:00
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(Fry__ @ Mar 14 2011, 17:20)  Подскажите - как правильно организовать работу DMA с группой введеных каналов ADC1 и ADC2, или введеные каналы только в прерывании надо обслуживать? Чето вопрос не совсем понял. Переформулируйте. А вообще разве ADC2 можно на DMA посадить? Reference manual STM32_rev11 Note: Only ADC1 and ADC3 have this DMA capability. ADC2-converted data can be transferred in dual ADC mode using DMA thanks to master ADC1.
--------------------
Magic Friend
|
|
|
|
|
Mar 14 2011, 18:29
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 26-03-10
Пользователь №: 56 229

|
Цитата(akimych @ Mar 14 2011, 21:42)  Цитата из даташита: Only the end of conversion of a regular channel generates a DMA request ... Ясно, спасибо. Цитата(Danis @ Mar 14 2011, 22:00)  Чето вопрос не совсем понял. Переформулируйте. А вообще разве ADC2 можно на DMA посадить?
Reference manual STM32_rev11 Note: Only ADC1 and ADC3 have this DMA capability. ADC2-converted data can be transferred in dual ADC mode using DMA thanks to master ADC1. Да, да - я знаю. Я имел ввиду работу ADC1&2 в Dual режиме. Просто есть восемь входных аналоговых сигналов, я подумал сформировать введеные группы на первом и втором АЦП. Хотелось использовать смещение, для регулярных каналов оно не поддерживается.
Сообщение отредактировал Fry__ - Mar 14 2011, 18:31
|
|
|
|
|
Mar 22 2011, 12:19
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Возникло затруднение при выборе в IAR языка С++. Хочу часть программы перенести с «большой машины» на контроллер STM32, там она ООП вся, на Си переписывать нет времени. Все компилиться и зашивается как и при использовании языка Си, но программа не отлаживается J-Link-ом, вернее начинает отлаживаться и затыкается. Использую периферийную библиотеку STM32 version V3.4.0. Все нормально инициализируется, но после инициализации NVIC, программа затыкается так (см. скриншот). В чем косяк? Предполагаю, что не видит обработчик прерывания?
Эскизы прикрепленных изображений
--------------------
Magic Friend
|
|
|
|
|
Mar 23 2011, 05:22
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(AHTOXA @ Mar 22 2011, 19:51)  extern "C" TIM2_IRQHandler() ... СПАСИБО, так работает!
--------------------
Magic Friend
|
|
|
|
|
Mar 25 2011, 13:30
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата А как-нибудь сделать обработчик членом класса можно? Подозреваю, что это не очень хорошая мысль. Вызываться-то он будет, как обычная процедура. Такое прокатит разве что со статическим методом. Но видимо придется в стартапе прописать реальное имя этого метода. Тогда уж проще из обычного обработчика вызывать метод класса. Кто использует RTC у STM32, нормально часы работают? Просто я в ветке про "LPC1768 и RTC" наткнулся на фразу Цитата Означает, что RTC в первых ревизиях уходят более чем на 1с. за сутки на краях рабочих температур. Т.е. 1с в сутки это много. А у меня на стм32 при комнатной температуре уход часов на неск. секунд в сутки обычное дело.
|
|
|
|
|
Mar 26 2011, 00:15
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата Замечательно работают. Естественно, какой-то уход всегда будет, но не 1 с в сутки, это точно. А какие кварцы используете?
|
|
|
|
|
Mar 26 2011, 09:39
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(akimych @ Mar 26 2011, 02:15)  А какие кварцы используете? Да самые, что ни есть, обычные. NC38 Кварцевый резонатор часовой (32.768 кГц, +/-20 ppm, C=12.5pF, -20 to +60C), корпус цилиндрический d=3mm, h=8.3mm Теоретически, при +/-20 ppm они могут уходить и больше, чем на секунду в сутки, но на практике получается секунда за трое суток - неделю. Может я везучий? Ах да, может это важно, я не беру комплектующие на радиорынке, только у проверенных поставщиков.
|
|
|
|
|
Mar 26 2011, 19:24
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата NC38 Кварцевый резонатор часовой (32.768 кГц, +/-20 ppm, C=12.5pF, -20 to +60C), корпус цилиндрический d=3mm, h=8.3mm Вот интересно, в даташите на стм32 есть фраза Цитата To avoid exceeding the maximum value of CL1 and CL2 (15 pF) it is strongly recommended to use a resonator with a load capacitance CL < 7 pF. Never use a resonator with a load capacitance of 12.5 pF. Получается, зря пугают? А кварцы у меня в таком же корпусе, правда вроде бы не NC38, а DT38. Куплены не на рынке, серийное изделие все-таки.
|
|
|
|
|
Mar 28 2011, 18:58
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 4-02-09
Пользователь №: 44 400

|
Добрый вечер всем. Поставил себе Keil uVision 4.20, открыл первый попавшийся пример, подключил плату STM32VLDiscovery, прошил, дебаггером погулял, порадовался. Далее пытаюсь написать что-то самостоятельно, и, чтобы не гонять контроллер, пытаюсь дебажить программу симулятором. Для тренировки опять открыл проект из примеров, ничего не поганил в нем. Запускаю дебаггер, в окне дизассемблера указатель на адресе 0х00000000 с командой mov r0, r0. Жму F10, указатель остается на месте, в SP появляется какое-то немыслимое число 0xFFFFFFF8 или около того. Ни на main, ни на Reset Handler указатель не перескакивает, до брейк-пойнтов после нажатия на Run не идет. В окне Command пишут "Error 65. access violation at 0x00000000: no 'read' permission". В MAP Memory разрешаю отладчику делать с этим участком памяти все, ситуацию не спасает. Зашел на сайт Keil, там предложили как один из вариантов писать в Debug Command Window $=0x0800000. После этой команды указатель переходит в начало функции main, но дальше все равно по шагам не идет. Настройки памяти в Options не трогал, начальные адреса нормальные. Расскажите, пожалуйста, где и почему я дурак. Пробовал открывать проекты других контроллеров (LPC, Atmel etc) - дебаггер прекрасно работает
Сообщение отредактировал uu5jkb - Mar 28 2011, 19:36
|
|
|
|
|
Mar 28 2011, 23:20
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Цитата пытаюсь дебажить программу симулятором Не поддерживает симулятор кейла полноценно серию STM32F 100, только ядро. Выбирайте F101 и симулируйте. Это самый простой способ. Или можно прописать DLL-ки от F101 в опциях симулятора/отладчика. Сколько уже народу на эти грабли наступило...
|
|
|
|
|
Mar 29 2011, 06:28
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 4-02-09
Пользователь №: 44 400

|
Цитата(akimych @ Mar 29 2011, 02:20)  Не поддерживает симулятор кейла полноценно серию STM32F100, только ядро. Выбирайте F101 и симулируйте. Это самый простой способ. Или можно прописать DLL-ки от F101 в опциях симулятора/отладчика.
Сколько уже народу на эти грабли наступило... Большое спасибо, помогло. А как, интересно, сам Keil комментирует такую ситуацию... Про грабли - это верно, зато не пропустил опыт. Еще раз спасибо
|
|
|
|
|
Mar 30 2011, 06:19
|
Группа: Новичок
Сообщений: 1
Регистрация: 30-03-11
Пользователь №: 63 988

|
Всем привет Хотел сказать что есть такая интересная статья по всем преимуществам STM32 против AVR, Stellaris, LPC  . http://www.compeljournal.ru/enews/2011/2/3Особенно интересный график под конец! STM32 рулит  !
|
|
|
|
|
Mar 30 2011, 12:50
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(KSN @ Mar 30 2011, 11:10)  Помогите выйти из 3-х сосен: проц STM32F103RBT6. Программирую порты PA0-PA3 как Floating input. К этим выводам подключены джамперы, которыми устанавливаю "0", либо "1". При включении платы PA0 постоянно "0", после сброса по NRST состояние PA0 определяется джампером. Уже замучился искать, где ошибся. Какие настройки можно глянуть? Выложите свой исходник инициализации порта, гляну.
--------------------
Magic Friend
|
|
|
|
|
Mar 30 2011, 20:55
|
Группа: Новичок
Сообщений: 1
Регистрация: 22-06-07
Пользователь №: 28 618

|
Парочка хинтов. Некоторое время назад пришлось поработать с STM32 с многими используемым замечательным скриптом stm32loader.py. Если в компьютере есть последовательный порт, скрипт замечательно с ним работает. Но компьютеры с таким портом уже давно редкость, приходится использовать USB-переходники (FTDI, Prolific). При использовании их заливка прошивки идёт раза в два медленнее. Дело в том, что скрипт высылает данные побайтно, а драйвер для каждого байта отправляет по USB целый блок и получает подтверждение. Оверхед налицо! Проблема лечится в методе cmdWriteMemory: собираем весь блок (до 256 байт) данных в стринг, затем вываливаем его драйверу одним махом. Вот так: CODE def cmdWriteMemory(self, addr, data): assert(len(data) <= 256) strwr = '' #Data will be collected to this bytestring if self.cmdGeneric(0x31): mdebug(10, "*** Write memory command") self.sp.write(self._encode_addr(addr)) self._wait_for_ask("0x31 address failed") #map(lambda c: hex(ord( c )), data) lng = (len(data)-1) & 0xFF mdebug(10, " %s bytes to write" % [lng+1]); strwr += chr(lng) crc = 0xFF for c in data: crc = crc ^ c strwr += chr( c ) strwr += chr(crc) self.sp.write(strwr) #Write the whole collected bytestring self._wait_for_ask("0x31 programming failed") mdebug(10, " Write memory done") else: raise CmdException("Write memory (0x31) failed") И ещё одна проблема наблюдалась. Скрипт открывает файл не используя бинарный режим явно, что под Windows иногда приводит к заливке прошивки неполностью. Лечится в мэйне: CODE if (conf['write'] or conf['verify']): data = map(lambda c: ord( c ), file(args[0], 'rb').read()) print 'File', args[0], ':', len(data), 'bytes' Также порекомендую в конце скрипта включить команду на запуск программы, чтобы она сразу начинала работать без необходимости вручную выключать режим бутлодера и делать сброс: CODE cmd.cmdGo(0x08000000) finally: cmd.releaseChip()
|
|
|
|
|
Mar 31 2011, 01:56
|
Местный
  
Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304

|
Цитата(Danis @ Mar 30 2011, 19:50)  Выложите свой исходник инициализации порта, гляну. Решил проблему. После инициализации портов перед операцией чтения вставил небольшую задержку. Спасибо за предложение помощи.
|
|
|
|
|
Mar 31 2011, 11:58
|
Частый гость
 
Группа: Свой
Сообщений: 89
Регистрация: 31-10-06
Пользователь №: 21 829

|
Интересная проблемка с реализацией USB CDC на STM32F103 и usbser.sys (WinXP). Был взят пример Usb Virtual Serial Port и переделан по-людски, версия Usb - библиотеки: STM32 USB-FS-Device Driver 3.2.1; Режим работы таков: после подключения и инициализации, хост передаёт девайсу некоторый объём данных (~1 Кб) для инициализации; в процессе работы хост практически всегда молчит. Девайс непрерывно передаёт хосту данные (накопленные в FIFO) со скоростью 100 Кб/с. Если на момент опроса у девайса нет данных для передачи, то он отвечает ZLP. Всё работает просто чудно! Но почему-то через примерно 300, либо примерно 980, либо примерно 1800 секунд на девайсе перестаёт вызываться Callback на TX  Вероятность ошибки в "пользовательском" коде невелика (ибо он очень прост). Подозрение падает на usbser.sys Вот.
|
|
|
|
|
Apr 1 2011, 01:41
|
Группа: Участник
Сообщений: 10
Регистрация: 2-03-06
Пользователь №: 14 864

|
А кто-нибудь в курсе, когда STM обещает начать массовое производство и выпуск серии STM32F2xx?
|
|
|
|
|
Apr 4 2011, 09:59
|
Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476

|
Цитата(Sergey_vn @ Apr 1 2011, 05:41)  А кто-нибудь в курсе, когда STM обещает начать массовое производство и выпуск серии STM32F2xx? По слухам с апреля, до нас с вами докатится не раньше мая...
|
|
|
|
|
Apr 4 2011, 12:12
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 10-11-09
Пользователь №: 53 534

|
Всем привет. Планируем использовать CORTEХ-M3 контроллер STM32F103C8 совместно с эмулятором J-Link ARM ( http://jtag.su/index.php?option=com_conten...7&Itemid=1) в IAR. Т.к. опыта работы с такими контроллерами нету, то вопрос таков - будет ли это все работать? :D
|
|
|
|
|
Apr 8 2011, 05:09
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 10-11-09
Пользователь №: 53 534

|
Начали разбираться с stm32 контроллером, чтобы не создавать новую тему - так как вопросов будет много - буду спрашивать их здесь. В модуле GPIO есть регистры AFIO, чтобы назначать REMAP и указывать ножку для внешнего прерывания. С этим вроде все ясно. Но еще там есть один магический регистр Event control register (AFIO_EVCR), который назначает ножку и порт для некого "EVENTOUT Cortex output". Поиск в даташите на ядро и в референсе ничего не дали. В гугле толком тоже нету. Что это такое?
Сообщение отредактировал 10199 - Apr 8 2011, 05:09
|
|
|
|
|
Apr 8 2011, 09:21
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(AHTOXA @ Apr 8 2011, 12:59)  Посмотрите вот это, может пригодится. Код void Cpl() { *(volatile uint32_t *)ODR_BB_ADDR = ~*(volatile uint32_t *)ODR_BB_ADDR; } Посмотрел. Выглядит симпатично. А во что это компилиться? Я всё же больше на Си...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Apr 8 2011, 09:26
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(demiurg_spb @ Apr 8 2011, 12:21)  Посмотрел. Во что это компилиться? И компилится, и атомарная операция. Через бит-бэнд регион обращается к отдельному биту регистра ODR. Т.е. доступ к одному биту в bit-band alias области, как к целому слову в bit-band области. Только смысла в ней немного. Проще через BSRR и BRR, и по скорости, и по коду. Код void LED_Blink(void) { while (1) { GPIOB->BSRR = 0x0002; // __nop(), __nop(), __nop; GPIOB->BRR = 0x0002; } }
|
|
|
|
|
Apr 8 2011, 09:50
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(ViKo @ Apr 8 2011, 13:26)  Проще через BSRR и BRR, и по скорости, и по коду. И компилится, и атомарная операция. Через бит-бэнд регион обращается к отдельному биту регистра ODR. Т.е. доступ к одному биту в bit-band alias области, как к целому слову в bit-band области. Только смысла в ней немного. Т.е. так вполне сносно будет? Код ... #define _PIN_SET( XPORT, XPIN, XMODE, XSPEED) do {GPIO##XPORT->BSRR = (1UL << (XPIN)); } while (0) // Atomic operation #define _PIN_CLR( XPORT, XPIN, XMODE, XSPEED) do {GPIO##XPORT->BRR = (1UL << (XPIN)); } while (0) // Atomic operation
#define _PIN_TEST( XPORT, XPIN, XMODE, XSPEED) ( (GPIO##XPORT->IDR & (1UL << (XPIN))) != 0UL )
#define _PIN_TOGGLE(XPORT, XPIN, XMODE, XSPEED) \ do \ { \ if (_PIN_TEST(XPORT, XPIN, XMODE, XSPEED)) _PIN_CLR(XPORT, XPIN, XMODE, XSPEED); \ else _PIN_SET(XPORT, XPIN, XMODE, XSPEED); \ } while (0)
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|