S32K144EVB的學(xué)習(xí)歷程(二)

本文簡(jiǎn)介

本文主要詳細(xì)敘述了 S32K144 的時(shí)鐘模塊相關(guān)內(nèi)容辜腺。本文代碼包含以下內(nèi)容:

  1. 一般的時(shí)鐘初始化流程
  2. LPIT 通道計(jì)數(shù)器設(shè)置

時(shí)鐘結(jié)構(gòu)圖

在看代碼之前,首先要熟悉時(shí)鐘系統(tǒng)趁舀,下圖為本程序所用到的時(shí)鐘和模塊示意圖凯旭。

可以看到外部晶振輸入 XTAL(External Crystal Oscillator) 和震蕩器 OSC(System Oscillator) 相連坯墨,產(chǎn)生了一個(gè)時(shí)鐘信號(hào)為 SOSC_CLK 該信號(hào)被 SCG_SOSCDIV 分頻成為兩個(gè) SOSC_DIV1_CLKSOSC_DIV2_CLK 時(shí)鐘信號(hào)。SOSC_CLK 又被鎖相環(huán) PLL 升頻到 SPLL_CLK 信號(hào)权逗,SPLL_CLKSCG_SPLLDIV 分頻得到 SPLL_DIV1_CLK 或者得到 SPLL_DIV2_CLK美尸。

FIRC(Fast Internal Reference Clock) 產(chǎn)生一個(gè) 48HMz 的時(shí)鐘 FIRC_CLK, SIRC(Slow Internal Reference Clock) 產(chǎn)生一個(gè) 8MHz 的信號(hào) SIRC_SLK, FIRC_CLKSIRC_SLKSPLL_CLKSOSC_CLKSCG_RCCR[SCS] 選擇器選擇信號(hào)冤议,使用 DIVCORE 分頻得到 CORE_CLK,SYSCLK ;使用 DIVBUS 分頻得到 BUS_CLK 师坎,使用 DIVSLOW 分頻得到 FLASH_CLKSCG_SLOW_CLK 在這個(gè)地方恕酸,分頻器的倍率選擇是有要求的:

主要是由于結(jié)構(gòu)限制導(dǎo)致的。注意在設(shè)置分頻器的時(shí)候胯陋,請(qǐng)?jiān)跁r(shí)鐘源開(kāi)啟前進(jìn)行蕊温,否則無(wú)法改變,分頻器在時(shí)鐘開(kāi)啟后才會(huì)被改變其值遏乔。

Manual上關(guān)于該芯片的時(shí)鐘模塊描述:

1. 系統(tǒng)時(shí)鐘發(fā)生器 System clock generator (SCG)

系統(tǒng)時(shí)鐘發(fā)生器(下稱(chēng) SCG )給單片機(jī)提供了不同的時(shí)鐘源义矛,包含三個(gè)時(shí)鐘分支:

  • SPLL(System Phase-locked Loop) 系統(tǒng)鎖相環(huán),一個(gè)壓控震蕩器盟萨。在其他地方也被稱(chēng)作 PLL
    • 電壓控制振蕩器 VCO(Voltage-controlled oscillator)
    • 外部參考時(shí)鐘是鎖相環(huán)的時(shí)鐘源
    • 模數(shù) VCO 分頻器
    • 相位/頻率探測(cè)器
    • 可以被選做單片機(jī)的系統(tǒng)時(shí)鐘源
    • 雙路可編程控制的時(shí)鐘輸出凉翻,可以提供給片內(nèi)外圍器件時(shí)鐘源
  • FIRC/SIRC(Fast/Slow Internal Reference Clock) 兩個(gè)內(nèi)部參考時(shí)鐘 IRC 發(fā)生器:
    • 快速內(nèi)部參考時(shí)鐘 FIRC 可以程序控制高/低頻率范圍, 高為 48Mhz。
    • 快速內(nèi)部參考時(shí)鐘 FIRC 和慢速內(nèi)部參考時(shí)鐘 SIRC 都可以被選做單片機(jī)的系統(tǒng)時(shí)鐘源
  • SOSC(System Crystal Oscillator) 系統(tǒng)晶振振蕩器鸯旁,在其他地方也被稱(chēng)作 OSC
    • 被當(dāng)做系統(tǒng) PLL 的時(shí)鐘源
    • 可以被當(dāng)做單片機(jī)的時(shí)鐘源

