Sign in to follow this  
Guest Иван

Настройка тактирования STM32F4 при помощи CMSIS

3 posts in this topic

Guest Иван   
Guest Иван

При смены множителя N в PLL, частота мерцания светодиодов остается неизменной. Даже если закомментировать регистры связанные с PLL и тактировать от HSE, то частота мигания светодиодов остается прежней.

Используется плата: stm32f4 discovery.

В чем может быть дело? Что не так?

Полный листинг программы:

#include "stm32f4xx.h"                 // Device header

int main (void)
	
{
		RCC->CR |= (RCC_CR_HSEON); 							//Enable HSE

	while( !(RCC->CR & RCC_CR_HSERDY) ) {} //ready to start HSE

	//FLASH
	FLASH->ACR |= FLASH_ACR_LATENCY | FLASH_ACR_PRFTEN| FLASH_ACR_ICEN| FLASH_ACR_DCEN;
	//PLL - HSE
	RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; //set HSE as PLL source
	RCC->CR &= ~(RCC_CR_PLLON); 						//disable PLL before changes
	//PLL M
	RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLM); 		//clear all PLLM bits
	RCC->PLLCFGR |= RCC_PLLCFGR_PLLM_2; 		//set PLLM = 4 (100)
	//PLL P
	RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLP); 		//main PLL division PLLP = 2: 00
	//PLL N
	RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLN); 		//clear all PLLN bits with mask
	RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_3; 		//set PLLN = 168 (1010 1000)
	RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_5; 		//for 8 or 16 MHz HSE
	RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_7; 		//
	//PLL Q 7 (0111)
	RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLQ);
	RCC->PLLCFGR |= (RCC_PLLCFGR_PLLQ_0	| RCC_PLLCFGR_PLLQ_2	| RCC_PLLCFGR_PLLQ_2);
	//AHB Prescaler
	RCC->CFGR &= ~(RCC_CFGR_HPRE); 					//Prescaler 1
	RCC->CFGR |= RCC_CFGR_HPRE_DIV1; 				//AHB = SYSCLK/1
	//APB1 Prescaler 8
	RCC->CFGR &= ~(RCC_CFGR_PPRE1);
	RCC->CFGR |= RCC_CFGR_PPRE1_DIV8;
	//APB2 Prescaler 2
	RCC->CFGR &= ~(RCC_CFGR_PPRE2);
	RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
	//PLL enable
	RCC->CR |= RCC_CR_PLLON; 								//enalbe PLL
	while((RCC->CR & RCC_CR_PLLRDY) == 0) {} 	//wait for PLL is ready
	//PLL System
	RCC->CFGR &= ~RCC_CFGR_SW;
	RCC->CFGR |= RCC_CFGR_SW_HSE; 					//PLL selected as system clock
	while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSE) {} 	//wait for PLL is used

	
	RCC->AHB1ENR |=RCC_AHB1ENR_GPIODEN;	//start clock PORTD
	
	GPIOD->MODER |= GPIO_MODER_MODER15_0 | GPIO_MODER_MODER14_0 | GPIO_MODER_MODER13_0 | GPIO_MODER_MODER12_0; // Pin 15, 14, 13, 12 - out
	GPIOD->OTYPER &= ~0xF000; // Pin 15, 14, 13, 12 - Output push-pull
	GPIOD->OSPEEDR &= ~0xFF000000; // Pin 15, 14, 13, 12 - Low speed
	
	
while(1)
{
	// ON LED
	GPIOD->ODR |= GPIO_ODR_ODR_15 | GPIO_ODR_ODR_14 | GPIO_ODR_ODR_13 | GPIO_ODR_ODR_12;
	for (int i=0; i<24000000; i++){}
	// OFF LED
	GPIOD->ODR &= ~(GPIO_ODR_ODR_15 | GPIO_ODR_ODR_14 | GPIO_ODR_ODR_13 | GPIO_ODR_ODR_12);
	for (int i=0; i<24000000; i++){}
	
}
}

 

Share this post


Link to post
Share on other sites
Вуйко    18
RCC->CFGR |= RCC_CFGR_SW_HSE; 					//PLL selected as system clock
while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSE) {} 	//wait for PLL is used

Источником тактирования выбран внешний кварц, а нужно выбирать PLL.

Должно быть как-то так:

