1、RH850时钟源及配置

一、时钟源

系统时钟源有5种:

外部主晶振8M-24M。(main osc)

外部副晶振32.768KHz。 (sub osc)

内部高速晶振8M。(high speed int osc)

内部低速晶振240KHz。(low speed int osc)

PLL倍频器。

Note 1. 外部副晶振只有 144 pin and 176 pin产品有。

时钟源如下图:

 

1、RH850时钟源及配置_第1张图片

  1. 隔离时钟域(ISO Clock domains)是可以关闭的时钟系统。
  2. 常开时钟域(IAWO Clock domains)是不能关闭的时钟系统。

每个外设都有时钟选择寄存器选择需要的时钟。外设时钟这里不讨论。

 

二、时钟源相关的寄存器说明:

  技术规格书列出的时钟源寄存器:

1、RH850时钟源及配置_第2张图片

主晶振寄存器

2.1 MOSCE主晶振使能寄存器MainOSC Enable Register

1、RH850时钟源及配置_第3张图片

 

MOSCE主晶振使能寄存器可以32bit读写。地址:FFF8 1100H,复位值0000 0000H。

Bit position

Bit Name

Function

31 - 2

保留

 

1

MOSCDISTRG

0:无影响,1:禁止主晶振

0

MOSCENTRG

0:无影响,1:使能主晶振

MOSCDISTRG: MOSC Disable Trigger

MOSCENTRG: MOSC Enable Trigger

使用外部晶振,必须使能。MOSCENTRG = 1。

 

2.2 MOSCS主晶振状态寄存器MainOSC Status Register

1、RH850时钟源及配置_第4张图片

MOSCE主晶振状态寄存器只能32bit读。地址:FFF8 1104H,复位值0000 0000H。

Bit position

Bit Name

Function

31 - 3

保留

 

2

MOSCCLKACT

0:主晶振没有工作,1:主晶振工作正常

1、0

保留

 

 

MOSCCLKACT: MOSC Clock Acative

这个bit判断主晶振是否正常工作。

 

2.3 MOSCC主晶振控制寄存器MainOSC Control Register

1、RH850时钟源及配置_第5张图片

MOSCC主晶振控制寄存器可以32bit读写。地址:FFF8 1108H,复位值0000 0004H。

Bit position

Bit Name

Function

31 - 2

保留

 

1、0

MOSC

AMPSEL[1:0]

主时钟频率选择:

00:  20M

01:  16M

10:  8M

11:  8M

 

AMPSEL[1:0]选择主晶振频率。按外接晶振频率设置即可。

 

2.4 MOSCST主晶振稳定延时寄存器MainOSC Stabilization Time Register

1、RH850时钟源及配置_第6张图片

MOSCST主晶振稳定延时寄存器可以32bit读写。地址:FFF8 110CH,复位值0000 44C0H。

Bit position

Bit Name

Function

31 - 17

保留

 

16 - 0

MOSC

CLKST[16:0]

主时钟稳定时间寄存器,这个时间是上电到主时钟稳定的时间设置。只有主时钟稳定了,才能切换到外部主时钟。

  1. 如果内部高速晶振使能了,稳定时间是MOSCCLKST/frh。
  2. 如果内部高速晶振不使能,稳定时间是MOSCCLKST/frl。

 

2.5 MOSCSTPM主晶振停止屏蔽寄存器MainOSC Stop Mask Register

1、RH850时钟源及配置_第7张图片

MOSCSTPM主晶振停止屏蔽寄存器可以32bit读写。地址:FFF8 1118H,复位值0000 0002H。

Bit position

Bit Name

Function

31 - 1

保留

 

0

MOSCSTPMSK

0:待机模式主晶振停止

1:待机模式主晶振工作

副晶振寄存器

2.6 SOSCE 副晶振使能寄存器— SubOSC Enable Register

功能同主晶振使能寄存器

2.7 SOSCS副晶振状态寄存器— SubOSC Status Register

功能同主晶振状态寄存器

2.8 SOSCST副晶振稳定延时寄存器 — SubOSC Stabilization Time Register

功能同主晶振稳定延时寄存器

 

内置振荡器寄存器

2.9 ROSCE内置振荡器使能寄存器— HS IntOSC Enable Register

功能同主晶振使能寄存器,只有禁止功能,没有使能功能。

2.10 ROSCS 内置振荡器状态寄存器— HS IntOSC Status Register

