2万

帖子

71

TA的资源

管理员

41
 

回复 40楼 pepsi360 的帖子

已经调整。
此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

42
 
可喜可贺啊!
此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

43
 

谢谢帮顶,呵呵。

希望其他有板子的朋友给亲自试验下,我的这个交流探讨贴的过程,有没写错什么。虽然在我的实际操作中都有成功实现,但是还是希望大伙一起参与积极的验证一下。查漏补缺~~

此帖出自NXP MCU论坛
 
 
 

回复

826

帖子

0

TA的资源

一粒金砂(中级)

44
 

牛人

牛人!!!终于找到这个了!!!还要用JLINK!!

此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

45
 
哪位朋友有什么问题可以留言跟帖,我将空闲时间尽力作答,本人也是初次使用,承当一起学习。
此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

46
 
自己踩一下
此帖出自NXP MCU论坛
 
 
 

回复

826

帖子

0

TA的资源

一粒金砂(中级)

47
 

终于解决问题了

解决问题就好!!!
此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

48
 
其实还有蛮多问题的啦,呵呵。慢慢研究ing
此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

49
 

§ 5月22日更新NO.6

单片机系统肯定离不开时钟的配置,而由ARM7过渡到Cortex-M3,进化的最大的地方恐怕也得算上时钟的配置吧?下面就来看看ARM7 vs Cortex-M3的时钟配置,具体拿外设的WDT来做对比。 ARM7有如下架构:

可以注意到外设总线VPB也即是分频器,它控制着外设的频率即可以实现高主频低外设的作用,关键要看VPB的分频值。同时也得注意一个很关键的PLL模块,PLL即锁相环,倍频就得看这个电路了。

下面拿出ARM7VPBPLL内部架构的结构图:

 

 

此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

50
 

ARM7的朋友应该很熟悉下面的配置情况:

#define Fosc            11059200                                                             #define Fcclk           (Fosc * 4)                                                              

#define Fcco            (Fcclk * 4)                                          

#define Fpclk           (Fcclk / 4) * 1                                                     

上述的配置就是实现将外接的11.0592MHZ的晶振实现4倍倍频使系统主频达到较高频率的

44.2368MHZ,同时Fpclk外设时钟为11.0592MHZ(当然可以达到(Fcclk / 4)124倍),这两个时钟都是我们用的最多的,也是最应该关注的外接时钟、系统时钟、外设时钟之间的关系了。

将这个时钟应用在WDT模块上,见如下。很主要的一点就是看门狗模块的时钟接入为Fpclk外设时钟。也就是说看门狗的32位倒计数频率为Fpclk/4,这样看门狗的溢出时间很容易算出来。

 

 

此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

51
 

下面再来看看Cortex-M3的时钟系统:

大伙有没有看到先前简单的PLL与系统功能被现在的时钟与电源设置所取代呢?这个也是Cortex-M3ARM7较大的区别,就好比传统51在管教的配置上已经完全的固定死,那个外部中断管脚就是P3.2口不能够替换,而在改进版的C8051F系列的单片机上,却成功的引入管脚编程的概念,相关的功能脚可以成功的串接在多个管脚上以供用户选择。在时钟上Cortex-M3ARM7最大的改进是更加的细分化,可以实现多钟时钟源的配置与选择。

该图显示的是Cortex-M3的时钟架构,可以见到我们选择的地方变的更多,就一个sys_pclk来说就有irc_osc_clksys_osc_clkwdt_osc_clk3种选择。也就是说PLL电路的时钟源就有的3种选择,而这个在ARM7上是没得选的为Fosc。同时可以看WDT的时钟源为PCLKWDCLK,而这两个的确认又牵扯到APBIRC、主时钟、看门狗振荡器等相关寄存的设置不同,可以达到不同时钟的选则。这样初步一看,我们会发现Cortex-M3的时钟系统变得异常的复杂料,呵呵。但是这些个烦杂的寄存器,却也给我们的使用带来了很多的方便,可以更加细致的设置MCU的任何一个工作细节。更加具体化的、细致化的落实高主频低外设的功能。

 

此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

52
 

下图为Cortex-M3PLL模块,的确是相对ARM7的有很大变化,PLL的输入时钟选择更加的多样化为irc_osc_clksys_osc_clkwdt_osc_clk3种选择。

同时PLL时钟与FoscMP相关以外,我们的新内核还添加入对掉电模式位PD的判断来确认PLL5种时钟工作模式。而这5种不同的工作模式下,PLL的计算方式是不同的。

 

此帖出自NXP MCU论坛
 
 
 

回复

5970

帖子

8

TA的资源

版主

53
 
此帖出自NXP MCU论坛
 
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

54
 

续上@@源代码详细注释。

结合函数库的一个WDT的代码来说说看怎么设置系统时钟到选择外设时钟的:
/*****************************************************************************
**   Main Function  main()
******************************************************************************/
int main (void)
{
  SystemInit();
  /* Config WDT clock */
  WDT_CLK_Setup(WDTCLK_SRC_MAIN_CLK);
  /*** The main Function is an endless loop ****/
  init_timer16( 0, TIME_INTERVAL );
  WDTInit();
  enable_timer16( 0 );
  while( 1 )
  {
 if ( timer16_0_counter > 0 )
 {
   /* Feed the watchdog timer */
   feed_counter++;
   WDTFeed();
   timer16_0_counter = 0;
 }
  }
}


上面作棕色的为我们即将仔细分子的两个子函数:

void WDT_CLK_Setup ( uint32_t clksrc )
{
  /* Watchdog configuration. */
  /* Freq = 0.5Mhz, div_sel is 0, divided by 2. WDT_OSC should be 250khz */----小心烟幕弹,这里是误导人的
  LPC_SYSCON->WDTOSCCTRL = (0x1<<5)|0x00; //bit5=1,Freq(Fclkana)=0.5MHZ
  LPC_SYSCON->WDTCLKSEL = clksrc;   /* Select clock source看门狗时钟源为系统主时钟Main clock */
  /*接下来我们会带领大家去寻找Main clock=???????????????*/
  LPC_SYSCON->WDTCLKUEN = 0x01;  /* Update clock 看门狗时钟源更新*/
  LPC_SYSCON->WDTCLKUEN = 0x00;
/* Toggle update register once看门狗时钟源更新启用要求先向WDTCLKUEN写0,再写1为启用 */
  LPC_SYSCON->WDTCLKUEN = 0x01;
  while ( !(LPC_SYSCON->WDTCLKUEN & 0x01) );  /* Wait until updated */
  LPC_SYSCON->WDTCLKDIV = 1;            /* Divided by 1  分频器值为1 */ 
  LPC_SYSCON->;PDRUNCFG &= ~(0x1<<6);    /* Let WDT clock run  为PDRUNCFG的bit7清零赋值即SYSPLL_PD=0,这个很关键的,决定主时钟Pclk的计算方式 */
  return;
/*
首先我们必须确认Main clock的具体大小,然后再根据其他的值来计算WDT的具体时钟
*/

}

