Easyelectronics.ru

Электроника для всех
Текущее время: 28 сен 2020, 04:48

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 17:32 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
Имею нижеследующее:
Pinboard II, на нем stm32f103c8. CooCox CoIDE. Библиотеки и систем инит используются стандартные. Насколько мне известно, то по умолчанию инициализация тактирования задефайнена на кварц 8 МГц. На пинборде кварц 12 МГц. Копал исходники, встретил несколько мест, относящихся к выбору кварца. Вопрос - где и как лучше передефайнить библиотеки на другой кварц? И где задавать окончательную частоту камня? по умолчанию вроде там 72 МГц.

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

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 17:51 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Про SMT32F1ххх точно не скажу, но для SMT32F4хх есть файлик эксцелла с макросами, с помощью которого можно сгенерировать system_*.c под новый кварц и прочая. Ищите на сайте STM в ресурсах под семью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 20:51 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
В stm32f10x.h HSE_VALUE

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 21:26 
Заглядывает иногда

Зарегистрирован: 15 мар 2010, 11:04
Сообщения: 32
Если подключен файл system_stm32f10x.c, то насколько я помню в функции SetSysClockTo72() надо поменять в строке
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
делитель на RCC_CFGR_PLLMULL6.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 21:32 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
спасибо за ответы. Седня уже у меня поздно, завтра буду запускать УАРТ )

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 21:37 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
system_stm32f10x.c - это уже вторично, он сам использует HSE_VALUE, чтобы запрограммировать нужные коэффициенты в PREDIV and PLL
А потом, если используется _StdPeriph_Driver, значение дефайна HSE_VALUE и коэффиенты из регистров RCC PREDIV and PLL используются в программе повсеместно, например при настройке USART, вначале по этим цифрам инициализируют RCC_ClocksStatus, потом вычисляются коэффициенты для baudrate.

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 21:54 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
ну вот в этом файле в самом верху такой участок
Код:
/**
* @brief In the following line adjust the value of External High Speed oscillator (HSE)
   used in your application
   
   Tip: To avoid modifying this file each time you need to use different HSE, you
        can define the HSE value in your toolchain compiler preprocessor.
  */           
#if !defined  HSE_VALUE
#ifdef STM32F10X_CL   
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#else
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* STM32F10X_CL */
#endif /* HSE_VALUE */

тут и задается частота кварца? STM32F10X_CL у нас не дефайнится, ибо (как я понял), это для 105 и 107 семейств.
в данном случае, частота 8000000 пойдет дальше во все периферийные библиотеки. Тут ее и следует менять?

в файле system_stm32f10x.c есть такой кусок кода
Код:
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
#define SYSCLK_FREQ_HSE    HSE_VALUE
//#define SYSCLK_FREQ_24MHz  24000000
#else
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz  24000000 */
/* #define SYSCLK_FREQ_36MHz  36000000 */
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
#define SYSCLK_FREQ_72MHz  72000000
#endif

как я понимаю, тут дефайнами выбирать конечную частоту проца которая будет после умножителя?

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 21:59 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
и еще один вопрос на ночь задам:
в файле system_stm32f10x.c есть функция void SystemInit (void). Она стартует при запуске контроллера, до ф-ии main (); ?
заранее спасибо за ответы

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 22:17 
Заглядывает иногда

Зарегистрирован: 15 мар 2010, 11:04
Сообщения: 32
По дефайнам все правильно написали. Но дефайны эти фактически нужны для того, чтобы задефайнить значение частоты в одном месте, а потом его везде использовать, для инициализации периферии, например (типа расчета бодрейта для UART). А вот за то как эта частота будет получена отвечает как раз функция, о которой я писал выше.
elisey писал(а):
в файле system_stm32f10x.c есть функция void SystemInit (void). Она стартует при запуске контроллера, до ф-ии main (); ?
Верно.


Последний раз редактировалось SMaster 14 май 2012, 22:24, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 22:18 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
elisey писал(а):
ну вот в этом файле в самом верху такой участок
тут и задается частота кварца? STM32F10X_CL у нас не дефайнится, ибо (как я понял), это для 105 и 107 семейств.
в данном случае, частота 8000000 пойдет дальше во все периферийные библиотеки. Тут ее и следует менять?