功能同主晶振状态寄存器

2.11 ROSCSTPM内置振荡器停止屏蔽寄存器 — HS IntOSC Stop Mask Register

功能同主晶振停止屏蔽寄存器

 

PLL倍频器寄存器

2.12 PLLE PLL使能寄存器 — PLL Enable Register

功能同主晶振使能寄存器

2.13 PLLS PLL状态寄存器— PLL Status Register

功能同主晶振状态寄存器

 

2.14 PLLC  PLL控制寄存器— PLL Control Register

1、RH850时钟源及配置_第8张图片

 

Bit position

Bit Name

Function

31 - 17

保留

 

16

OUTBSEL

fCPLLCLK选择

0:和fPPLLCLK相同

1:fVCOOUT / 5

15 - 13

保留

 

12,11

M[1:0]

M1  M0  Mr-Value  MainOSC frequency fX

0   0    1        8 MHz ≤ fX ≤ 24 MHz

0   1    2        16 MHz ≤ fX ≤ 24 MHz 

1   0    3        fX = 24 MHz

1   1             禁止设置

10 - 8

PA[2:0]

PA[2:0]  Par-Value   PLL output frequency range

000     禁止设置     /   

001     禁止设置     /   

010      4           60 MHz to 80 MHz

011      6           40 MHz to 80 MHz

100      8           30 MHz to 60 MHz

101      16           25 MHz to 30 MHz

110     禁止设置     /   

111     禁止设置     /

7,6

保留

 

5-0

N[5:0]

设置分流比Nr

For N[5:0] example settings, see Table 10.16, PLL Output Table.

 

PLL以上几个参数的配置,技术规格书给出了表格,只要查询就可以得到。以下是主晶振16MHz的表格,其他表格对应查找即可。

 

Table 10.16, PLL Output Table

1、RH850时钟源及配置_第9张图片

采用16M外部晶振,PLL输出主频80M。所以配置PLL控制寄存器配置为:

OUTBSEL = 0;Mr = 2;Par=4;N5-N0 = 100111 = 0x27。

Mr=2,所以配置M1 M0 = 01。

Par = 4,所以配置PA[2:0] = 010。

所以PLLC = 0000 1010 0010 0111b = 0A27H。

 

配置例程:

/*写保护寄存器*/

void protected_write(unsigned int  pro_ reg, unsigned  int pro_status, unsigned  int reg, unsigned  int  value)   

{

Do

{

       pro_ reg = 0xa5;

       reg = value;

       reg = ~value;

       reg = value;

} while(pro_status ==1u)

 }

 

void Init_Clocks(void)

{

/*配置主晶振 16M*/

if((MOSCS&0x04u) != 0x4u)   /* 检测MainOsc 有没有启动 */

       {

MOSCC=0x06;  /* 10B,(8MHz < MOSC frequency =< 16MHz) */

            MOSCST=0x8000;  /* 设置稳定延时时间(8,19 ms) */

protected_write(PROTCMD0,PROTS0,MOSCE,0x01u);  /* MOSCE=0x01,使能主晶振*/

while ((MOSCS&0x04u) != 0x04u); /* 等待MainOSC正常工作 */

}

/*配置PLL 80M*/

if((PLLS&0x04u) != 0x04u)  /* 检测PLL有没有启动 */

{

PLLC=0x00000a27u;  /* 配置PLL控制寄存器,主晶振 16M,CPLLOUT,PPLLOUT输出80M,数据来源见前面分析*/

protected_write(PROTCMD1,PROTS1,PLLE,0x01u);  /*使能 PLL */

while((PLLS&0x04u) != 0x04u)   /*等待 PLL正常工作 */

}

/*配置CPU时钟80M*/

protected_write(PROTCMD1,PROTS1,CKSC_CPUCLKD_CTL,0x01u); /*CPU时钟不分频,80M */

  while(CKSC_CPUCLKD_ACT!=0x01u);

protected_write(PROTCMD1,PROTS1,CKSC_CPUCLKS_CTL,0x03u); /*CPU时钟源选择,BIT1-0, 3-PLL输出CPLLCLK*/

while(CKSC_CPUCLKS_ACT!=0x03u); /*等待 CPU时钟正常工作 */

}

 

程序经实测CPU工作频率80M。

 

 

 

 

你可能感兴趣的:(RH850_车规级MCU介绍,单片机,嵌入式硬件)