注意:

  1. SPLL噪矛,SOSC 時(shí)鐘可以被時(shí)鐘監(jiān)測(cè)器檢測(cè)量蕊,提供重啟和中斷請(qǐng)求铺罢。
  2. SPLL 可以被鎖定監(jiān)測(cè)器檢測(cè),提供中斷請(qǐng)求残炮。
  3. 每一個(gè)時(shí)鐘源都有一個(gè)參考分頻器韭赘,給片內(nèi)模塊和外圍器件提供分頻功能,故時(shí)鐘名中都有 DIV 势就,譬如:
    • SPLLDIV1_CLK / SPLLDIV2_CLK
    • FIRCDIV1_CLK / SCG_FIRCDIV2_CLK
    • SIRCDIV1_CLK / SIRCDIV2_CLK
    • SOSCDIV1_CLK / SOSCDIV2_CLK

2. 低功率振蕩器 Low Power Oscillator (LPO)

一個(gè)內(nèi)部的低功率時(shí)鐘泉瞻,可以給工作在低功率模式下的器件提供時(shí)鐘源。

3. 外圍時(shí)鐘控制器 Peripheral Clock Control (PCC)

在上一節(jié)詳細(xì)介紹過(guò)這個(gè)控制器苞冯,用于控制大多數(shù)器件的時(shí)鐘選擇袖牙。

代碼

 * hello_clocks.c              Copyright NXP 2016
 * Description: Example clock and LPIT channel initializations
 * 2016 Mar 04 S Mihalik - Initial version
 * 2016 Oct 27 SM - Updated for new header files in S32DS v 1.3

#include "S32K144.h"            /* include peripheral declarations S32K144 */
#include "clocks_and_modes.h"

int lpit0_ch0_flag_counter = 0; /* LPIT0 timeout counter */

void PORT_init (void) {
  PCC-> PCCn[PCC_PORTD_INDEX] = PCC_PCCn_CGC_MASK; /* Enable clock for PORT D */
  PTD->PDDR |= 1<<0;            /* Port D0:  Data Direction= output */
  PORTD->PCR[0] =  0x00000100;  /* Port D0:  MUX = ALT1, GPIO (to blue LED on EVB) */
}
void LPIT0_init (void) {
  PCC->PCCn[PCC_LPIT_INDEX] = PCC_PCCn_PCS(6);    /* Clock Src = 6 (SPLL2_DIV2_CLK)*/
  PCC->PCCn[PCC_LPIT_INDEX] |= PCC_PCCn_CGC_MASK; /* Enable clk to LPIT0 regs */
  LPIT0->MCR = 0x00000001;    /* DBG_EN-0: Timer chans stop in Debug mode */
                              /* DOZE_EN=0: Timer chans are stopped in DOZE mode */
                              /* SW_RST=0: SW reset does not reset timer chans, regs */
                              /* M_CEN=1: enable module clk (allows writing other LPIT0 regs) */
  LPIT0->TMR[0].TVAL = 40000000;    /* Chan 0 Timeout period: 40M clocks */
  LPIT0->TMR[0].TCTRL = 0x00000001; /* T_EN=1: Timer channel is enabled */
                              /* CHAIN=0: channel chaining is disabled */
                              /* MODE=0: 32 periodic counter mode */
                              /* TSOT=0: Timer decrements immediately based on restart */
                              /* TSOI=0: Timer does not stop after timeout */
                              /* TROT=0 Timer will not reload on trigger */
                              /* TRG_SRC=0: External trigger soruce */
                              /* TRG_SEL=0: Timer chan 0 trigger source is selected*/
}