Да.

elisey писал(а):
в файле system_stm32f10x.c есть такой кусок кода
как я понимаю, тут дефайнами выбирать конечную частоту проца которая будет после умножителя?

Да.

elisey писал(а):
и еще один вопрос на ночь задам:
в файле system_stm32f10x.c есть функция void SystemInit (void). Она стартует при запуске контроллера, до ф-ии main (); ?

Читай описание с начале файла:

* - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
* factors, AHB/APBx prescalers and Flash settings).
* This function is called at startup just after reset and
* before branch to main program. This call is made inside
* the "startup_stm32f10x_xx.s" file.
Тебе ничего не надо прописывать, оно само вызовется из "startup_stm32f10x_xx.s", который запускается первым согласно соглашениям CMSIS.
Только обязательно правильно раскомментируй одну из строчек в stm32f10x.h:

Код:
/* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */ 
  /* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */ 
  /* #define STM32F10X_HD */     /*!< STM32F10X_HD: STM32 High density devices */
  /* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line devices */ 
  /* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density devices */
  /* #define STM32F10X_CL */     /*!< STM32F10X_CL: STM32 Connectivity line devices */


а то всё может неправильно работать, либо этот дефайн надо подсунуть компилеру

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 14 май 2012, 22:31 
Заглядывает иногда

Зарегистрирован: 15 мар 2010, 11:04
Сообщения: 32
hardegor писал(а):
Только обязательно правильно раскомментируй одну из строчек в stm32f10x.h:
Код:
/* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */ 
  /* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */ 
  /* #define STM32F10X_HD */     /*!< STM32F10X_HD: STM32 High density devices */
  /* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line devices */ 
  /* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density devices */
  /* #define STM32F10X_CL */     /*!< STM32F10X_CL: STM32 Connectivity line devices */
Для stm32f103c8 это строчка
Код:
#define STM32F10X_MD


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 15 май 2012, 10:37 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
hardegor, SMaster
спасибо за ответы. частоту выставил, уарт завел. все работает
Цитата:
hardegor писал(а):
Только обязательно правильно раскомментируй одну из строчек в stm32f10x.h:
Код:
/* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
/* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */
/* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
/* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */
/* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
/* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */
/* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */
/* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */

Цитата:
Для stm32f103c8 это строчка
Код:
#define STM32F10X_MD

кста в тулчайне это задефайнено уже, так что тут кокос ошибится мне не даст)

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 15 май 2012, 13:35 
Заглядывает иногда

Зарегистрирован: 07 фев 2012, 19:31
Сообщения: 118
Да я тоже столкнулся с этой проблемой при проектировании альтернативной версии быстрого старта на СТМ32 на PBII.
Что было сделано:
1. Были введены два определения в проект:
XTAL_FREQ_12MHZ
-DHSE_VALUE=((uint32_t)12000000)
2. Была создана локальная копия файла system_stm32f10x.c
В локальной копии вместо строки с номером 1056
был вставлен нижеследующий фрагмент:
#ifndef XTAL_FREQ_12MHZ
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
#else
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
#endif

И можно использовать во всех приложениях STM32 на PBII
Желаю успеха

_________________
Прерывание на хальте, осложненное ПДП циклом...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Частота камня при выборе другого кварца.
СообщениеДобавлено: 16 май 2012, 00:28 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
eugene_e_n писал(а):
Да я тоже столкнулся с этой проблемой при проектировании альтернативной версии быстрого старта на СТМ32 на PBII.
Что было сделано:
1. Были введены два определения в проект:
XTAL_FREQ_12MHZ
-DHSE_VALUE=((uint32_t)12000000)
2. Была создана локальная копия файла system_stm32f10x.c
В локальной копии вместо строки с номером 1056
был вставлен нижеследующий фрагмент:
#ifndef XTAL_FREQ_12MHZ
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
#else
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
#endif

И можно использовать во всех приложениях STM32 на PBII
Желаю успеха

Спасибо)

_________________
elisey.su


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB