Например TDA7294

Форум РадиоКот • Просмотр темы - Тактирование STM32F103C6 на StdPeriph и Протеус...
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 10:42:05

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Тактирование STM32F103C6 на StdPeriph и Протеус...
СообщениеДобавлено: Вс ноя 18, 2018 20:25:30 
Прорезались зубы

Карма: -3
Рейтинг сообщений: -3
Зарегистрирован: Вт сен 09, 2008 18:17:27
Сообщений: 213
Рейтинг сообщения: 0
Сделал тактирование STM32F103C6 на StdPeriph в Keil 5.24a (как тут: http://www.avislab.com/blog/stm32-clock_ru/)

Прошил в железо, три светодиода на портах PB0, PB1, PC13 по очереди зажигаются на 0,5сек итого цикл 1,5 сек.

Действительно ли микроконтроллер у меня заработал на 72мГц (кварц на 8мГц) а порт на 50мГц с такими настройками,
(72000000*1,5)/(0x5AE8BA*3) = 6,042... не слишком ли много машинных циклов на цикл ожидания?

Почему в Протеусе 8.7 если выставить частоту кристалла 8мГц циклы в осциллографе растягиваются как будто надо поставить
72мГц, но если поставить 72мГц то симуляция вообще зависает? (При 50Мгц ещё не зависает)

Я правильно понимаю, в Протеусе у этой модели глючит режим GPIO_Mode_Out_PP, т.е. никогда не подключаются выходы к
+ питания?

Есть ли разница в какой последовательности следуют блоки кода "настройка портов" и "настройка тактирования" ?

main.cpp из проекта:
Спойлер
Код:
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
 
int main(void)
{
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
int i;
//******************************************************************************************************************************
{ //настройка портов
GPIO_InitTypeDef  GPIO_InitStructure; /* Initialize Leds mounted on STM32 board */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);   /* Initialize LED which connected to PC13, Enable the Clock*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;        /* Configure the GPIO_LED pin */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//----------
//GPIO_InitTypeDef  GPIO_InitStructure; /* Initialize Leds mounted on STM32 board */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   /* Initialize LED which connected to PC13, Enable the Clock*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;        /* Configure the GPIO_LED pin */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//----------    
}
{ //настройка тактирования
ErrorStatus HSEStartUpStatus;
/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ----------*/
RCC_DeInit(); /* Системный RESET RCC (делать не обязательно, но полезно на этапе отладки) */
RCC_HSEConfig( RCC_HSE_ON); /* Включаем HSE (внешний кварц) */
HSEStartUpStatus = RCC_WaitForHSEStartUp(); /* Ждем пока HSE будет готов */
if (HSEStartUpStatus == SUCCESS)  /* Если с HSE все в порядке */
  {
  /* Следующие две команды касаются исключительно работы с FLASH.
  Если вы не собираетесь использовать в своей программе функций работы с Flash,
  FLASH_PrefetchBufferCmd( ) та FLASH_SetLatency( ) можно закомментировать */
      
  //FLASH_PrefetchBufferCmd( FLASH_PrefetchBuffer_Enable); /* Включаем Prefetch Buffer */
      
  /* FLASH Latency.
  Рекомендовано устанавливать:
  FLASH_Latency_0 - 0 < SYSCLK? 24 MHz
  FLASH_Latency_1 - 24 MHz < SYSCLK ? 48 MHz
  FLASH_Latency_2 - 48 MHz < SYSCLK ? 72 MHz */
  //FLASH_SetLatency( FLASH_Latency_2);
      
  RCC_HCLKConfig( RCC_SYSCLK_Div1); /* HCLK = SYSCLK */ /* Смотри на схеме AHB Prescaler. Частота не делится (RCC_SYSCLK_Div1) */
  RCC_PCLK2Config( RCC_HCLK_Div1); /* PCLK2 = HCLK */ /* Смотри на схеме APB2 Prescaler. Частота не делится (RCC_HCLK_Div1)  */
  RCC_PCLK1Config( RCC_HCLK_Div2); /* PCLK1 = HCLK/2 */ /* Смотри на схеме APB1 Prescaler. Частота делится на 2 (RCC_HCLK_Div2) потому что на выходе APB1 должно быть не более 36МГц (смотри схему) */
  /* PLLCLK = 8MHz * 9 = 72 MHz */
  /* Указываем PLL от куда брать частоту (RCC_PLLSource_HSE_Div1) и на сколько ее умножать (RCC_PLLMul_9) */
  /* PLL может брать частоту с кварца как есть (RCC_PLLSource_HSE_Div1) или поделенную на 2 (RCC_PLLSource_HSE_Div2). Смотри схему */
  RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
  RCC_PLLCmd( ENABLE);  /* Включаем PLL */
  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {} /* Ждем пока PLL будет готов */
  RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK); /* Переключаем системное тактирование на PLL */
  while (RCC_GetSYSCLKSource() != 0x08) {}  /* Ждем пока переключиться */
  }
  else  /* Проблемы с HSE. Тут можно написать свой код, если надо что-то делать когда микроконтроллер не смог перейти на работу с внешним кварцом */
    {     
    while (1) {}  /* Пока тут заглушка - вечный цикл*/
    }
}

