Jump to content

STM32F103C8T6 BluePill не переключается на PLL


 Share

Recommended Posts

Всем привет!
Столкнулся с проблемой, что, например, если обвязать переключение на HSE, PLL проверками, то не проходит проверку лишь переключение на PLL.
Код:
 

inline void RCC_Init() // устанавливаем на 72 МГц
{
    //так как частота ядра 48 MHz <= frequency <= 72 MHz, нужно установить 2 цикла ожидания FLASH
    FLASH->ACR |= FLASH_ACR_LATENCY_2;
 
    //т.к шина APB1 не может работать на частоте выше, чем 36 МГц, установим делитель на 2. Остальные шины(APB2, AHP) оставляем без делителей
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_HPRE_DIV1;
 
    RCC->CR |= (1 << RCC_CR_HSEON_Pos); //запускаем HSE-генератор
    while(!(RCC->CR & (1 << RCC_CR_HSERDY_Pos))); //пока HSE генератор не запустился, сидим в цикле.
 
    RCC->CFGR |= (0b0111 << RCC_CFGR_PLLMULL_Pos); // PLL = 0111 => умножение на 9
 
 
    RCC->CFGR |= (1 << RCC_CFGR_PLLSRC_Pos); // запустили тактирование HSE от PLL
    while(RCC->CR & (1 << RCC_CR_PLLRDY_Pos)); //пока тактирование от PLL не началось, сидим в цикле.
 
 
    RCC->CFGR |= RCC_CFGR_SW_PLL; // переключаемся на PLL.
    while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) // вот здесь и проблема <<<<<<<<<<<<<<<<<<
    {
    } // пока не переключились на PLL, сидим в цикле
 
    RCC->CR &= ~RCC_CR_HSION; // отключаемся от HSI
}
int main()
{
    RCC_Init();
    ......
    while(true) {}
    return 0;
}

По дебагу смотрел, RCC->CFGR SWS по нулям стоит, хотя должны быть в 10 стоять. Грешу на микроконтроллер. Покупал на местом базаре.
Проблемы были с _CPUTAPID, пришлось и его подбивать в OpenOCD. Поэтому даже и не удивлюсь, если проблема в МК.
У кого-нибудь были проблемы, что делать?
Если убрать последнюю проверку на переключение от PLL, то все норм. С функции RCC_INIT() выйдем и пойдем по main() уже дальше.

Link to comment
Share on other sites

Не вижу включения PLL

    /* Enable PLL */
    RCC->CR |= RCC_CR_PLLON;

Перед строкой

4 hours ago, Иван Рогожников said:

while(RCC->CR & (1 << RCC_CR_PLLRDY_Pos));

 

Link to comment
Share on other sites

Вебинар «Новые тенденции сетевых технологий: Ethernet по одной витой паре» (09.12.2021)

Приглашаем 9 декабря всех желающих посетить вебинар, посвященный технологии Ethernet и её новому стандарту 10BASE-T1S/L. Стандарт 802.3cg описывает передачу данных на скорости до 10 Мбит в секунду по одной витой паре. На вебинаре будут рассмотрены и другие новшества, которые недавно вошли в семейство технологий Ethernet: SyncE, PTP, TSN. Не останется в стороне и высокоскоростной 25G+ Ethernet от Microchip.

Подробнее

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji 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...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

    • Преподу купи бутылку вискаря и результат в таком случае будет одинаков.
    • Поверьте, там всё согласовано. Можете только КУ изменить (сейчас 195), увеличив Р528. С510 нужно будет уменьшить - F(-3дБ) = 1/(2ПИ*Р528*С510). Грубо - во сколько раз увеличите Р528, во столько раз уменьшить С510. Например - поставите 470 Ом (КУ=63), тогда С510 - 12пФ. И С514, возможно, подобрать придётся. Осцилл обязателен!!!    Нет.  
    • мне без надобности это знать... распыленка - это не феррит, если чо
    • Ну, это уже не буфер. КУ больше 3 и резисторы больших номиналов. R4 22k - нафига такой? Он же шумит! 1к достаточно. Попробуй собрать по моей схеме. И землю тоже, как в моей. Это от возбуда термодатчика Т516. Обычно ставят 0.1мкФ К-Б. Б-Э не видел. Оставьте, хуже не будет. Постоянно,  если ПТ на входе. Смотрите даже схему Япончика. Да. Резисторы 1МОм - смещение по постоянке. Влияет на постоянку на выходе. Они должны быть равны.  Р526+Р570 и Р528 - делитель ООС по переменке. КУ=1+(Р26+Р570)/Р528. Конденсаторы С516+С508, блокирующие ОС по постоянке, получаются в петле ОС и их качество мало влияет.
    • Недавно настраивал первый каскад УНЧ, в аноде ставил китайский карбоновый резистор как-бы полваттный бежевого цвета на 220кОм. Питание было +350В. После регулировок/настроек решил заменить резистор на другой, а тот, который поработал я проверил .... он уплыл с 220кОм в более, чем 300к. Со вторым каналом было то-же самое. После этого проверил резисторы на 330кОм(от того-же продавца), которые стояли параллельно конденсаторам питания, чтобы разряжать их после выключения... та-же история , уплыли в 500-700к.  Будьте внимательны в выборе компонентов для лампового УНЧ. 300-400В это всё-таки не 15-30В. Кстати, металлоплёночные нормально выдерживали, и к советским ВС и МЛТ тоже претензий не было.
    • На обратной стороне платы есть транзисторные ключи, через них включаются релюшки,сомневаюсь что все транзисторы накрылись  http://s7detali.narod.ru/Schneider/Zelio.html всё что нашлось в интернете только картинки
    • У меня стояла на виртуальной машине. С железом подружил, с сеткой подружил, а вот софтину так и не подобрал

  • Индикатор заряда дли литиевых аккумуляторов: 1S-7S

×
×
  • Create New...