void SOSC_init_8MHz(void) {
  SCG->SOSCDIV=0x00000101;  /* SOSCDIV1 & SOSCDIV2 =1: divide by 1 */
  SCG->SOSCCFG=0x00000024;  /* Range=2: Medium freq (SOSC betw 1MHz-8MHz)*/
                            /* HGO=0:   Config xtal osc for low power */
                            /* EREFS=1: Input is external XTAL */
  while(SCG->SOSCCSR & SCG_SOSCCSR_LK_MASK); /* Ensure SOSCCSR unlocked */
  SCG->SOSCCSR=0x00000001;  /* LK=0:          SOSCCSR can be written */
                            /* SOSCCMRE=0:    OSC CLK monitor IRQ if enabled */
                            /* SOSCCM=0:      OSC CLK monitor disabled */
                            /* SOSCERCLKEN=0: Sys OSC 3V ERCLK output clk disabled */
                            /* SOSCLPEN=0:    Sys OSC disabled in VLP modes */
                            /* SOSCSTEN=0:    Sys OSC disabled in Stop modes */
                            /* SOSCEN=1:      Enable oscillator */
  while(!(SCG->SOSCCSR & SCG_SOSCCSR_SOSCVLD_MASK)); /* Wait for sys OSC clk valid */
}

void SPLL_init_160MHz(void) {
  while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); /* Ensure SPLLCSR unlocked */
  SCG->SPLLCSR = 0x00000000;  /* SPLLEN=0: SPLL is disabled (default) */
  SCG->SPLLDIV = 0x00000302;  /* SPLLDIV1 divide by 2; SPLLDIV2 divide by 4 */
  SCG->SPLLCFG = 0x00180000;  /* PREDIV=0: Divide SOSC_CLK by 0+1=1 */
                              /* MULT=24:  Multiply sys pll by 4+24=40 */
                              /* SPLL_CLK = 8MHz / 1 * 40 / 2 = 160 MHz */
  while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); /* Ensure SPLLCSR unlocked */
  SCG->SPLLCSR = 0x00000001; /* LK=0:        SPLLCSR can be written */
                             /* SPLLCMRE=0:  SPLL CLK monitor IRQ if enabled */
                             /* SPLLCM=0:    SPLL CLK monitor disabled */
                             /* SPLLSTEN=0:  SPLL disabled in Stop modes */
                             /* SPLLEN=1:    Enable SPLL */
  while(!(SCG->SPLLCSR & SCG_SPLLCSR_SPLLVLD_MASK)); /* Wait for SPLL valid */
}

void NormalRUNmode_80MHz (void) {  /* Change to normal RUN mode with 8MHz SOSC, 80 MHz PLL*/
  SCG->RCCR=SCG_RCCR_SCS(6)      /* PLL as clock source*/
    |SCG_RCCR_DIVCORE(0b01)      /* DIVCORE=1, div. by 2: Core clock = 160/2 MHz = 80 MHz*/
    |SCG_RCCR_DIVBUS(0b01)       /* DIVBUS=1, div. by 2: bus clock = 40 MHz*/
    |SCG_RCCR_DIVSLOW(0b10);     /* DIVSLOW=2, div. by 2: SCG slow, flash clock= 26 2/3 MHz*/
  while (((SCG->CSR & SCG_CSR_SCS_MASK) >> SCG_CSR_SCS_SHIFT ) != 6) {}
                                 /* Wait for sys clk src = SPLL */
}

void WDOG_disable (void){
    WDOG->CNT=0xD928C520;   /*Unlock watchdog*/
    WDOG->TOVAL=0x0000FFFF; /*Maximum timeout value*/
    WDOG->CS = 0x00002100;  /*Disable watchdog*/
}


