This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6713 PLL

C6713 PLL

1、硬件外部有个复位键,RESET,PLL配置时有个和PLL_reset,这两个是什么关系呢?没什么联系吧?

2、PLL配置时,比如lock过程,需要有计时,等待PLL稳定,这个计时怎么实现,直接计数吗?又怎么知道累加一次多长时间呢?

难道累加一次一个时钟?软件优化后,可能最后会并行执行,一个时钟周期就不止累加一次吧,这个时间怎么确定?

用硬件计时器,在这里也没必要吧?

谢谢

  • 你好,

    1. 硬件复位件会复位整个芯片包括PLL模块, PLL_reset只针对PLL控制器, 在配置PLL寄存器时, 先要reset PLL.

    2. 可以用下面的语句在软件上做延时, 根据CLKIN计算count, 只要累计时间超过187.5us就可以了, 不用很精确, 差不多就可以了
    static void PllDelay( int Count )
    {
        volatile int i = Count;
        while(i--);
    }

    附件是PLL.c可以参考

    http://www.deyisupport.com/cfs-file.ashx/__key/communityserver-discussions-components-files/32/5758.pll.c

  • 非常感谢

  • 你好,看到您的回复,可能我的问题也出在PLL初始化上,我用的芯片是TMS320C6713BZDP-A200,时钟输入是25Mhz,pll初始化程序如下:

    PLL_bypass();
    asm(" NOP 8 ");
    PLL_reset();
    asm(" NOP 8 ");
    PLL_setMultiplier(0x08);//0905
    asm(" NOP 8 ");
    PLL_setPllRatio(PLL_DIV3,0x9);//0905
    asm(" NOP 8 ");
    asm(" NOP 8 ");
    asm(" NOP 8 ");
    PLL_deassert();
    asm(" NOP 8 ");
    asm(" NOP 8 ");
    asm(" NOP 8 ");
    PLL_enable();
    asm(" NOP 8 ");

    常温工作正常,但是低温-20度就出现无法启动的问题,是等待时间不够吗,改成如下是否可以:

    static void PllDelay( int Countdelay )
    {
    volatile int i = Countdelay;
    while(i--);
    }

    PLL_bypass();
    PllDelay(20);
    PLL_reset();
    PllDelay(20);
    PLL_setMultiplier(0x08);//0905
    PllDelay(20);
    PLL_setPllRatio(PLL_DIV3,0x9);//0905
    PllDelay(20);
    PLL_deassert();
    PllDelay(1500);
    PLL_enable();
    PllDelay(20);

    多谢!