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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Поставил триггер Шмитта - не помогло :( .
gessor
Встал на лапы
Сообщения: 115
Зарегистрирован: Ср дек 12, 2012 20:08:08
Контактная информация:

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

Сообщение gessor »

Никак не получится считать содержимое памяти. В первый запуск программы все показало, а последующие выдает вот такой результат:
СпойлерИзображение

При этом программа в памяти есть - предустановленная для акселерометра. Хочу ее стянуть себе, чтобы не потерять в процессе обучения и всегда иметь возможность ее восстановить для демонстрации этого примера. Не подскажите, что делаю не так?
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

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

Сообщение optima »

Адресок начальный однако! 0x08000000
gessor
Встал на лапы
Сообщения: 115
Зарегистрирован: Ср дек 12, 2012 20:08:08
Контактная информация:

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

Сообщение gessor »

Черт побери, вы правы! Но дело было не в адресе, в этом я точно был уверен. Зато пристальнее обратил внимание на размер (size) и поставив FFFF и сразу все считалось. Спасибо! Это пока только первые вопросы :))
Аватара пользователя
TODD
Встал на лапы
Сообщения: 105
Зарегистрирован: Сб сен 17, 2011 17:08:08

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

Сообщение TODD »

http://img.radiokot.ru/files/44211/lpq2zhrmo.png
Уважаемые коты, прошу проверить ПП, указать недостатки/убрать/добавить..

собирал по этому:
http://img.radiokot.ru/files/44211/lpqmfrc5i.png

ЗЫ:: никакими прогами типа Eagle не пользуюсь, поэтому выкладываю как есть.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

односторонняя чтоли ?
с питанием и землей, конечно, психодел -))
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

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

Сообщение balmer »

А я вот вупор не вижу с какой стороны там кварц. И конденсаторы на 100 nF с ножками :) Так как непонятно с какой стороны кварц, то непонятно подключены ли AVCC/AGND. Вобщем да - схема для юнного следопыта-любителя. Справа сверху первый вывод. Я угадал?
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

Вопрос по контроллеру STM32F051C8. Не могу установить значение RCC_CFGR_PLLMULL2 выше чем 2 при условии использования HSI. При RCC_CFGR_PLLMULL3 и далее контроллер, похоже, не запускается. При этом отладчик до контроллера достучаться не может. В другой плате на таком же контроллере таким же способом частота ставится 48МГц без всяких проблем. Подскажите, где я косячу?

Код: Выделить всё

  /******************************************************************************/
  /*            PLL (clocked by HSI) used as System clock source                */
  /******************************************************************************/

    /* At this stage the HSI is already enabled and used as System clock source */

    /* SYSCLK, HCLK, PCLK configuration ----------*/

      /* Enable Prefetch Buffer and set Flash Latency */
      FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;

       /* HCLK = SYSCLK / 1 */
       RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

       /* PCLK = HCLK / 1 */
       RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;

    /* PLL configuration */
      RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
      RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL2);

    /* Enable PLL */
    RCC->CR |= RCC_CR_PLLON;

    /* Wait till PLL is ready */
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }

    /* Select PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;

    /* Wait till PLL is used as system clock source */
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
    {
    }
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Аватара пользователя
TODD
Встал на лапы
Сообщения: 105
Зарегистрирован: Сб сен 17, 2011 17:08:08

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

Сообщение TODD »

Добавим:

стм, ams и юсб с одной стороны, остальное - с другой, т.к. с смд не связываюсь(нет ни практики, ни инструмента для пайки: типа паяльной станции), указанное в плане исключения ;)

односторонняя(!) плата нарисована со стороны стм.. первый пин возле точки, порядок - против часовой.

земля собрана под мк и раскидана до нужных точек.. само питание вокруг пинов 2,54. кондера на 100 возле мк стоят

73-я нога оставлена как есть..

ЗЫ:: двусторонки нет, и ни разу не разводил.. мк будут в следующем месяце, поэтому пока готовлю плату с мин обвязкой. прошивать через pl2303, если получится.

__________________

в каком плане психодел? разомкнутые петли получились? признаю, но как вышло. предложите вариант получше.. покупать готовые как вариант не рассматриваю(если только qfp->2.54? которые можно и самому при желании наваять)..

__________________

лутом реально такую плату сваять? с учетом советского утюга? :)))

__________________

чуть не забыл : ПП
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

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

Сообщение balmer »

TODD вроде правильная схема. Резисторы на reset лишние. SMD зря боитесь, если сможете запаять LQFP100 корпус, то уж SMD без проблемм припаяете. К томуже лично мое мнение - просверлить дырку сложнее, чем припаять SMD. Потому как когда сверлишь дырку, надо ошибиться не более, чем на 0.2 мм. А когда паяешь SMD - ну припаял криво - ничего страшного.
Аватара пользователя
TODD
Встал на лапы
Сообщения: 105
Зарегистрирован: Сб сен 17, 2011 17:08:08

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

