嵌入式开发者社区

标题: 切换PLL频率经常造成死机,怎么解决? [打印本页]

作者: lushidegreen    时间: 2016-12-26 09:22
标题: 切换PLL频率经常造成死机,怎么解决?
device_PLL0( )函数是GEL文件中直接移到C文件的。
我在自己的函数在调用device_PLL0()函数设置主频,如下
void Set_Core_456MHz_Div(unsigned int PLLM, uint8_t div)
{
        device_PLL0(1,//CLKMODE,   0---->On Chip Oscilator  1---->External Oscilator
                                PLLM,//PLLM,
                                div,//POSTDIV,
                                0,//PLLDIV1,
                                1,//PLLDIV2,
                                10,//PLLDIV3,
                                10//PLLDIV7
                                );
}

这样设置,有时候会导致死机。
请问,PLL0设置有没有可能失败?

我不确定上述问题是不是PLL0配置时死机,因为我的程序中还用到了USB,可能是USB部分的问题。
在配置PLL0之后,我关闭USB设备然后重新连接,大部分情况下都是能够正常使用的。
请问,PLL0配置到USB重新连接之间还需要进行什么特殊操作吗?

作者: 电子微创意    时间: 2016-12-27 22:15
是不是因为运行频率不一样,在切换过程中的等待不满足条件造成的呢
作者: lushidegreen    时间: 2016-12-28 09:19
电子微创意 发表于 2016-12-27 22:15
是不是因为运行频率不一样,在切换过程中的等待不满足条件造成的呢

不知道。我现在对PLL0底层的操作没有详细了解,是直接从GEL文件复制到C文件中使用的。
作者: 电子微创意    时间: 2016-12-28 20:22
lushidegreen 发表于 2016-12-28 09:19
不知道。我现在对PLL0底层的操作没有详细了解,是直接从GEL文件复制到C文件中使用的。 ...

里边好像有软件等待的延时函数
作者: lushidegreen    时间: 2016-12-29 08:47
电子微创意 发表于 2016-12-28 20:22
里边好像有软件等待的延时函数

里面是for循环作延时,这个应该是按456M计算的。
我切换到其他更低频率,或者从更低频率切换到456M,这个延时应该都适用吧。
毕竟456M的时候,这个for的延时耗时是最短的,在其他频率下,这个耗时会更长。




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4