PLL锁相环时钟设定

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PLL锁相环时钟设定
PLL锁相环时钟设定
未配置锁相环时(OSCCLK_PLLSEL=0):
总线频率=外部晶振频率(OSCCLK)/2
配置锁相环时(OSCCLK_PLLSEL=1): 系统时钟由锁相环提供,总线频率=倍频后频率(PLLCLK)/2
时钟频率计算⽅法
Fvco=2*Fosc*(SYNDIN+1)/(REFDIV+1)
Fpll=Fvco/(2*POSTDIV)当POSTDIV=0时,Fpll=Fvco
Fbus=Fpll/2
CRGFLG_LOCK==1时,说明PLLCLK稳定,可输出。

锁相环从设定到稳定需要时间,故期间应加⼏条空语句。

例程:
void CLK_Init(void) {
CLKSEL=0x00; //选择OSCCLK为系统时钟源16M PLLCTL_PLLON=1; //开启锁相环,锁相环电路允许
//频率设定80M时
SYNR = 0xc0 | 0x09;
REFDV = 0x80 | 0x01;
POSTDIV = 0x00; // PLLCLOCK=2*osc*(1+SYNR)/(1+REFDV)=160MHz; _asm(nop);_asm(nop);
while(!CRGFLG_LOCK); // 时钟频率已稳定,锁相环频率锁定CLKSEL_PLLSEL=1; //使能锁相环时钟
}
PWM模块
PWME:PWM允许寄存器,置1时允许输出。

PWMPOL:极性寄存器。

置1时⾸先输出⾼电平。

2、3、6、7、置1时clock SB 作为时钟源,置0时clock B作为时钟源
PWMCAE:居中对齐允许寄存器,只有当通道输出禁⽌时才能设置此寄存器置1时为居中对齐,置0时左对齐
PWMSCLA:⽐例因⼦寄存器A;⽤于提供clock SA的⽐例因⼦
Clock SA的时钟频率= clock A/(2*PWMSCLA)当PWMSCLA为0时⽐例因⼦默认为256. CLOCKSB 计算⽅法类似,寄存器为PWMSCLB。

PWMCNTx:通道计数寄存器,⼀般设置值为0x00;
PWMPERx:周期寄存器;
左对齐时周期计算⽅法:PWMxPeriod=指定时钟周期乘以PWMPERx的值居中对齐时=指定时钟周期乘PWMPERx的值再乘2;
PWMDTYx:占空⽐寄存器。

占空⽐计算⽅法:极性为1时:Duty Cycle=PWMDTYx/PWMPERx*100%
极性为0时(PWMPERx-PWMDTYx)/PWMPERx
例程
void PWM_128init(void)
{
PWMPRCLK=0x00; //ClockA and ClockB等于总线时钟80M
PWMCLK=0xc2; //通道7、1选择SB、SA时钟源,通道5,3选择A,B时钟源PWMSCLB=0x14; //SB时钟源为40分频为2M PWMSCLA=0x14; //SA时钟源2M;
PWMCTL=0xf0; //级联67 级联45 级联23 级联01
PWMCAE=0x00; //pwm左对齐输出
PWMCNT01=0;
PWMCNT23=0;
PWMCNT45=0;
PWMCNT67=0;
PWMPOL=0XFF; //初始输出⾼电平
PWMPER67 = 40000; //67通道输出50HZ的频率2M/40000
PWMPER45 = 8000; //45通道输出10k频率80M/8000
PWMPER23 = 8000; //23通道输出10k频率80M/8000
PWMPER01=40000;
PWMDTY67 = 2800; //67通道初始PWM⾼电平时间为1.5ms
PWMDTY45 = 2000; //45 通道初始占空⽐0%
PWMDTY23 =2000; //23通道初始占空⽐0
PWMDTY01=3000;
PWME=0XAA; //7,5,3,1通道使能
}
SPI模块
五、SPIDR 数据寄存器
SPI数据寄存器是SPI数据的输⼊和输出寄存器,写该寄存器会允许⼀个字节进⼊队列并发送。

如果SPI被配置成主机,当前⾯的数据发送完成,排在队列的数据会⽴即被发送。

SPISR寄存器中的发送空标志SPTEF表明SPI数据寄存器准备接收新的数据。

当SPIF=1时SPIDR中接收的数据是有效的。

SPI的编程⽅法:
1、初始化:设置控制寄存器SPICR1、SPICR2,及波特率寄存器SPIBR。

在此设
定SPI的⼯作⽅式,时钟极性,时钟相位,及各种中断允许等。

2、发送与接收数据的编写:作为主机⽅,只要将数据写⼊SPIDR,然后检查SPISR
的SPTEF位,若为1,则表⽰数据已经发送出去。

若同时接收对⽅送来的数据,则接着检查SPISR的SPIF位,若为1,则表⽰要接的数据已经进⼊数据寄存器,可以取出了。

SCI模块
SCI模块复⽤PS⼝的4个引脚,(0~3)作为RXD、TXD、RXD1、TXD1. SCI波特率寄存器(SCIBDH和SCIBDL)
SCI波特率=SCI模块时钟/(16*寄存器的值)。

相关文档
最新文档