Сообщение TODD »

лишние - не лишние, схема от "stm32f103vet6 development board" под f10xVx, поэтому делал по ней..
на некоторых схемах сброс тупо замыкался на землю с помощью кнопки.. по идее это поддержка одного состояния на линии. а т.к. у меня сдвиговые регистры ломают биты хрен знает от чего(вероятнее всего от наводок), пусть так останется..


ЗЫ:: ругайте как хотите, платы сверлю "шуруповертом" и ничего с этим не поделаешь..
сверление идет после травления, причем 1мм-ым сверлом.. хотя я недавно взял 0,8мм, ими еще не сверлил - станка нет сверлильного, а желательно, да не из чего..(как всегда)..
правда текстолит "жесткий" попался: у другого продавца заказывал.. после последнего раза результат неудовлетворительный в плане сверления - пару сверл сломал и пару затупил, но это другая история

_____

смогу - не смогу ;) первыми под пайку попадут с8, у них ног поменьше(кхм, да и размеры тоже) и их будет двое.
ну и смотря какие смд закажу - размеры-т разные есть.. для меня желательно начинать с больших(3-4мм) - по крайней мере под ними можно дорожки провести - меньше перемычек делать
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

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

Сообщение balmer »

На правах оффтопа.

TODD писал(а):сверление идет после травления, причем 1мм-ым сверлом.. хотя я недавно взял 0,8мм, ими еще не сверлил - станка нет сверлильного, а желательно, да не из чего..(как всегда)..


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

TODD писал(а):ну и смотря какие смд закажу - размеры-т разные есть.. для меня желательно начинать с больших(3-4мм) - по крайней мере под ними можно дорожки провести - меньше перемычек делать


Под 1206 народ и по две дорожки 0.25мм проводит. А вот под 0805 и 0603 помещается только одна дорожка, так что в этом смысле они равнозначны. Ну и когда будете заказывать конденсаторы - не покупайте с диэлектриком Y5V, покупайте X7R или C0G (в зависимости от номинала).
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

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

Сообщение uldemir »

Помогите распущенному пикоману. Я тут привык, что все кристаллы одного производителя имеют одинаковый интерфейс для внутрисхемного программирования и уже на схему поставил 4-х контактный разъём как и для STM8L и тут вдруг выясняется...

В общем, я понял, что нужно как минимум 6 контактов. Но по какому стандарту эти контакты расположить? У ST-LINK вообще мрачный 20-тиконтактный разъём, у stm32F0discovery какой-то 6-ти контактный разъём (я тут тихо размечтался, что он будет совместим с JTAG для Xilinx - но нет).

Какова практика в этом вопросе? И как эти сигналы звать? tck, tms, tdo, tdi или как иначе? И если это jtag их можно в одну цепь включать с другими кристаллами (с теми же xilinx, если когда мне такое взбредёт в голову)?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

uldemir для STM8- SWIM, это минимум 2 вывода вместе с GND , опционально RESET .
Для STLink так же необходимо подавать VDD target с платы таргета на транслятор уровней .
Для STM32 - SWD , минимально SWDIO, SWCLK,GND. Опционально RESET.
И так же для большинства Link'ов необходимо подавать VDD target с платы таргета на транслятор уровней .

О JTAG забываем как о анахронизме ... :)))
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

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

Сообщение es131245 »

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

На практике boot не понадобиться?
И что такое каналы ЦАПа и АЦП?
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

es131245
Если планируется задействовать все по максимуму и делается упор на универсальность, то лучше взять МК в варианте "корпус побольше"
Для грамотного распределения портов и пинов, STMicroelectronics выпустила программу STM32CubeMX (на вкладке Get Software)
В ней-же можно сгенерить код инициализации периферии и впихнуть FreeRTOS, LwIP и прочие ништяки одним кликом мышки.
Там же можно экспортировать список пинов с выставленными функциями для дальнейшего экспорта
в САПР в виде списка связей (NetList), предварительно обработав самопальным скриптом.
Собственно, на разъем программирования надо вывести SWIO, SWCLK, GND RESET опционально)
BOOT0 надо снабдить резистором, номиналом в 5.1к, подтянутым на землю и джампером на плюс питания.
Он может пригодиться для прошивки с помощью встроенного BootLoader'а.
С BOOT1 надо поступить аналогично, только его пин можно выводить и внаружу, так как его можно использовать
как простой пин ввода/вывода.
Кварцы: Надо повесить оба (если планируется работа с RTC). На 32.768 кГц и системный в диапазоне от 1МГц до 25 МГц.
Значение частоты кварца должно быть целым, чтобы не иметь в дальнейшем проблем с такими интерфейсами, как USB.
По питанию: Возле каждой ноги питания должен быть конденсатор на 0.47 мкФ и должен располагаться как можно ближе к корпусу микроконтроллера. Так же, аналоговая часть МК должна питаться через дроссель и снабжена конденсаторами у корпуса МК (после дросселя)
Ну, пока все (если ничего не забыл)
I am DX168B and this is my favourite forum on internet!
alexf58
Нашел транзистор. Понюхал.
Сообщения: 183
Зарегистрирован: Сб фев 09, 2013 23:00:23

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

