Перейти к содержанию
    

Тактирование STM32G030F

Добрый вечер.

Попробовал затактирвоаться от tcxo 16 МГц, но что-то не заводится. Информация скорее в пользу того, что у этого корпуса вход не подключен, но окончательной уверенности нет. Может просто "не умею готовить". 

 

g030rcc.png

Изменено пользователем ozforester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, упоминание опции в Additional functions +  ответ сотрудника на сайте ST, что у TSSOP20 можно использовать байпас HSE для подачи внешнего тактового сигнала + скриншот КубаМХ, где на картинке у TSSOP20 для второй ноги выбран OSC_IN. Все вместе взятое и вызвало желание разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, ок. В 48-выводном корпусе OSC_IN отделен от OSC32_IN.

Во всех остальных OSC_IN и OSC32_N - это один и тот же вывод.

В референс мануале

Цитата

6.3.13 Using the HSE or LSE oscillator pins as GPIOs

When the HSE or LSE oscillator is switched OFF (default state after reset), the related oscillator pins can be used as normal GPIOs. When the HSE or LSE oscillator is switched ON (by setting the HSEON or LSEON bit in the RCC_CSR register) the oscillator takes control of its associated pins and the GPIO configuration of these pins has no effect. When the oscillator is configured in a user external clock mode, only the OSC_IN or OSC32_IN pin is reserved for clock input and the OSC_OUT or OSC32_OUT pin can still be used as normal GPIO.


Все еще не ясно, в чем Ваш вопрос. Не тактируется или что? Код выкладывайте тогда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если совсем точно, то тактируется, но не далее второго пина. (=

        RCC_CR |= (1<<19); // CSS ON
        RCC_CR |= (1<<18); // HSE BYPASS (TCXO 16MHz)
        RCC_CR |= (1<<16); // HSE  on
        while( !(RCC_CR & (1<<17)) ); // hse ready
        FLASH_ACR |= (1<<4); // enables prefetch buffer
        FLASH_ACR &= (0b111<<0); // clears latency location
        FLASH_ACR |= (0b010<<0); // set latency to 48-64 MHz
        RCC_PLLCFGR |= (0b11 << 0); // PLL src HSE
        RCC_PLLCFGR &= ~(0b1111111 << 8); // PLLN reset
        //RCC_PLLCFGR |= (0b0001000 << 8); // PLLNx8 (16 * 8 = 128 MHz) default
        RCC_PLLCFGR |= (0b001 << 29); // PLLR out divisor 2 (128/2=64)
        RCC_PLLCFGR |= (1 << 28); // PLLR out enable
        RCC_CR |= (1 << 24); // PLL on
        while( !(RCC_CR & (1<<25) ) ); // wait PLL ready
        RCC_CFGR |= (0b010 << 0); // PLLR as system clock
        while ( !((RCC_CFGR) & (0b010 << 3)) ); // wait sysclock switched to PLL

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FLASH_ACR |= (1<<4); // enables prefetch buffer

Согласно RM, 4 битанету в этом регистре.

FLASH_ACR &= (0b111<<0); // clears latency location

Куда ~ подевалась?

Дальше не смотре - ибо копаться в magic number можно бесконечно.

И обилие |= заставляет усомниться в том, что значения по дефолту не перебьют Ваши хотеки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скопипастил с дургого типа и пока не проверял флэш, спасибо, поправил. Запомнил, надо будет там посмотреть, может тоже мимо угодил.  Но до флэша дело пока не дошло, шагал отладчиком.  Отдельными строчками вервый раз мне проще разбираться и комментировать, а затем можно  и шестнадцатиричной константой заносить значение. По дефолтным значениям регистра тоже проверяю, чтобы ошибки не было.  Нет HSE RDY после включения. А дальше за флэшом просто HSI16 заменен на HSE. От  HSI схема заводится. Я никогда не включал внешний генератор, поэтому, например, не знаю должен ли быть HSE RDY или он получает команду от осциллятора HSE, вопросов много возникает, а опыта не хватает. 

Изменено пользователем ozforester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем, попробовал от функционального генаратора поиграть частотой и уровнем  - заводится ниже восьми мегагерц, неустойчиво, иногда останавливается на некоторое время (css я отключил) и продожает.  Диод повесил на таймере, чтобы видеть.  Попробовал поставить 4 МГц и множителем поднял до 64 МГц системный клок. Мигает быстро, но с теми же спонтанными остановками. Приборы и кабель нормальные, грешу на сам мк. Хорошо, в отладчике случайно заметил как три бита установились (готов, байпас, он) вот и стал искать способ повторить. Буду с другим экземпляром возиться, проверю еще раз. Может этот поджарился, а может партия такая. Брал за 30 руб. не так давно с алиэкспресс. Резюме: исправный и в нормальных условиях работать от внешнего источника должен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я тактировал от внешнего генератора (выход таймера другого STM32 - 4МГц). В результате  - 48 МГц. Никаких проблем. Настройка  RCC - от Куба

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
  RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }


 

Изменено пользователем haker_fox
Для оформления кода есть кнопка <>.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обнаружил, что и MCO выше 8 МГц  нет. При выборе источником системных часов (64) и делении на 8 - выдается 8 МГЦ, при делении на 4 - выдается  0 МГц. HSI и т.п. делить пробовал.То есть данный конкретный STM32G030F6P6 не может ни тактирвоаться от 16 МГц, ни выдавать на свой MCO 16 МГц. Попроцеживаю интернет, если увижу рабочий пример, то попробую ещё покопаться в RCC.

Изменено пользователем ozforester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем, докладываю. Стал замечать, что этот МК иногда не отвечает программатору и теряется при отладке, а в конце концов совсем перестал подавать признаки жизни. Измерил мультиметром ноги питания, падение ближе к одному вольту.. Заменил на новый МК и заодно проверил тактирование. Теперь тактируется как положено до 16 МГц, которые снимаются с MCO макого же МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...