NEC V850 之 系统时钟及内部设备时钟

2016-10-07来源: eefocus关键字:NEC  V850  系统时钟
首先说明下,之前没有搞时钟就开始看I/O口还有外部中断是不对的。幸好发现的不晚,现在把这必须的一课给补上。如果连时钟都搞不明白,下面的外设是肯定没法弄的。另外放弃了原来做一个总体程序包的想法,主要是太浪费时间了,完成一个器件的驱动还要想把他无缝的添加到原来的程序结构里去,现在不是做这个工作的时候,需要快速的把测试完成,然后上系统去调试。

下面开始正题,V850的时钟还是比较饶人的,需要仔细的去读datasheet,另外我到现在还有无法理解的地方在datasheet上面。下图是系统时钟的框图:(红色的圈里就是不理解的地方,不知道在哪个地方设置)

NEC V850 之 系统时钟及内部设备时钟 - 豆子 - 代码豆子
下面我会把代码和示波器测量的截图发出来。先是代码:

代码出处 system.c

void SystemClkInit( void )
{
unsigned char psval = 0;

VSWC = CG_VSWC_VALUE; // 设置 内部外围功能控制寄存器 值为17
/* Set main system clock */
OSTS = CG_OSCSTAB_SEL16; // 设置 晶振稳定时间选择寄存器 值为0x06(2^16/fx),为下面检测OSTC做准备
psval = CG_CPUCLK_MAINFEEDBACK | CG_CPUCLK_SUBNOTFEED | CG_CPUCLK_MAINENABLE;
PRCMD = psval;
PCC = psval; // 设置 MCU时钟控制寄存器 值为0x80,禁止子时钟振荡器,使能主时钟振荡器
while (!(OSTC || 0x00)) // 检测 晶振稳定时间状态寄存器 的最低为是不是为1(晶振震荡以稳定)
{
;
}
PLLS = CG_PLLLOCKUP_SEL1; // 设置 锁相环锁定时间规格寄存器 值为0x03(2^13/fX (default value)),为下面检测LOCKR做准备
PLLON = 1; // 设置 PLLCTL锁相环控制寄存器 最低位为1,使能锁相环启动
while (LOCKR && 0x01) // 检测 锁相环锁定状态寄存器 的最低为是不是为0(锁相环以锁定)
{
;
}
psval = CG_MAINSYS_MAINOSC;
PRCMD = psval;
MCM = psval; // 设置 系统主时钟方式寄存器 值为0x01(设定主时钟源非内部高速振荡源)
SELPLL = 1; // 设置 PLLCTL锁相环控制寄存器 的次低位为1,与MCM寄存器配合设置主时钟通过锁相环倍频
/* Set fCPU */
psval = PCC | CG_CPUCLK_MAIN0; // 设置 系统主时钟的分频系数,对内部设备时钟没有任何影响,仍然为32MHz
PRCMD = psval;
PCC = psval; // 设置 MCU时钟控制寄存器 的低4位,设置分频系数
RCM = CG_RCM_INITIALVALUE | CG_LOWCLK_STOP | CG_HICLK_STOP;//设置 内部振荡器模式寄存器 值为0x83,关闭内部高速,低速振荡源
/* Set fXP1 */
SELCNT4 = CG_SELCNT4_FXX; // 设置 选择控制寄存器4 值为0x00,选择时钟源为fxx
/* Set fBRG */
PRSM0 = CG_PRESCALER3_DISABLE; // 设置 预分频3方式寄存器 值为0x00,禁止分频
/* WDT2 setting */
WDTM2 = 0x1F; // 设置 看门狗定时器2方式寄存器 值为0x1F,看门狗停止
}



代码出处 main.c