Сообщение alexf58 »

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

http://www.ebay.com/itm/STM32F103C8T6-A ... 48725e00bc

Никакого отношения к Ардуино не имеет, но готовая плата за $4.72. Дешевле самому не сделать. Там 2 кварца и все ноги разведены наружу.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

balmer писал(а):Под 1206 народ и по две дорожки 0.25мм проводит. А вот под 0805 и 0603 помещается только одна дорожка, так что в этом смысле они равнозначны.

Под 0805 две дороги нормально проходят. Под 0603 только одна.
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

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

Сообщение optima »

Добрый день! Подскажите такой момент! Настроил таймер 2 на замер входной частоты, и таймер 3 (ведущий) раз в секунду он пинает ДМА и все замеры складываются в ОЗУ все вроде работает!
Но не пойму как сделать настройку что бы после того как ДМА забрал данные CNT таймера 2 сбрасывался! пните в нужном направлении.

Код: Выделить всё

 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
 
 TIM3->PSC = 36000-1;           // Настраиваем делитель чтоб таймер тикал 2000 раз в секунду
 TIM3->ARR = 2001 ;             // Чтоб прерывание случалось раз в секунду
 TIM3->CR2 = TIM_CR2_MMS_1;     // сброс ТIM2 ??????????????????????????
 TIM3->DIER=  TIM_DIER_CC4DE;   // запрос ДМА по каналу сравнения
 TIM3->DIER |=  TIM_DIER_CC4IE; //прерывание
 TIM3->CCMR1= TIM_CCMR1_OC1M_0; //TIMx_CNT==TIMx_CCR) OCxREF =1
 TIM3->CR1 =  TIM_CR1_ARPE;
 TIM3->CCR1=  2000;            //кода формируем запрос ДМА
 TIM3->DIER |= TIM_DIER_UIE;  //разрешаем прерывание от таймера
 
//таймер 2 - измеритель частоты
TIM2->ARR = 0xffff;              // макс. значение до которого считаем
TIM2->PSC =0 ;                // пред делитель
TIM2->CR1 =  TIM_CR1_ARPE;
TIM2->SMCR |=TIM_SMCR_TS_0;    //в режиме ведомого от таймера 3
TIM2->SMCR |=TIM_SMCR_SMS_2;  // режим 100
TIM2->SMCR |= TIM_SMCR_ECE;   // Включить режим внешнего тактирования

//настроим ДМА 
RCC->AHBENR |= RCC_AHBENR_DMA1EN;
DMA1_Channel3->CMAR = (uint32_t) 0X20001000;     //адрес буфера приемника
DMA1_Channel3->CPAR = (uint32_t) &TIM2->CNT;     //регистр данных
DMA1_Channel3->CNDTR = FREQ_BUF_SIZE;            //размер буфера
DMA1_Channel3->CCR = DMA_CCR3_MINC;              //запись в память, инкремент указателя в памяти
DMA1_Channel3->CCR |= DMA_CCR3_TCIE;             //канал 3
DMA1_Channel3->CCR |= DMA_CCR3_CIRC;              //циклически
DMA1_Channel3->CCR |= DMA_CCR3_MSIZE_0;
DMA1_Channel3->CCR |= DMA_CCR3_PSIZE_0;           //по 16 бит
DMA1_Channel3->CCR |= DMA_CCR3_TCIE;              //прерывание по завершению
DMA1_Channel3->CCR |= DMA_CCR3_EN;               //разрешим работу
TIM3->CR1 |= TIM_CR1_CEN ;                       // Начать отсчёт!
TIM2->CR1 |=TIM_CR1_CEN;
NVIC_EnableIRQ (DMA1_Channel3_IRQn); 
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

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

Сообщение es131245 »

DX168B спасибо! Cube все таки добил. Очень удобно для выбора пинов! Когда первый раз запускал много функционала на диско действительно перебирал многие варианты а тут решение!

Еще вопрос: запихал один и тот же код в 2 разных места в main.c.

Код: Выделить всё

GPIO_SetBits(GPIOA,GPIO_Pin_0);
for(i=0;i<50000;i++){}
GPIO_ResetBits(GPIOA,GPIO_Pin_0);


Выход смотрел на осциле.
В while 1 на выводе длиналась 1.7мС, в блоке прерывания длительность уже была до 100нС.

Я понимаю что там разные частоты на разных участках контроллера, но неужели это дает такую большую разницу в производительости в разных частях кода?
Ответить

Вернуться в «ARM»