int main(void) {
  WDOG_disable();
  PORT_init();            /* Configure ports */
  SOSC_init_8MHz();       /* Initialize system oscilator for 8 MHz xtal */
  SPLL_init_160MHz();     /* Initialize SPLL to 160 MHz with 8 MHz SOSC */
  NormalRUNmode_80MHz();  /* Init clocks: 80 MHz sysclk & core, 40 MHz bus, 20 MHz flash */
  LPIT0_init();           /* Initialize PIT0 for 1 second timeout  */

  for (;;) {                     /* Toggle output to LED every LPIT0 timeout */
    while (0 == (LPIT0->MSR & LPIT_MSR_TIF0_MASK)) {} /* Wait for LPIT0 CH0 Flag */
    lpit0_ch0_flag_counter++;         /* Increment LPIT0 timeout counter */
    PTD->PTOR |= 1<<0;                /* Toggle output on port D0 (blue LED) */
    LPIT0->MSR |= LPIT_MSR_TIF0_MASK; /* Clear LPIT0 timer flag 0 */
  }
}

代碼詳解

老樣子,還是從 main() 內(nèi)開(kāi)始:

PORT_init();    /* Configure ports */

這一行用于初始化端口舅锄,函數(shù)內(nèi)部打開(kāi) CGC鞭达,配置 GPIO ,設(shè)置 PCR MUX 和被動(dòng)濾波。由于第一節(jié)已經(jīng)有了詳細(xì)介紹皇忿,在這里不做過(guò)多描述畴蹭。

SOSC_init_8MHz();   /* Initialize system oscilator for 8 MHz xtal */
SPLL_init_160MHz(); /* Initialize SPLL to 160 MHz with 8 MHz SOSC */
NormalRUNmode_80MHz();  /* Init clocks: 80 MHz sysclk & core, 40 MHz bus, 20 MHz flash */

這三個(gè)放在一起,因?yàn)樗麄兌加玫搅艘粋€(gè)指針來(lái)進(jìn)行修改鳍烁,這個(gè)指針就是 SCG , 在頭文件中 SCG 有以下的含義:

/** SCG - Register Layout Typedef */
typedef struct {
  __I  uint32_t VERID;                             /**< Version ID Register, offset: 0x0 */
  __I  uint32_t PARAM;                             /**< Parameter Register, offset: 0x4 */
       uint8_t RESERVED_0[8];
  __I  uint32_t CSR;                               /**< Clock Status Register, offset: 0x10 */
  __IO uint32_t RCCR;                              /**< Run Clock Control Register, offset: 0x14 */
  __IO uint32_t VCCR;                              /**< VLPR Clock Control Register, offset: 0x18 */
  __IO uint32_t HCCR;                              /**< HSRUN Clock Control Register, offset: 0x1C */
  __IO uint32_t CLKOUTCNFG;                        /**< SCG CLKOUT Configuration Register, offset: 0x20 */
       uint8_t RESERVED_1[220];
  __IO uint32_t SOSCCSR;                           /**< System OSC Control Status Register, offset: 0x100 */
  __IO uint32_t SOSCDIV;                           /**< System OSC Divide Register, offset: 0x104 */
  __IO uint32_t SOSCCFG;                           /**< System Oscillator Configuration Register, offset: 0x108 */
       uint8_t RESERVED_2[244];
  __IO uint32_t SIRCCSR;                           /**< Slow IRC Control Status Register, offset: 0x200 */
  __IO uint32_t SIRCDIV;                           /**< Slow IRC Divide Register, offset: 0x204 */
  __IO uint32_t SIRCCFG;                           /**< Slow IRC Configuration Register, offset: 0x208 */
       uint8_t RESERVED_3[244];
  __IO uint32_t FIRCCSR;                           /**< Fast IRC Control Status Register, offset: 0x300 */
  __IO uint32_t FIRCDIV;                           /**< Fast IRC Divide Register, offset: 0x304 */
  __IO uint32_t FIRCCFG;                           /**< Fast IRC Configuration Register, offset: 0x308 */
       uint8_t RESERVED_4[756];
  __IO uint32_t SPLLCSR;                           /**< System PLL Control Status Register, offset: 0x600 */
  __IO uint32_t SPLLDIV;                           /**< System PLL Divide Register, offset: 0x604 */
  __IO uint32_t SPLLCFG;                           /**< System PLL Configuration Register, offset: 0x608 */
} SCG_Type, *SCG_MemMapPtr;

/** Peripheral SCG base address */
#define SCG_BASE    (0x40064000u)
/** Peripheral SCG base pointer */
#define SCG    ((SCG_Type *)SCG_BASE)

這是一個(gè)相當(dāng)龐大的結(jié)構(gòu)叨襟,翻閱 Manual 瞅一瞅各個(gè)小寄存器吧。

Register name Width
(in bits)
Access
Version ID Register (SCG_VERID) 32 R
Parameter Register (SCG_PARAM) 32 R
Clock Status Register (SCG_CSR) 32 R
Run Clock Control Register (SCG_RCCR) 32 RW
VLPR Clock Control Register (SCG_VCCR) 32 RW
HSRUN Clock Control Register (SCG_HCCR) 32 RW
SCG CLKOUT Configuration Register (SCG_CLKOUTCNFG) 32 RW
System OSC Control Status Register (SCG_SOSCCSR) 32 RW
System OSC Divide Register (SCG_SOSCDIV) 32 RW
System Oscillator Configuration Register (SCG_SOSCCFG) 32 RW
Slow IRC Control Status Register (SCG_SIRCCSR) 32 RW
Slow IRC Divide Register (SCG_SIRCDIV) 32 RW
Slow IRC Configuration Register (SCG_SIRCCFG) 32 RW
Fast IRC Control Status Register (SCG_FIRCCSR) 32 RW
Fast IRC Divide Register (SCG_FIRCDIV) 32 RW
Fast IRC Configuration Register (SCG_FIRCCFG) 32 RW
System PLL Control Status Register (SCG_SPLLCSR) 32 RW
System PLL Divide Register (SCG_SPLLDIV) 32 RW
System PLL Configuration Register (SCG_SPLLCFG) 32 RW

Version ID Register (SCG_VERID)

Field Name Description
VERSION SCG Version Number SCG 的版本號(hào)

Parameter Register (SCG_PARAM)

  • 寫(xiě)入會(huì)導(dǎo)致錯(cuò)誤幔荒。

字面意思是參數(shù)寄存器糊闽,其中 32 位的定義如下:

Field Name Description
31-27 DIVPRES 指示現(xiàn)在的 SCG 分頻器使用狀態(tài)
DIVPRES[27]=1 DIVSLOW 正在被使用
DIVPRES[28]=1 DIVBUS 正在被使用
DIVPRES[31]=1 DIVCORE 正在被使用
7-0 CLKPRES 指示當(dāng)前狀態(tài)下哪個(gè)時(shí)鐘正在被當(dāng)做 SCG 時(shí)鐘源
CLKPRES[0] Reserved
CLKPRES[1]=1 System OSC (SOSC) 正在被使用
CLKPRES[2]=1 Slow IRC (SIRC) 正在被使用
CLKPRES[3]=1 Fast IRC (FIRC) 正在被使用
CLKPRES[6]=1 System PLL (SPLL) 正在被使用

Clock Status Register (SCG_CSR)

  • 寫(xiě)入會(huì)導(dǎo)致錯(cuò)誤梳玫。

這個(gè)寄存器返回當(dāng)前的系統(tǒng)時(shí)鐘源和系統(tǒng)時(shí)鐘分頻器配置,鏡像 SCG_RCCR, SCG_VCCR, SCG_HCCR 三個(gè)時(shí)鐘控制器其中之一的配置右犹。

Field Name Description
27-24 SCS 返回當(dāng)前配置的系統(tǒng)時(shí)鐘發(fā)生器來(lái)源
0001 System OSC (SOSC_CLK)
0010 Slow IRC (SIRC_CLK)
0011 Fast IRC (FIRC_CLK)
0110 System PLL (SPLL_CLK)
其余的值無(wú)效
19-16 DIVCORE 指示現(xiàn)在的核心時(shí)鐘分頻比率
* 若 SPLL 被選做時(shí)鐘源汽纠,則最大比率是 4
分頻比率 = DIVCORE+1
7-4 DIVBUS 返回現(xiàn)在的總線(xiàn)(BUS)時(shí)鐘分頻比率
分頻比率 = DIVBUS+1
3-0 DIVSLOW 返回現(xiàn)在的慢速時(shí)鐘分頻比率
分頻比率 = DIVSLOW+1