RCC->CFGR |= RCC_CFGR_SW_PLL; 					//PLL selected as system clock
while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) {} 	//wait for PLL is used

 

Share this post


Link to post
Share on other sites
Guest Иван   
Guest Иван
4 часа назад, Вуйко сказал:

Источником тактирования выбран внешний кварц, а нужно выбирать PLL.

Должно быть как-то так:


RCC->CFGR |= RCC_CFGR_SW_PLL; 					//PLL selected as system clock
while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) {} 	//wait for PLL is used

 

У меня так было изначально. Частота не меняется при смене N.

Это я потом пробовал с HSE

Share this post


Link to post
Share on other sites

Старт складской программы по Wi-Fi/ Bluetooth-чипам от Espressif

На склад КОМПЭЛ поступили чипы, модули и отладочные платы от компании Espressif Systems на базе ESP8266 и ESP32. Стоимость всех изделий данной линейки – в 2-3 раза ниже ближайших аналогов, чипы занимают минимальное место на плате, энергоэффективны и универсальны в применении

Подробнее...

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Я поясню, почему нет смысла спорить по статье в ссылке: - Для того, чтобы написать статью в негативном свете, нужно  доходчиво обьяснить  причину быстрого износа тех или иных узлов или деталей и аргументированно обьяснить, почему это произошло при эксплуатации на газу и почему этого не происходит на бензине.  И с этими обьяснениями сложно спорить  потому, что факты предьявляются простые и всем понятные -  раньше присутствовала смазка за счет несгоревших смол, а теперь ее нет итд.  Но все эти износы и прогары на практике не происходят и ходят детали в полтора-два раза дольше.  Поэтому спор будет не о том, что клапан не смазывается, а о том, чтобы такой пострадавший от газа клапан был вообще в природе. И зазоры не уходят. На вазах нет компенсаторов и поэтому ответственные люди приезжают на регламентные работы строго по пробегу, а им говорят, чтобы еще столько же поездили, тогда и можно будет подрегулировать и масло поменять(полтора-двойной пробег). Свечи еще гораздо реже менялись. Про экономию бензина нет смысла говорить. Если кто спросит, а какие все-таки недостатки у газа, ведь без них ничего не бывает, то скажу, что это запах (для некоторых, мне пофиг), немногочисленность заправок  и невозможно с собой в канистре взять. Но у меня одним разьемом подключался второй баллон. Зимой его не снимал для загрузки задней оси.  В день проезжал 65-70 км на работу, заправки хватало на месяц.
    • Кому такая дурь известна? Если только в палате номер 6? АМ имеет плохую помехозащищённость, если в радиовещании  -  соглашусь. Но в остальном полнейшая ересь.    Осциллограммы где?? Что что то там "звучит" это никому не интересно. Где осциллограммы? И тупить не надо. Цитатами и вырезками решил стрелки перевести. ОСЦИЛЛОГРАММЫ ДАВАЙ!
    • Нормальные. Сюда пойдут. Почти похожи на мотороллы MJ15003 - понизкочастотнее, но крепкие. Всем кажется, что так лучше. Но это не факт. При однополярке не нужна защита АС от постоянки на выходе например. В этой схеме уже есть стабилизатор. А выходной каскад не так чуствивтелен к пульсациям.
    • Аллилуйя!
      Идите...... и не грешите больше!

      А мы, сирые , уж как нибудь.
    • Ничего такого в моем ЧМ-демодуляторе нет. АМ не пригодна для качественного звука-это всем известно. кроме некоторых отвязавшихся.. У меня уже все изготовлено и отлично работает. Седни слушал и сравнивал с SONY ST-SA5ES который с ФАПЧ, ну... на уровне оба. Записал семплов и еще запишу. Sony дает отличное разделение каналов и там хитро...ная микруха CXA1064 с пьезорезонатором. Запишу видео и звук подклею. А то на эту сони нормальных видосов нет. Не позорился бы со своими АМ-детекторами, когда космические корабли бороздят...эфир.    
    • Нахожусь в процессе изучения темы... Тяжело с самого начала "въехать". Видимо первая страница на самом деле не самая первая, уже на ней ссылаются на какую-то версию 4.42... Ну и видимо первые страниц 10 хорошо пропололи.. непонятные ссылки, какие-то скачки.. но неудивительно, сколько лет прошло.. Что понял из пока прочитанного: защита от обрыва - излишество. Событие шибко редкое, таких событий (приводящих к подъему напряжения) может быть много, от всех не перестрахуешься. Тем более обрыв вот прямо в процессе... А в остальных случаях по вольтметру сразу видно. Так что себе ее точно делать не буду. Далее. Светодиоды в управлении... Думаю это неправильно. Всего пара транзисторов добавляется и исчезают проблемы. Кроме риска выхода из строя самих светодиодов (и как следствие подъем напряжения) имеем разную их яркость (особенно если они разного цвета и даже марки). Так что для себя выбрал вариант без светодиодов в управлении. Далее. Термозащита.. Считаю ее не должно быть в составе платы управления. Есть много вариантов реализации, к тому же система управления кулером все равно обязательно будет, вот она-же будет заодно выполнять функцию  термозащиты. Это сервисная функция и нечего ей делать в составе управления. Но возможность ее подключения должна быть. В связи с наличием тумблера оперативного отключения (считаю это нужно) появилась мысль... Не силен я в этих вещах, поэтому попробую по деревенски изложить, авось поймете. Ввести в схему некий элемент (реле, тиристор, оптрон или та-же ТЛка) назовем его Х, который при внешнем сигнале будет отключать силовую часть (так как сейчас действовать будет добавленная кнопка отключения.) А вот включение этого элемента через развязывающие диоды может происходить от разных сигналов. Сейчас одна Тлка управляется термозащитой, другая - тумблером отключения, третья защитой и все они ведут к одному действию - отключению силовой части. так вот пускай это будет один элемент (Х) управляемый разными сигналами. Тогда систему термозащиты можно делать какую угодно (отдельно) и ее сигнал будет приходить на Х, отключая блок. К этому-же элементу Х через свой диод подключен тумблер отключения. На него-же может приходить сигнал от любого другого устройства (хоть от часов, хоть от датчика фазы луны) и все они через этот элемент будут приводить к одному действию - отключению. Да хоть фотодатчик подключить и блок будет включаться утром и отключаться вечером. Примерно так когда-то  мы проектировали системы аварийных блокировок для спецтехники, когда разные события приводят к одному результату. Или это глупости и не стоит усложнять схему? Это просто мысль вслух, лирическое отступление, не более. Возникающие вопросы пока записываю, если не найду ответов, буду спрашивать. Пока неясен момент с радиаторами для 7815 и транзистора опорного. Какие там токи? Нужен реальный радиатор или достаточно куска пластины. Почти на всех схемах написано "U3 - защита входа", но пока нигде не нашел пояснения защита чего, от чего и как работает. Видимо описание поэлементно когда-то было, но осталось где-то в предисловии, которое не попало сюда. И еще: если светодиоды не в управлении, а они питаются от генератора тока - то выходит нет возможности регулировать по отдельности яркость каждого? Даже если резистор последовательно поставить, то ток все равно будет тот-же. А если светодиоды разные?  Ну например один сверхяркий 3мм красный, а другой например простой 10 мм зеленый - естественно яркость будет разная). Или их нужно одинаковые ставить? А если один из них будет моргающий? Может в их питании нужен не генератор тока, а стаб напряжения? Тогда можно последовательно с каждым ставить свой резистор, тем самым изменяя яркость? В любом случае большое спасибо Владимиру, автору этой весьма удачной конструкции, который поддерживает тему уже много  много лет...
    • Я знаю, что такое правильный УНЧ, а вот вы и близко не знаете. Если УНЧ начинает вносить искажения в звук - это гамно, а не УНЧ, и место ему на помойке. Единственный случай, когда такой УНЧ имеет право на жизнь - это когда кривизна звука УНЧ компенсирует кривизну звука АС.   Ну да. Есть нормальные люди, которые слушают музыку, а есть не совсем нормальные, которые слушают искажения УНЧ. Лично у меня собран JLH, который имеет линейную АЧХ во всем диапазоне (смотрел лично практически от нуля и 20КГц). И он дает шикарный, собраный низ, высокую детализацию, хорошую сцену. И при этом всем имеет высокую верность воспроизведения, чего не скажешь ни о лампах, ни о германии. Еще раз повторюсь, УНЧ должен УСИЛИВАТЬ, а не звучать. "Звучание" УНЧ замашки аудиофилов, не более.