打印

LPC1225的启动、复位异常问题

[复制链接]
2971|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
因电路用到多个MCU,使用的是LPC1225,发现在上电时经常有MCU没有启动,板上的几个MCU的电路是相同的,程序也相同,如下。

在每次上电时,有个别MCU不工作,测量晶振已经起振,用仿真器可以进入(怀疑是先复位进入的),用串口不能进入内部的bootload.
做了电路没隔5秒复位一次,发现有时复位后也会不启动。
不知是否有朋友遇到相同问题。

相关帖子

沙发
hebeijiang|  楼主 | 2013-6-5 18:47 | 只看该作者
补充一点,在LPC1225的程序中启用看门狗,启动问题依旧。

使用特权

评论回复
板凳
hebeijiang|  楼主 | 2013-6-6 01:08 | 只看该作者
问题解决,是pll切换造成的问题。
切换太快了。

使用特权

评论回复
地板
jlass| | 2013-6-6 08:38 | 只看该作者
搞到凌晨1点啊,楼主太牛了

使用特权

评论回复
5
hebeijiang|  楼主 | 2013-6-6 13:44 | 只看该作者
回楼上,做个小**就是这样的了。
补全一下问题的解决:
NXP提供的驱动中有该函数:
void SystemInit (void)
就是这函数导致有时启动异常,修改过的部分为:
#if (SYSPLL_SETUP)
  LPC_SYSCON->SYSPLLCLKSEL  = SYSPLLCLKSEL_Val;   /* Select PLL Input         */
  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       */
                                /* System PLL Setup         */
  LPC_SYSCON->SYSPLLCTRL    = SYSPLLCTRL_Val;
  LPC_SYSCON->PDRUNCFG     &= ~(1 << 7);          /* Power-up SYSPLL          */
  while (!(LPC_SYSCON->SYSPLLSTAT & 0x01));              /* Wait Until PLL Locked    */
#endif // #if (SYSPLL_SETUP)
        Delay_mS(100);       //就增加这一句延迟。
  LPC_SYSCON->MAINCLKSEL    = MAINCLKSEL_Val;     /* Select PLL Clock Output  */
  LPC_SYSCON->MAINCLKUEN    = 0x01;               /* Update MCLK Clock Source */
  LPC_SYSCON->MAINCLKUEN    = 0x00;               /* Toggle Update Register   */
  LPC_SYSCON->MAINCLKUEN    = 0x01;
  while (!(LPC_SYSCON->MAINCLKUEN & 0x01));       /* Wait Until Updated       */

程序只加了句延时,因我的系统对切换时间没有要求,所以用的是100mS,或许更短都可以。
增加延时后实际测试没有出现启动异常的问题。
因小**是业余的,详细的理论需要高手们来补全。

使用特权

评论回复
6
huangxz| | 2013-6-6 14:10 | 只看该作者
学习了,用了许多nxp的器件还没有发现还有这个问题,如果是我早就骂nxp了;P

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

158

帖子

1

粉丝