dsPIC33FJ256GP710——弄懂时钟

本项目为- 老化车

先看系统时钟框图

振荡器系统框图

先研究两个振荡器配置寄存器

分别是:

  1.  FOSCSEL:振荡器源选择寄存器
  2.  FOSC:振荡器配置寄存器

他两的值可以从<bsp.c>文件中找到

/*
*********************************************************************************************************
*                                       MPLAB CONFIGURATION MACROS

#define GSS_OFF              0xFFFF
#define GWRP_OFF             0xFFFF

#define FNOSC_PRIPLL         0xFFFB
#define IESO_OFF             0xFF7F

#define FCKSM_CSDCMD         0xFFBF
#define POSCMD_EC            0xFFFC
#define OSCIOFNC_ON          0xFFFB

#define ICS_PGD2             0xFFFE
#define JTAGEN_OFF           0xFFDF

#define FWDTEN_OFF           0xFF7F
*********************************************************************************************************
*/
_FGS(GSS_OFF & GWRP_OFF);                     //0xFFFF & 0xFFFF          = 0xFFFF
_FOSCSEL(FNOSC_PRIPLL& IESO_OFF);             //0xFFFB & 0xFF7F          = 0xFF7B
_FOSC(FCKSM_CSDCMD & POSCMD_EC & OSCIOFNC_ON);//0xFFBF & 0xFFFC & 0xFFFB = 0xFFB8
_FICD(ICS_PGD2&JTAGEN_OFF);                   //0xFFFF & 0xFFDF          = 0xFFDF
_FWDT(FWDTEN_OFF);                            //0xFF7F 
  

 接下来看三个振荡器特殊功能控制寄存器

  1. OSCCON:振荡器控制寄存器
  2. CLKDIV  :时钟分频比寄存器
  3. PLLFBD : PLL 反馈分频比寄存器

OSCCON找不到其定义,只能在<bsp.h>文件中找到如下宏定义,所以只好去看其寄存器了

/*
*********************************************************************************************************
*                                       CHIP SPECIFIC MACROS
*********************************************************************************************************
*/
                                                                        /* OSCCON register bits  */
#define  XT_HS_EC_PLL_SEL           (CPU_INT16U)(3 <<  0)
#define  COSC_MASK                  (CPU_INT16U)(7 << 12) 
#define  LOCK                       (CPU_INT16U)(1 <<  5)
#define  OSWEN                      (CPU_INT16U)(1 <<  0)

View =》 File Register 的观察结果,在其中找到了寄存器 OSCCON 的值

 File Register

 

CLKDIV、PLLBD  能直接找到其赋值语句,也是在<bsp.c>文件中

/*
*********************************************************************************************************
*                                      BSP_PLL_Init()
*
* Description : This function configures and enables the PLL with the external oscillator
*               selected as the input clock to the PLL.
*
* Notes       : 1) The PLL output frequency is calculated by FIN * (M / (N1 * N2)).
*               2) FIN is the PLL input clock frequency, defined in bsp.h as
*                  CPU_PRIMARY_OSC_FR. This is the same as the external primary
*                  oscillator on the Explorer 16 Evaluation Board.
*               3) M is the desired PLL multiplier
*               4) N1 is the divider for FIN before FIN enters the PLL block (Pre-Divider)
*               5) N2 is the PLL output divider (Post-Divider)
*
* Summary     :    The PLL is configured as (8MHZ) * (40 / (2 * 2)) = 80MHZ
*                  The processor clock is (1/2) of the PLL output.
*                  Performance = 40 MIPS.
*********************************************************************************************************
*/

static  void  CPU_PLL_Init(void)
{
    PLLFBD = 38;  /* Set the Multiplier (M) to 40 (2 added automatically)  */
    CLKDIV = 0;   /* Clear the PLL Pre Divider bits, N1 = N2 = 2           */
}

 

下面是这五个寄存器的详细信息

1、FOSCSEL:振荡器源选择寄存器

FOSCSEL:振荡器源选择寄存器

2、FOSC:振荡器配置寄存器

标题

3、OSCCON:振荡器控制寄存器

OSCCON:振荡器控制寄存器

4、CLKDIV:时钟分频比寄存器

CLKDIV:时钟分频比寄存器

5、PLLFBD: PLL 反馈分频比寄存器

PLLFBD: PLL 反馈分频比寄存器

 

顺水推舟

知道了以上信息,就可以得到系统时钟 (FOSC)了

dsPIC33F PLL 框图

因为采用的是外部时钟模式,所以Fin=8MHz

POSCMD<1:0>=00;//00 = EC (外部时钟)模式

FOSC 计算

 

本手册介绍以下 dsPIC33F 16 位器件: 本手册介绍 dsPIC33F 系列架构和外设模块的操作,但并未涵盖每种器件的具体信息。 • dsPIC33FJ64GP206 • dsPIC33FJ64GP206A • dsPIC33FJ64GP306 • dsPIC33FJ64GP306A • dsPIC33FJ64GP310 • dsPIC33FJ64GP310A • dsPIC33FJ64GP706 • dsPIC33FJ64GP706A • dsPIC33FJ64GP708 • dsPIC33FJ64GP708A • dsPIC33FJ64GP710 • dsPIC33FJ64GP710A • dsPIC33FJ64MC506 • dsPIC33FJ64MC506A • dsPIC33FJ64MC508 • dsPIC33FJ64MC508A • dsPIC33FJ64MC510 • dsPIC33FJ64MC510A • dsPIC33FJ64MC706 • dsPIC33FJ64MC706A • dsPIC33FJ64MC710 • dsPIC33FJ64MC710A • dsPIC33FJ128GP206 • dsPIC33FJ128GP206A • dsPIC33FJ128GP306 • dsPIC33FJ128GP306A • dsPIC33FJ128GP310 • dsPIC33FJ128GP310A • dsPIC33FJ128GP706 • dsPIC33FJ128GP706A • dsPIC33FJ128GP708 • dsPIC33FJ128GP708A • dsPIC33FJ128GP710 • dsPIC33FJ128GP710A • dsPIC33FJ128MC506 • dsPIC33FJ128MC506A • dsPIC33FJ128MC510 • dsPIC33FJ128MC510A • dsPIC33FJ128MC706 • dsPIC33FJ128MC706A • dsPIC33FJ128MC708 • dsPIC33FJ128MC708A • dsPIC33FJ128MC710 • dsPIC33FJ128MC710A • dsPIC33FJ256GP506 • dsPIC33FJ256GP506A • dsPIC33FJ256GP510 • dsPIC33FJ256GP510A • dsPIC33FJ256GP710dsPIC33FJ256GP710A • dsPIC33FJ256MC510 • dsPIC33FJ256MC510A • dsPIC33FJ256MC710 • dsPIC33FJ256MC710A 中文手册,网上也有上传压缩包含的各个章节的文档,我整合到一个文档下,并且去掉了安全保护添加了书签,但书签不是很完善,有能力的人可以帮忙添加上完整的四级书签,辛苦成果!!请觉得不好的地方不要喷……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值