Run Clock Control Register (SCG_RCCR)

這個(gè)寄存器給核心,平臺(tái)傀履,外圍虱朵,總線(xiàn)控制系統(tǒng)時(shí)鐘源和系統(tǒng)時(shí)鐘分頻器,只在 Run 模式下起作用钓账,這個(gè)寄存器寫(xiě)入的時(shí)候只能一次寫(xiě)入 32 位碴犬。在 Run 模式下選擇一個(gè)不同的時(shí)鐘源需要時(shí)鐘源在系統(tǒng)時(shí)鐘調(diào)整到時(shí)鐘源前就要開(kāi)啟并且保證有效。如果系統(tǒng)時(shí)鐘分頻器比率改變的同時(shí)選擇了一個(gè)不同的時(shí)鐘模式梆暮,則新的分頻器比率只有在新的時(shí)鐘源有效后才會(huì)發(fā)生改變服协。

寄存器見(jiàn) SCG_CSR

VLPR Clock Control Register (SCG_VCCR)

SCG_VCCR 控制的是 VLPR 模式下的啦粹,而不是 Run 模式下的偿荷,其他的寄存器地圖什么的和 SCG_RCCR 一樣。寫(xiě)入的時(shí)候只能一次寫(xiě)入 32 位唠椭。

寄存器見(jiàn) SCG_CSR跳纳。

HSRUN Clock Control Register (SCG_HCCR)

在 HSRUN 模式下的時(shí)鐘控制寄存器,同上贪嫂。

寄存器見(jiàn) SCG_CSR寺庄。

SCG CLKOUT Configuration Register (SCG_CLKOUTCNFG)

這個(gè)寄存器控制哪一個(gè) SCG 時(shí)鐘源被輸出到 CLKOUT 管腳。

Field Name Description
27-24 SCS 選擇 SCG 系統(tǒng)時(shí)鐘作為 CLKOUT
0001 System OSC (SOSC_CLK)
0010 Slow IRC (SIRC_CLK)
0011 Fast IRC (FIRC_CLK)
0110 System PLL (SPLL_CLK)
其余的值無(wú)效

System OSC Control Status Register (SCG_SOSCCSR)

這個(gè)寄存器控制 SCG 模塊中的 SOSC 工作狀態(tài)力崇。

Field Name Description
26 SOSCERR System OSC Clock Error
此位只能被單片機(jī)的上電復(fù)位重置斗塘,但是軟件也可以通過(guò)向此位寫(xiě)入 1 清零
0 SOSC 檢測(cè)器被關(guān)閉或者沒(méi)有檢測(cè)到錯(cuò)誤
1 SOSC 檢測(cè)器被開(kāi)啟并且檢測(cè)到一個(gè)錯(cuò)誤
25 SOSCSEL System OSC Selected 此位不可寫(xiě)入
0 SOSC 不是系統(tǒng)時(shí)鐘源
1 SOSC 是系統(tǒng)時(shí)鐘源
24 SOSCVLD System OSC Valid 此位不可寫(xiě)入
0 SOSC 無(wú)效或者沒(méi)有啟用
1 SOSC 有效并且輸出有效
23 LK Lock Register
此位可以在任何時(shí)候清零或者置 1
0 CSR 寄存器可以寫(xiě)入
1 CSR 寄存器不可以寫(xiě)入
17 SOSCCMRE System OSC Clock Monitor Reset Enable
SOSC 監(jiān)測(cè)器中斷/重置開(kāi)關(guān)
0 當(dāng)錯(cuò)誤被檢測(cè),監(jiān)測(cè)器產(chǎn)生中斷
1 當(dāng)錯(cuò)誤被檢測(cè)亮靴,監(jiān)測(cè)器產(chǎn)生重啟
16 SOSCCM System OSC Clock Monitor
SOSC 監(jiān)測(cè)器開(kāi)關(guān)
0 SOSC 監(jiān)測(cè)器關(guān)
1 SOSC 監(jiān)測(cè)器開(kāi)
0 SOSCEN System OSC Enable
SOSC 使能
0 SOSC 關(guān)
1 SOSC 開(kāi)

System OSC Divide Register (SCG_SOSCDIV)

這個(gè)寄存器控制兩個(gè)時(shí)鐘輸出馍盟,既可以用作外圍器件的功能時(shí)鐘,也可以作為時(shí)鐘模塊使用茧吊,每一路輸出都有分頻器提供分頻贞岭,應(yīng)該在 SOSC 被關(guān)閉的情況下更改該寄存器的值以避免輸出的值出現(xiàn)錯(cuò)誤。

Field Name Description
10-8 SOSCDIV2 System OSC Clock Divide 2
設(shè)置 SOSC 第二路輸出的分頻比率
分頻比率 = 2^(SOSCDIV2-1)
0 時(shí)關(guān)閉時(shí)鐘輸出
2-1 SOSCDIV1 System OSC Clock Divide 1
設(shè)置 SOSC 第一路輸出的分頻比率
分頻比率 = 2^(SOSCDIV1-1)
0 時(shí)關(guān)閉時(shí)鐘輸出

System Oscillator Configuration Register (SCG_SOSCCFG)

此寄存器控制振蕩器的工作狀態(tài)饱狂,在 SOSC 運(yùn)行的時(shí)候無(wú)法被寫(xiě)入曹步,強(qiáng)行寫(xiě)入會(huì)被忽略并不會(huì)報(bào)賦值錯(cuò)誤。

Field Name Description
5-4 RANGE System OSC Range Select
選擇 SOSC 外接晶振的頻率范圍
10 中頻 (4 MHz to 8MHz)
11 高頻 (8 MHz to 40 MHz)
3 HGO High Gain Oscillator Select
高增益振蕩器選擇
0 低增益運(yùn)行振蕩器
1 高增益運(yùn)行振蕩器
2 EREFS External Reference Select
外部參考時(shí)鐘選擇
0 外部參考時(shí)鐘
1 SOSC 內(nèi)部晶體振蕩器

Slow IRC Control Status Register (SCG_SIRCCSR)

Field Name Description
25 SIRCSEL Slow IRC Selected
選擇 SIRC 是否作為系統(tǒng)時(shí)鐘源
0 Slow IRC 是系統(tǒng)時(shí)鐘源
1 Slow IRC 不是系統(tǒng)時(shí)鐘源
24 SIRCVLD Slow IRC Valid
Slow IRC 有效位
0 Slow IRC 無(wú)效或者沒(méi)有啟動(dòng)
1 Slow IRC 啟動(dòng)并且有效
2 SIRCLPEN Slow IRC Low Power Enable
Slow IRC 低功率模式開(kāi)關(guān)
0 Slow IRC 在 VLP 模式不啟動(dòng)下
1 Slow IRC 在 VLP 模式下啟動(dòng)
1 SIRCSTEN Slow IRC Stop Enable
Slow IRC 停止模式開(kāi)關(guān)
0 Slow IRC 在 Stop modes 下不工作
1 Slow IRC 在 Stop modes 下工作
0 SIRCEN Slow IRC Enable
Slow IRC 使能
0 Slow IRC 關(guān)閉
1 Slow IRC 開(kāi)啟

Slow IRC Divide Register (SCG_SIRCDIV)

該寄存器控制 SIRC 的分頻器工作狀態(tài)休讳,請(qǐng)確保該寄存器在改變前讲婚,SIRC 是關(guān)閉著的,以防止出現(xiàn)錯(cuò)誤俊柔。

Field Name Description
10-8 SIRCDIV2 Slow IRC Clock Divide 2
提供給需要異步時(shí)鐘的模塊的分頻器 2
分頻比率 = 2^(SIRCDIV2-1)
0 時(shí)關(guān)閉時(shí)鐘輸出
2-0 SIRCDIV1 Slow IRC Clock Divide 1
提供給需要異步時(shí)鐘的模塊的分頻器 1
分頻比率 = 2^(SIRCDIV1-1)
0 時(shí)關(guān)閉時(shí)鐘輸出