void SystemInit (void)
{
  uint32_t i;
#if (CLOCK_SETUP)                                               /* Clock Setup              */
  LPC_SYSCON->SYSOSCCTRL    = 0;                  /* Reset Clock Settings     */
  LPC_SYSCON->;PDRUNCFG     &= ~(1 << 5);        /* Power-up System Osc      */
  for (i = 0; i < 200; i++);
#if (SYSCLK_SETUP)                                /* System Clock Setup       */
#if (SYSOSC_SETUP)                                /* System Oscillator Setup  */
  LPC_SYSCON->SYSOSCCTRL    = SYSOSCCTRL_Val;
#if (SYSPLL_SETUP)                                /* System PLL Setup         */
  LPC_SYSCON->SYSPLLCLKSEL  = SYSPLLCLKSEL_Val;  
/* Select PLL Input-- 系统PLL时钟源为System oscillator     */
/*个人添加注释解释System oscillator下面文字来之LPC1343官方文档
When the system oscillator is not used, connect XTALIN and XTALOUT as follows: XTALIN can be left floating or can be grounded
(grounding is preferred to reduce susceptibility to noise). XTALOUT should be left floating.
可以知道这里不做特别说明的话默认System oscillator为外部接入的晶振12M
*/
  LPC_SYSCON->SYSPLLCLKUEN  = 0x01;               /* Update Clock Source      */
  LPC_SYSCON->SYSPLLCLKUEN  = 0x00;               /* Toggle Update Register   */
  LPC_SYSCON->SYSPLLCLKUEN  = 0x01;
  while (!(LPC_SYSCON->SYSPLLCLKUEN & 0x01));     /* Wait Until Updated       */
  LPC_SYSCON->SYSPLLCTRL    = SYSPLLCTRL_Val;
/*
由SYSPLLCTRL    = SYSPLLCTRL_Val=0x25有如下值
MSEL=5       //反馈分频器值。分频值M为MSEL+1
PSEL=0x01   //后置分频器速率P。分频率为2×P
DIRECT=0    //CCO时钟输出控制
BYPASS=0    //旁路系统振荡器
*/
  LPC_SYSCON->;PDRUNCFG     &= ~(1 << 7);         
/* Power-up SYSPLL  SYSPLL_PD=0          */
/*
由此可以判断PLL operating modes为普通模式,按照手册上说的普通模式计算Fclkout为
Fclkout = M x Fclkin = (FCCO)/(2*P)
Fclkin为system PLL 输入时钟由前面代码LPC_SYSCON->SYSPLLCLKSEL  = SYSPLLCLKSEL_Val
得出PLL时钟源为System oscillator,不做特别说明的话默认System oscillator为外部接入的晶振12M
即有Fclkout(Frequency of sys_pllclkout)=(5+1)*12M=72M
*/

  while (!(LPC_SYSCON->SYSPLLSTAT & 0x01));       /* Wait Until PLL Locked    */
#endif
#endif
  if ((SYSPLLCLKSEL_Val & 3) == 2) {                        /* If WDT Clock Selected    */
    LPC_SYSCON->;PDRUNCFG   &= ~(1 << 6);          /* Power-up WDT Clock       */
  }
  LPC_SYSCON->MAINCLKSEL    = MAINCLKSEL_Val;     /* Select PLL Clock Output  */
/*
main clock时钟源选择为System PLL clock out,即main clock为PLL输出时钟Fclkout(Frequency of sys_pllclkout)=(5+1)*12M=72M
到此意味着WDT看门狗的时钟源为系统主时钟main clock,而main clock又选择的PLL输出时钟Fclkout(Frequency of sys_pllclkout)
而进过计算有Fclkout(Frequency of sys_pllclkout)=(5+1)*12M=72M,由此推出WDT时钟为72M
-----------------------------------确定WDT时钟大小*/
 
有这个函数库的代码可以小窥,Cortex-M3的时钟真的是很烦烦躁的@@@!

[ 本帖最后由 pepsi360 于 2010-5-24 11:39 编辑 ]
此帖出自NXP MCU论坛
 
 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

55
 
版主帮修改标题为:MDK+JLINKv7+LPC1343之攻略探讨交流(5月23日第6次更新)
此帖出自NXP MCU论坛
 
 
 

回复

2万

帖子

71

TA的资源

管理员

56
 

回复 55楼 pepsi360 的帖子

搞定 呵呵 :)
此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

57
 
出现这个“;P”的地方我不是故意的啦,可能是我输入的字符被论坛默认替换了,相关代码,可以去keil的例程,亦或是LPCxpresso例程里面查看,不过还好我的注释没有被修改,呵呵。有问题依旧可以留言,我将抽空与你一起探讨学习。
此帖出自NXP MCU论坛
 
 
 

回复

2万

帖子

71

TA的资源

管理员

58
 

回复 64楼 pepsi360 的帖子

出现;P 有两种方式可以避免:

 

1、以代码格式发布代码,如图所示;

 

 

 

2、禁用SMILES,如图

 

此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

394

帖子

0

TA的资源

一粒金砂(高级)

59
 

原帖由 soso 于 2010-5-24 09:52 发表 出现;P 有两种方式可以避免:   1、以代码格式发布代码,如图所示;   46629     2、禁用SMILES,如图   46630

改过来了,呵呵。文字编辑是门大学问,还得多多向soso姐请教啊。

此帖出自NXP MCU论坛
 
 
 

回复

2万

帖子

71

TA的资源

管理员

60
 

回复 66楼 pepsi360 的帖子

heihei 客气啥
此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表