void main( void )
{
SystemClkInit(); // 初始化系统时钟为32MHz

/* CLKOUT pin set */
PMCCM |= 0x02; // 设置系统时钟输出引脚使能,输出值为系统时钟(32MHz)

/* PCL pin set */
PFC9H &= 0xDF;
PFCE9H |= 0x20;
PMC9H |= 0x20; // 设置P9_13脚为第二功能,时钟输出功能
PCLM = CG_PCL_ENABLE | CG_PCL_SEL0;
// 设置时钟输出功能使能,并且设置其分频系数(这里是进行4分频,输出为8MHz)

while (1);
}



代码出处 system.h

/* CPU system clock selection (CK3~0) */
#define CG_CPUCLK 0x07
#define CG_CPUCLK_MAIN0 0x00 /* fCPU = fXX */
#define CG_CPUCLK_MAIN1 0x01 /* fCPU = fXX/2 */
#define CG_CPUCLK_MAIN2 0x02 /* fCPU = fXX/2^2 */
#define CG_CPUCLK_MAIN3 0x03 /* fCPU = fXX/2^3 */
#define CG_CPUCLK_MAIN4 0x04 /* fCPU = fXX/2^4 */
#define CG_CPUCLK_MAIN5 0x05 /* fCPU = fXX/2^5 */
#define CG_CPUCLK_SUB 0x08 /* fSC (fXT or fRL) */
/* PCL clock frequency selection (PCK1~0) */
#define CG_PCL_SEL0 0x00 /* fPCL= fPLLO/4 */
#define CG_PCL_SEL1 0x01 /* fPCL= fPLLO/8 */
#define CG_PCL_SEL2 0x02 /* fPCL= fPLLO/16 */
#define CG_PCL_SEL3 0x03 /* fPCL= fPLLO/32 */

上面的代码设置系统主时钟输出32MHz可以在第一幅图的CLKOUT端口测量,在70f3630里是引脚"PCM1",可编程输出时钟输出为8MHz在70f3630里是引脚"P9_13"引脚。下面两幅图是用示波器测量的结果作为佐证:

NEC V850 之 系统时钟及内部设备时钟 - 豆子 - 代码豆子
NEC V850 之 系统时钟及内部设备时钟 - 豆子 - 代码豆子
可以发现波形比较不好,应该是因为频率高造成的,在负半轴和超出5v的地方都有了比较大的文波,尤其是32MHz的输出,也有一部分原因是因为,管脚的反转速率达不到这么高。
如果我们想修改系统时钟频率或者是输出频率,可以对照着代码部分高亮的地方修改,注释里也有详细说明。
下面是修改后的波形图:
NEC V850 之 系统时钟及内部设备时钟 - 豆子 - 代码豆子
NEC V850 之 系统时钟及内部设备时钟 - 豆子 - 代码豆子
可以观察到,在频率下降后,波形会有不同程度的好转。

 最后补充一点:
经过测试,在V850里的系统始终一旦设置为一个数值(比如32MHz),他的内部设备总线时钟就也同时被设置为相同的频率,在每个外设的设置里有分配寄存器,但是内部设备总线时钟是无法变动了。仔细的看第一幅图就会发现和图是不一致的,如果有知道的朋友,希望不吝赐教。

关键字:NEC  V850  系统时钟

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2016100730148.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:NEC V850 之 定时器TMM0
下一篇:NEC V850 之 外部中断

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

TE Connectivity发布《智能时代传感器发展及应用报告》

       近日,TE Connectivity发布《智能时代传感器发展及应用报告》,探讨作为各工业领域信息采集和传输的基础,传感器在工业物联网、智能制造与智能交通三大典型智能科技应用场景中的技术特点及商用价值。报告同时结合TE领先的传感器解决方案,围绕中国传感器行业不断向智能化、集成化、数字化发展进行了技术分享。集成化、小型化、智能化,产业与传感器殊途同归的发展方向由5G通信网络、物联网、高性能集成电路、云计算等为代表的新一代信息技术将广泛赋能各个产业领域,引领中国产业的智能化变革。在密集的扶持政策吸引下,千万企业摩肩接踵加入行业变革大军,致使市场规模持续扩大,而工业物联网、智能制
发表于 2019-07-02
TE Connectivity发布《智能时代传感器发展及应用报告》

