芯片测试项目SOSC_test
时间: 2023-08-13 20:08:56 浏览: 41
SOSC_test 是一个芯片测试项目,它的作用是测试芯片中的辅助时钟(Secondary Oscillator)是否能够正常工作。在测试过程中,会通过检测辅助时钟的频率和相位,来判断辅助时钟是否正常。测试通过的标准是辅助时钟的频率和相位应该符合预期值,并且不应该存在时钟漂移等异常情况。这个测试项目通常会被用于芯片的生产线测试和质量控制等场景。SOSC_test 主要用于检测芯片的低功耗时钟是否正常,它通常用于一些需要长时间待机或者低功耗应用的场景。
相关问题
void SOSC_init_8MHz(void) { SCG->SOSCDIV = 0x00000101; /* SOSCDIV1 & SOSCDIV2 =1: divide by 1 */ SCG->SOSCCFG = 0x00000024; /* Range=2: Medium freq (SOSC between 1MHz-8MHz)*/ // SCG->SOSCCFG = 0x00000034; /* Range=3: High freq (SOSC between 8MHz-40MHz)*/ /* 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 */ }
这段代码是用来初始化系统时钟的。它使用了片上系统时钟(SOSC)和系统锁相环(SPLL)来生成一个160MHz的时钟信号。
首先,`SOSC_init_8MHz`函数初始化了片上系统时钟。通过设置`SCG->SOSCDIV`将SOSCDIV1和SOSCDIV2都设置为1,表示不进行分频。然后,通过设置`SCG->SOSCCFG`的Range字段为2,选择了中频范围(1MHz-8MHz)。接下来,解锁`SCG->SOSCCSR`,将其设置为0x00000001,使得SOSCCSR可以被写入。然后,等待`SCG->SOSCCSR`的SOSCVLD字段为1,表示系统时钟已经有效。
接下来,`SPLL_init_160MHz`函数初始化了系统锁相环。首先,解锁`SCG->SPLLCSR`,将其设置为0x00000000,将SPLLEN字段置为0,禁用SPLL。然后,设置`SCG->SPLLDIV`将SPLLDIV1设置为2,SPLLDIV2设置为4,进行分频。接着,设置`SCG->SPLLCFG`的PREDIV字段为0,将SOSC_CLK除以1。最后,再次解锁`SCG->SPLLCSR`,将其设置为0x00000001,使得SPLLCSR可以被写入。然后,等待`SCG->SPLLCSR`的SPLLVLD字段为1,表示系统锁相环已经有效。
综上所述,这段代码的作用是将片上系统时钟和系统锁相环配置为特定的频率,以生成一个160MHz的时钟信号。
S32K144 RTC时钟源
根据提供的引用内容,S32K144 RTC的时钟源可以是系统时钟发生器(SCG)模块提供的SPLL输出时钟或SCG参考时钟(SIRC、FIRC和SOSC)。系统时钟发生器(SCG)模块还支持外部晶体、陶瓷谐振器或其他外部时钟源产生的外部参考时钟作为RTC的时钟源。具体的代码实现可以通过调用相应的API函数来初始化时钟和选择RTC的时钟源。例如,可以使用RTC_DRV_Init函数来初始化RTC实例,并使用RTC_DRV_SetTimeDate函数设置时间和日期。另外,还可以使用CLOCK_SYS_Init和CLOCK_SYS_UpdateConfiguration函数来初始化时钟并更新时钟配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [S32K144之SDK版:RTC时钟应用](https://blog.csdn.net/balance_c/article/details/123638339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [S32K144之时钟](https://blog.csdn.net/m0_38012497/article/details/127717902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)