ozforester 0 20 октября, 2023 Опубликовано 20 октября, 2023 (изменено) · Жалоба Добрый вечер. Попробовал затактирвоаться от tcxo 16 МГц, но что-то не заводится. Информация скорее в пользу того, что у этого корпуса вход не подключен, но окончательной уверенности нет. Может просто "не умею готовить". Изменено 20 октября, 2023 пользователем ozforester Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 20 октября, 2023 Опубликовано 20 октября, 2023 · Жалоба А причем тут лапы для подключения 32-кГц ("часового") кварца? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 20 октября, 2023 Опубликовано 20 октября, 2023 · Жалоба Ну, упоминание опции в Additional functions + ответ сотрудника на сайте ST, что у TSSOP20 можно использовать байпас HSE для подачи внешнего тактового сигнала + скриншот КубаМХ, где на картинке у TSSOP20 для второй ноги выбран OSC_IN. Все вместе взятое и вызвало желание разобраться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 20 октября, 2023 Опубликовано 20 октября, 2023 · Жалоба А, ок. В 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. Все еще не ясно, в чем Ваш вопрос. Не тактируется или что? Код выкладывайте тогда. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 20 октября, 2023 Опубликовано 20 октября, 2023 · Жалоба Если совсем точно, то тактируется, но не далее второго пина. (= 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 20 октября, 2023 Опубликовано 20 октября, 2023 · Жалоба FLASH_ACR |= (1<<4); // enables prefetch buffer Согласно RM, 4 битанету в этом регистре. FLASH_ACR &= (0b111<<0); // clears latency location Куда ~ подевалась? Дальше не смотре - ибо копаться в magic number можно бесконечно. И обилие |= заставляет усомниться в том, что значения по дефолту не перебьют Ваши хотеки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 20 октября, 2023 Опубликовано 20 октября, 2023 (изменено) · Жалоба Скопипастил с дургого типа и пока не проверял флэш, спасибо, поправил. Запомнил, надо будет там посмотреть, может тоже мимо угодил. Но до флэша дело пока не дошло, шагал отладчиком. Отдельными строчками вервый раз мне проще разбираться и комментировать, а затем можно и шестнадцатиричной константой заносить значение. По дефолтным значениям регистра тоже проверяю, чтобы ошибки не было. Нет HSE RDY после включения. А дальше за флэшом просто HSI16 заменен на HSE. От HSI схема заводится. Я никогда не включал внешний генератор, поэтому, например, не знаю должен ли быть HSE RDY или он получает команду от осциллятора HSE, вопросов много возникает, а опыта не хватает. Изменено 20 октября, 2023 пользователем ozforester Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 20 октября, 2023 Опубликовано 20 октября, 2023 · Жалоба Вобщем, попробовал от функционального генаратора поиграть частотой и уровнем - заводится ниже восьми мегагерц, неустойчиво, иногда останавливается на некоторое время (css я отключил) и продожает. Диод повесил на таймере, чтобы видеть. Попробовал поставить 4 МГц и множителем поднял до 64 МГц системный клок. Мигает быстро, но с теми же спонтанными остановками. Приборы и кабель нормальные, грешу на сам мк. Хорошо, в отладчике случайно заметил как три бита установились (готов, байпас, он) вот и стал искать способ повторить. Буду с другим экземпляром возиться, проверю еще раз. Может этот поджарился, а может партия такая. Брал за 30 руб. не так давно с алиэкспресс. Резюме: исправный и в нормальных условиях работать от внешнего источника должен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serglg 0 21 октября, 2023 Опубликовано 21 октября, 2023 (изменено) · Жалоба я тактировал от внешнего генератора (выход таймера другого 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__); } Изменено 23 октября, 2023 пользователем haker_fox Для оформления кода есть кнопка <>. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 21 октября, 2023 Опубликовано 21 октября, 2023 (изменено) · Жалоба Обнаружил, что и MCO выше 8 МГц нет. При выборе источником системных часов (64) и делении на 8 - выдается 8 МГЦ, при делении на 4 - выдается 0 МГц. HSI и т.п. делить пробовал.То есть данный конкретный STM32G030F6P6 не может ни тактирвоаться от 16 МГц, ни выдавать на свой MCO 16 МГц. Попроцеживаю интернет, если увижу рабочий пример, то попробую ещё покопаться в RCC. Изменено 21 октября, 2023 пользователем ozforester Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 31 октября, 2023 Опубликовано 31 октября, 2023 · Жалоба Вобщем, докладываю. Стал замечать, что этот МК иногда не отвечает программатору и теряется при отладке, а в конце концов совсем перестал подавать признаки жизни. Измерил мультиметром ноги питания, падение ближе к одному вольту.. Заменил на новый МК и заодно проверил тактирование. Теперь тактируется как положено до 16 МГц, которые снимаются с MCO макого же МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться