-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathextClock.cpp
More file actions
38 lines (32 loc) · 2.29 KB
/
extClock.cpp
File metadata and controls
38 lines (32 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/********************************************************************/
/* Description: 外部水晶発振モジュールの設定 */
/* File: extClock.cpp */
/* Date: 2024/07/15 */
/* Author: Takashi YOSHIOKA */
/********************************************************************/
#include "extClock.h"
/********************************************************************/
/* Description: 外部水晶発振モジュールの初期化 */
/* Function: setup_clock */
/* Arguments: なし */
/* Return value: なし */
/* etc.: FCLK=24MHz, ICLK=48MHz, */
/* PCLKA=48MHz, PCLKB=24MHz, PCLKC=48MHz, PCLKD=48MHz */
/********************************************************************/
void setup_clock(void)
{
R_SYSTEM->PRCR = 0xA501; //プロテクト解除
R_SYSTEM->CKOCR_b.CKOEN = 0; // クロックアウト許可 0:禁止 1:許可
R_SYSTEM->MOMCR_b.MOSEL = 0; // メインクロック源 0:発振子 1:外部クロック
R_SYSTEM->MOMCR_b.MODRV1 = 0; // メインクロック駆動能力 0:10-20MHz 1:1-10MHz (12MHz)
R_SYSTEM->MOSCWTCR_b.MSTS = 0b1000; // メインクロック発振安定時間 0b1000:16384us待機
R_SYSTEM->MOSCCR_b.MOSTP = 0; // 0:メインクロック動作 1:停止
while ( R_SYSTEM->OSCSF_b.MOSCSF == 0 );// メインクロック安定(MOSCSF=1)まで待機
R_SYSTEM->PLLCCR2_b.PLLMUL = 0b00111; // PLL逓倍率 0b00111:8倍 (12MHz*8=96MHz)
R_SYSTEM->PLLCCR2_b.PLODIV = 0b01; // PLL分周比 0b01:2分周 0b10:4分周 (96MHz/2=48MHz)
delayMicroseconds(5); // PLL設定後の待機時間(1us以上,マージン含め5us)
R_SYSTEM->PLLCR_b.PLLSTP = 0; // 0:PLL動作 1:PLL停止
while ( R_SYSTEM->OSCSF_b.PLLSF == 0 ); // PLLクロック安定(PLLSF=1)まで待機
R_SYSTEM->SCKSCR_b.CKSEL = 0b101; // PLLクロック選択
R_SYSTEM->PRCR = 0xA500; //プロテクト有効
}