Slow IRC Configuration Register (SCG_SIRCCFG)

此寄存器控制振蕩器的工作狀態(tài)筹麸,在 SIRC 運(yùn)行的時(shí)候無(wú)法被寫(xiě)入活合,強(qiáng)行寫(xiě)入會(huì)被忽略并不會(huì)報(bào)賦值錯(cuò)誤。

Field Name Description
0 RANGE Frequency Range
頻率范圍
0 Slow IRC low range clock (2 MHz)
1 Slow IRC high range clock (8 MHz)

剩余的 FIRC 跟這個(gè)差不多物赶,但是有一部分細(xì)微的變化白指,到用的時(shí)候請(qǐng)查詢(xún)對(duì)應(yīng)的用戶(hù)手冊(cè)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酵紫,一起剝皮案震驚了整個(gè)濱河市告嘲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奖地,老刑警劉巖橄唬,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異参歹,居然都是意外死亡仰楚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)犬庇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)僧界,“玉大人,你說(shuō)我怎么就攤上這事臭挽∥娼螅” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵埋哟,是天一觀(guān)的道長(zhǎng)笆豁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)赤赊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任煞赢,我火速辦了婚禮抛计,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘照筑。我一直安慰自己吹截,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布凝危。 她就那樣靜靜地躺著波俄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛾默。 梳的紋絲不亂的頭發(fā)上懦铺,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音支鸡,去河邊找鬼冬念。 笑死趁窃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的急前。 我是一名探鬼主播醒陆,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼裆针!你這毒婦竟也來(lái)了刨摩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤世吨,失蹤者是張志新(化名)和其女友劉穎码邻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體另假,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡像屋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了边篮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片己莺。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖戈轿,靈堂內(nèi)的尸體忽然破棺而出凌受,到底是詐尸還是另有隱情,我是刑警寧澤思杯,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布胜蛉,位于F島的核電站,受9級(jí)特大地震影響色乾,放射性物質(zhì)發(fā)生泄漏誊册。R本人自食惡果不足惜恐锦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一银舱、第九天 我趴在偏房一處隱蔽的房頂上張望漫拭。 院中可真熱鬧纵刘,春花似錦戈擒、人聲如沸赛惩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)局蚀。三九已至麦锯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琅绅,已是汗流浹背扶欣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宵蛀。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓昆著,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親术陶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凑懂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • fpga規(guī)范 工作過(guò)的朋友肯定知道,公司里是很強(qiáng)調(diào)規(guī)范的梧宫,特別是對(duì)于大的設(shè)計(jì)(無(wú)論軟件還是硬件)接谨,不按照規(guī)范走幾乎...
    Michael_Johnson閱讀 1,880評(píng)論 1 4
  • SPI通信實(shí)驗(yàn) SPI簡(jiǎn)介 串行外設(shè)接口(Serial Peripheral Interface Bus,SPI)...
    btskyrmb閱讀 9,385評(píng)論 1 12
  • 1 綜述 1.1 時(shí)鐘源 在STM32中塘匣,一共有5個(gè)時(shí)鐘源脓豪,分別是HSI、HSE忌卤、LSI扫夜、LSE、PLL驰徊。 HSI...
    hackvilin閱讀 3,415評(píng)論 0 6
  • 如果是含有門(mén)控時(shí)鐘的網(wǎng)絡(luò)也可以使用generated_clock來(lái)定義時(shí)鐘笤闯,如圖一所示帶有門(mén)控的時(shí)鐘網(wǎng)絡(luò),主時(shí)鐘為...
    罐頭說(shuō)閱讀 4,946評(píng)論 0 1
  • 一個(gè)26歲的交互設(shè)計(jì)師(正在找工作)棍厂。 既是缺點(diǎn)又是優(yōu)點(diǎn)的 1.偏內(nèi)向——不好:影響社交颗味,影響建立廣泛良好的人脈;...
    行者小一2008閱讀 229評(píng)論 0 0