STM32HAL----红外遥控(NEC)

整理了一个NEC协议的红外程序,NEC协议,物理环境为F103原子战舰V3,使用STM32CubeMX生成初始程序。定时器配置72分频,9999装载值(10MS) NEC协议:数据格式: 同步码头 + 地址码 +地址反码 + 按键码 + 按键反码 (LSB先行)同步码头:9ms低电平 + 4.5ms高电平连发码 :   9ms低电平 + 2.5ms高电平逻辑1:      560us  +  1680us逻辑0:      560us  +  560us 程序:头文件:#ifndef
发表于 2019-06-29
STM32HAL----红外遥控(NEC)

STM32F4驱动NEC协议的红外接收头

    红外遥控是一种无线、非接触式控制技术,具有抗干扰能力强、传输可靠、价格便宜、功耗低、易实现等优点。被很多的家用电器所采用。目前常用的红外遥控器协议有NEC协议(PWM脉冲宽度调制)、Philips RC5协议(PPM脉冲位置调制)。红外遥控分为发射端与接收端,发射端是以调制的方式发射数据,就是把数据和一定频率的载波进行“与操作”。调制载波频率一般为30KHz到60KHz之间。    NEC协议的特点:8位地址和8位命令长度                       
发表于 2019-06-29
STM32F4驱动NEC协议的红外接收头

TE Connectivity发布《智能时代传感器发展及应用报告》

全球连接与传感领域的领先企业TE Connectivity(以下简称“TE”)发布《智能时代传感器发展及应用报告》,探讨作为各工业领域信息采集和传输的基础,传感器在工业物联网、智能制造与智能交通三大典型智能科技应用场景中的技术特点及商用价值。报告同时结合TE领先的传感器解决方案,围绕中国传感器行业不断向智能化、集成化、数字化发展进行了技术分享。 集成化、小型化、智能化,产业与传感器殊途同归的发展方向 由5G通信网络、物联网、高性能集成电路、云计算等为代表的新一代信息技术将广泛赋能各个产业领域,引领中国产业的智能化变革。在密集的扶持政策吸引下,千万企业摩肩接踵加入行业变革大军,致使市场规模持续扩大,而工业物联网
发表于 2019-06-24
TE Connectivity发布《智能时代传感器发展及应用报告》

TE Connectivity收购医疗及工业传感器商Alpha Technics

全球连接器和传感器供应商TE Connectivity日前(2019年5月)宣布收购Alpha Technics。通过收购,扩大了TE在温度传感器领域的产品组合,同时扩大了TE在医疗市场的传感器技术领先地位。Alpha Technics是高精度医疗温度测量产品和解决方案的领先设计商和制造商。该公司总部位于加利福尼亚州,2018年的销售额约为2,000万美元,为一家私人控股公司。“收购Alpha Technics是我们扩大传感器应用领域地位的完善战略的一部分。”TE传感器业务高级副总裁兼总经理John Mitchell说道,“此次交易进一步确立了TE作为医疗市场的传感器技术领导者。我们现有的传感器产品,加上Alpha
发表于 2019-06-14
TE Connectivity收购医疗及工业传感器商Alpha Technics

TE Connectivity收购德国传感器供应商Sensor First

据外媒报道,连接器和传感器供应商TE Connectivity的德国子公司日前(2019年6月3日)宣布将收购德国传感器供应商First Sensor AG。根据First Sensor股票的收购条款,TE将以每股28.25欧元现金收购,总金额约为3.43亿美元,预计最迟将在2020年中完成此次收购。收购First Sensor将巩固TE在传感器领域的全球领导地位,特别是在工业、医疗和交通运输应用领域。完成后,该交易将把First Sensor的解决方案(包括低压传感和光子学)与TE的运营、客户群及现有传感器技术结合在一起,为客户提供更全面的一体化传感器解决方案。“将First Sensor产品和客户群与TE广泛部署的传感器
发表于 2019-06-14

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved