STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
Поставил триггер Шмитта - не помогло
.
-
gessor
- Встал на лапы
- Сообщения: 115
- Зарегистрирован: Ср дек 12, 2012 20:08:08
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Никак не получится считать содержимое памяти. В первый запуск программы все показало, а последующие выдает вот такой результат:

При этом программа в памяти есть - предустановленная для акселерометра. Хочу ее стянуть себе, чтобы не потерять в процессе обучения и всегда иметь возможность ее восстановить для демонстрации этого примера. Не подскажите, что делаю не так?
Спойлер

При этом программа в памяти есть - предустановленная для акселерометра. Хочу ее стянуть себе, чтобы не потерять в процессе обучения и всегда иметь возможность ее восстановить для демонстрации этого примера. Не подскажите, что делаю не так?
Re: STM32 новичку в ARM что к чему
Адресок начальный однако! 0x08000000
-
gessor
- Встал на лапы
- Сообщения: 115
- Зарегистрирован: Ср дек 12, 2012 20:08:08
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Черт побери, вы правы! Но дело было не в адресе, в этом я точно был уверен. Зато пристальнее обратил внимание на размер (size) и поставив FFFF и сразу все считалось. Спасибо! Это пока только первые вопросы 
Re: STM32 новичку в ARM что к чему
http://img.radiokot.ru/files/44211/lpq2zhrmo.png
Уважаемые коты, прошу проверить ПП, указать недостатки/убрать/добавить..
собирал по этому:
http://img.radiokot.ru/files/44211/lpqmfrc5i.png
ЗЫ:: никакими прогами типа Eagle не пользуюсь, поэтому выкладываю как есть.
Уважаемые коты, прошу проверить ПП, указать недостатки/убрать/добавить..
собирал по этому:
http://img.radiokot.ru/files/44211/lpqmfrc5i.png
ЗЫ:: никакими прогами типа Eagle не пользуюсь, поэтому выкладываю как есть.
Re: STM32 новичку в ARM что к чему
односторонняя чтоли ?
с питанием и землей, конечно, психодел -))
с питанием и землей, конечно, психодел -))
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: STM32 новичку в ARM что к чему
А я вот вупор не вижу с какой стороны там кварц. И конденсаторы на 100 nF с ножками
Так как непонятно с какой стороны кварц, то непонятно подключены ли AVCC/AGND. Вобщем да - схема для юнного следопыта-любителя. Справа сверху первый вывод. Я угадал?
- slavokhire5
- Прорезались зубы
- Сообщения: 202
- Зарегистрирован: Пн сен 26, 2011 13:48:25
- Откуда: Харьков
Re: STM32 новичку в ARM что к чему
Вопрос по контроллеру 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)
{
}Осилит дорогу идущий
--------------------------
Пишу на Си за еду
--------------------------
Пишу на Си за еду
Re: STM32 новичку в ARM что к чему
Добавим:
стм, ams и юсб с одной стороны, остальное - с другой, т.к. с смд не связываюсь(нет ни практики, ни инструмента для пайки: типа паяльной станции), указанное в плане исключения ;)
односторонняя(!) плата нарисована со стороны стм.. первый пин возле точки, порядок - против часовой.
земля собрана под мк и раскидана до нужных точек.. само питание вокруг пинов 2,54. кондера на 100 возле мк стоят
73-я нога оставлена как есть..
ЗЫ:: двусторонки нет, и ни разу не разводил.. мк будут в следующем месяце, поэтому пока готовлю плату с мин обвязкой. прошивать через pl2303, если получится.
__________________
в каком плане психодел? разомкнутые петли получились? признаю, но как вышло. предложите вариант получше.. покупать готовые как вариант не рассматриваю(если только qfp->2.54? которые можно и самому при желании наваять)..
__________________
лутом реально такую плату сваять? с учетом советского утюга? :)))
__________________
чуть не забыл : ПП
стм, ams и юсб с одной стороны, остальное - с другой, т.к. с смд не связываюсь(нет ни практики, ни инструмента для пайки: типа паяльной станции), указанное в плане исключения ;)
односторонняя(!) плата нарисована со стороны стм.. первый пин возле точки, порядок - против часовой.
земля собрана под мк и раскидана до нужных точек.. само питание вокруг пинов 2,54. кондера на 100 возле мк стоят
73-я нога оставлена как есть..
ЗЫ:: двусторонки нет, и ни разу не разводил.. мк будут в следующем месяце, поэтому пока готовлю плату с мин обвязкой. прошивать через pl2303, если получится.
__________________
в каком плане психодел? разомкнутые петли получились? признаю, но как вышло. предложите вариант получше.. покупать готовые как вариант не рассматриваю(если только qfp->2.54? которые можно и самому при желании наваять)..
__________________
лутом реально такую плату сваять? с учетом советского утюга? :)))
__________________
чуть не забыл : ПП
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: STM32 новичку в ARM что к чему
TODD вроде правильная схема. Резисторы на reset лишние. SMD зря боитесь, если сможете запаять LQFP100 корпус, то уж SMD без проблемм припаяете. К томуже лично мое мнение - просверлить дырку сложнее, чем припаять SMD. Потому как когда сверлишь дырку, надо ошибиться не более, чем на 0.2 мм. А когда паяешь SMD - ну припаял криво - ничего страшного.
Re: STM32 новичку в ARM что к чему
лишние - не лишние, схема от "stm32f103vet6 development board" под f10xVx, поэтому делал по ней..
на некоторых схемах сброс тупо замыкался на землю с помощью кнопки.. по идее это поддержка одного состояния на линии. а т.к. у меня сдвиговые регистры ломают биты хрен знает от чего(вероятнее всего от наводок), пусть так останется..
ЗЫ:: ругайте как хотите, платы сверлю "шуруповертом" и ничего с этим не поделаешь..
сверление идет после травления, причем 1мм-ым сверлом.. хотя я недавно взял 0,8мм, ими еще не сверлил - станка нет сверлильного, а желательно, да не из чего..(как всегда)..
правда текстолит "жесткий" попался: у другого продавца заказывал.. после последнего раза результат неудовлетворительный в плане сверления - пару сверл сломал и пару затупил, но это другая история
_____
смогу - не смогу ;) первыми под пайку попадут с8, у них ног поменьше(кхм, да и размеры тоже) и их будет двое.
ну и смотря какие смд закажу - размеры-т разные есть.. для меня желательно начинать с больших(3-4мм) - по крайней мере под ними можно дорожки провести - меньше перемычек делать
на некоторых схемах сброс тупо замыкался на землю с помощью кнопки.. по идее это поддержка одного состояния на линии. а т.к. у меня сдвиговые регистры ломают биты хрен знает от чего(вероятнее всего от наводок), пусть так останется..
ЗЫ:: ругайте как хотите, платы сверлю "шуруповертом" и ничего с этим не поделаешь..
сверление идет после травления, причем 1мм-ым сверлом.. хотя я недавно взял 0,8мм, ими еще не сверлил - станка нет сверлильного, а желательно, да не из чего..(как всегда)..
правда текстолит "жесткий" попался: у другого продавца заказывал.. после последнего раза результат неудовлетворительный в плане сверления - пару сверл сломал и пару затупил, но это другая история
_____
смогу - не смогу ;) первыми под пайку попадут с8, у них ног поменьше(кхм, да и размеры тоже) и их будет двое.
ну и смотря какие смд закажу - размеры-т разные есть.. для меня желательно начинать с больших(3-4мм) - по крайней мере под ними можно дорожки провести - меньше перемычек делать
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: STM32 новичку в ARM что к чему
На правах оффтопа.
Лучше всего сверлом 0.6мм или 0.7мм сверлить. Как раз по размеру вывода такие отверстия, потом паяется очень хорошо.
Под 1206 народ и по две дорожки 0.25мм проводит. А вот под 0805 и 0603 помещается только одна дорожка, так что в этом смысле они равнозначны. Ну и когда будете заказывать конденсаторы - не покупайте с диэлектриком Y5V, покупайте X7R или C0G (в зависимости от номинала).
TODD писал(а):сверление идет после травления, причем 1мм-ым сверлом.. хотя я недавно взял 0,8мм, ими еще не сверлил - станка нет сверлильного, а желательно, да не из чего..(как всегда)..
Лучше всего сверлом 0.6мм или 0.7мм сверлить. Как раз по размеру вывода такие отверстия, потом паяется очень хорошо.
TODD писал(а):ну и смотря какие смд закажу - размеры-т разные есть.. для меня желательно начинать с больших(3-4мм) - по крайней мере под ними можно дорожки провести - меньше перемычек делать
Под 1206 народ и по две дорожки 0.25мм проводит. А вот под 0805 и 0603 помещается только одна дорожка, так что в этом смысле они равнозначны. Ну и когда будете заказывать конденсаторы - не покупайте с диэлектриком Y5V, покупайте X7R или C0G (в зависимости от номинала).
Re: STM32 новичку в ARM что к чему
Помогите распущенному пикоману. Я тут привык, что все кристаллы одного производителя имеют одинаковый интерфейс для внутрисхемного программирования и уже на схему поставил 4-х контактный разъём как и для STM8L и тут вдруг выясняется...
В общем, я понял, что нужно как минимум 6 контактов. Но по какому стандарту эти контакты расположить? У ST-LINK вообще мрачный 20-тиконтактный разъём, у stm32F0discovery какой-то 6-ти контактный разъём (я тут тихо размечтался, что он будет совместим с JTAG для Xilinx - но нет).
Какова практика в этом вопросе? И как эти сигналы звать? tck, tms, tdo, tdi или как иначе? И если это jtag их можно в одну цепь включать с другими кристаллами (с теми же xilinx, если когда мне такое взбредёт в голову)?
В общем, я понял, что нужно как минимум 6 контактов. Но по какому стандарту эти контакты расположить? У ST-LINK вообще мрачный 20-тиконтактный разъём, у stm32F0discovery какой-то 6-ти контактный разъём (я тут тихо размечтался, что он будет совместим с JTAG для Xilinx - но нет).
Какова практика в этом вопросе? И как эти сигналы звать? tck, tms, tdo, tdi или как иначе? И если это jtag их можно в одну цепь включать с другими кристаллами (с теми же xilinx, если когда мне такое взбредёт в голову)?
Re: STM32 новичку в ARM что к чему
uldemir для STM8- SWIM, это минимум 2 вывода вместе с GND , опционально RESET .
Для STLink так же необходимо подавать VDD target с платы таргета на транслятор уровней .
Для STM32 - SWD , минимально SWDIO, SWCLK,GND. Опционально RESET.
И так же для большинства Link'ов необходимо подавать VDD target с платы таргета на транслятор уровней .
О JTAG забываем как о анахронизме ...
Для STLink так же необходимо подавать VDD target с платы таргета на транслятор уровней .
Для STM32 - SWD , минимально SWDIO, SWCLK,GND. Опционально RESET.
И так же для большинства Link'ов необходимо подавать VDD target с платы таргета на транслятор уровней .
О JTAG забываем как о анахронизме ...
Re: STM32 новичку в ARM что к чему
Подскажите.
Рисую свою плату контроллера и боюсь чего либо не поставить.
Нужно сам МП, питание, кварц, система вывода, функционал и разъём для программирования. Ничего не забыл?
Программировать думаю через разъём от дискавери.
На практике boot не понадобиться?
И что такое каналы ЦАПа и АЦП?
Рисую свою плату контроллера и боюсь чего либо не поставить.
Нужно сам МП, питание, кварц, система вывода, функционал и разъём для программирования. Ничего не забыл?
Программировать думаю через разъём от дискавери.
На практике boot не понадобиться?
И что такое каналы ЦАПа и АЦП?
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: STM32 новичку в ARM что к чему
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 мкФ и должен располагаться как можно ближе к корпусу микроконтроллера. Так же, аналоговая часть МК должна питаться через дроссель и снабжена конденсаторами у корпуса МК (после дросселя)
Ну, пока все (если ничего не забыл)
Если планируется задействовать все по максимуму и делается упор на универсальность, то лучше взять МК в варианте "корпус побольше"
Для грамотного распределения портов и пинов, 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!
Re: STM32 новичку в ARM что к чему
Я не знаю, какие цели ставятся для собственной платы, но чтобы просто поиграть с STM32 можно взять такое:
http://www.ebay.com/itm/STM32F103C8T6-A ... 48725e00bc
Никакого отношения к Ардуино не имеет, но готовая плата за $4.72. Дешевле самому не сделать. Там 2 кварца и все ноги разведены наружу.
http://www.ebay.com/itm/STM32F103C8T6-A ... 48725e00bc
Никакого отношения к Ардуино не имеет, но готовая плата за $4.72. Дешевле самому не сделать. Там 2 кварца и все ноги разведены наружу.
Re: STM32 новичку в ARM что к чему
balmer писал(а):Под 1206 народ и по две дорожки 0.25мм проводит. А вот под 0805 и 0603 помещается только одна дорожка, так что в этом смысле они равнозначны.
Под 0805 две дороги нормально проходят. Под 0603 только одна.
Re: STM32 новичку в ARM что к чему
Добрый день! Подскажите такой момент! Настроил таймер 2 на замер входной частоты, и таймер 3 (ведущий) раз в секунду он пинает ДМА и все замеры складываются в ОЗУ все вроде работает!
Но не пойму как сделать настройку что бы после того как ДМА забрал данные CNT таймера 2 сбрасывался! пните в нужном направлении.
Но не пойму как сделать настройку что бы после того как ДМА забрал данные 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);
Re: STM32 новичку в ARM что к чему
DX168B спасибо! Cube все таки добил. Очень удобно для выбора пинов! Когда первый раз запускал много функционала на диско действительно перебирал многие варианты а тут решение!
Еще вопрос: запихал один и тот же код в 2 разных места в main.c.
Выход смотрел на осциле.
В while 1 на выводе длиналась 1.7мС, в блоке прерывания длительность уже была до 100нС.
Я понимаю что там разные частоты на разных участках контроллера, но неужели это дает такую большую разницу в производительости в разных частях кода?
Еще вопрос: запихал один и тот же код в 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нС.
Я понимаю что там разные частоты на разных участках контроллера, но неужели это дает такую большую разницу в производительости в разных частях кода?