while (1)
  {   
//  GPIOC->ODR ^= GPIO_Pin_13; /* Toggle LED which connected to PC13*/
//   GPIOB->ODR ^= GPIO_Pin_0;

   
  GPIO_ResetBits(GPIOC, GPIO_Pin_13); // Set C13 to Low level ("0")   
  for(i=0;i<0x5AE8BA;i++); /* delay */
   GPIO_SetBits(GPIOC, GPIO_Pin_13); // Set C13 to High level ("1")
   GPIO_SetBits(GPIOB, GPIO_Pin_0);   
   for(i=0;i<0x5AE8BA;i++); /* delay */   
   GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  GPIO_SetBits(GPIOB, GPIO_Pin_1);
  for(i=0;i<0x5AE8BA;i++); /* delay */
   GPIO_ResetBits(GPIOB, GPIO_Pin_1);

      
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
}


Проект: https://yadi.sk/d/v6zT2YcwmDylKg


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Тактирование STM32F103C6 на StdPeriph и Протеус...
СообщениеДобавлено: Вс ноя 18, 2018 20:50:27 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
DENIS451 писал(а):
если поставить 72мГц то симуляция вообще зависает?
Комп не справляется с симуляцией. Купите новый, более мощный, желательно топовый, или купите МК 103C8 за 1.5$.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Тактирование STM32F103C6 на StdPeriph и Протеус...
СообщениеДобавлено: Вс ноя 18, 2018 21:51:18 
Прорезались зубы

Карма: -3
Рейтинг сообщений: -3
Зарегистрирован: Вт сен 09, 2008 18:17:27
Сообщений: 213
Рейтинг сообщения: 0
Я не точно выразился, симуляция не зависает, но судя по всему она попадает в ловушку,
в которую не должна попадать если прописать в "Crystal Frequency:" число больше 51000000:
Код:
...
  else  /* Проблемы с HSE. Тут можно написать свой код, если надо что-то делать когда микроконтроллер не смог перейти на работу с внешним кварцом */
    {     
    while (1) {}  /* Пока тут заглушка - вечный цикл*/
    }

...

Подскажите какое число должно стоять в модели STM32F103C6 "Crystal Frequency:" если у меня кварц на 8мГц а ядро микроконтроллера я пытаюсь запустить на 72мГц?

У меня есть отладочная плата с STM32F103C6R6 и с STM32F103C8R6


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Тактирование STM32F103C6 на StdPeriph и Протеус...
СообщениеДобавлено: Вс ноя 18, 2018 22:59:59 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
DENIS451 писал(а):
если прописать в "Crystal Frequency:" число больше 51000000
Этот МК не поддерживает частоту кварца больше 16 МГц. Пишите 8000000. Тем более что в коде написано.
Цитата:
/* PLLCLK = 8MHz * 9 = 72 MHz */

То есть кварц на 8 МГц, а умножитель увеличивает до 72 МГц.

DENIS451 писал(а):
У меня есть отладочная плата с STM32F103C6R6 и с STM32F103C8R6
Почему тогда используете протеус?


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Тактирование STM32F103C6 на StdPeriph и Протеус...
СообщениеДобавлено: Вс ноя 18, 2018 23:18:57 
Прорезались зубы

Карма: -3
Рейтинг сообщений: -3
Зарегистрирован: Вт сен 09, 2008 18:17:27
Сообщений: 213
Рейтинг сообщения: 0
Протеус использую что бы снизить вероятность спалить микроконтроллер.

Если прописать в Протеусе 8мГц, то период мигания светодиодов на одинаковой прошивке становиться ровно в 9 раз медленные чем на реальном железе (по показанию виртуального осциллографа)!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y