TIwilliam hill官网
直播中

李秀华

7年用户 134经验值
私信 关注

请问LM3S811时钟如何设置PLL?

本帖最后由 一只耳朵怪 于 2018-6-8 10:37 编辑

本人使用的器件是LM3S811。因需要25M左右的方波输出,采用的是PWM模块是需要使用PLL对外部6MHz晶振进行倍频,系统时钟200MHz。使用的时钟设置代码如下:
SysCtlLDOSet(SYSCTL_LDO_2_75V);//设置LDO电压为2.75V
SysCtlDelay(3000);//LDO电压稳定
SysCtlClockSet(
SYSCTL_SYSDIV_1
|SYSCTL_USE_PLL
|SYSCTL_OSC_MAIN
|SYSCTL_XTAL_6MHZ
);//设置时钟
SysCtlDelay(3000);
//----分割线------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
然后我用配置了PWM输出
    SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);
    GPIOPinTypePWM(GPIO_PORTD_BASE,GPIO_PIN_0);
        PWMGenConfigure(PWM_BASE, PWM_GEN_0,
                                        PWM_GEN_MODE_UP_DOWN |
                    PWM_GEN_MODE_NO_SYNC);
//!!!
  PWMGenPeriodSet(PWM_BASE, PWM_GEN_0, 8);
//!!!
PWMPulseWidthSet(PWM_BASE, PWM_OUT_0,
                     PWMGenPeriodGet(PWM_BASE,PWM_OUT_0)/2+1);
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, true);
    PWMGenEnable(PWM_BASE, PWM_GEN_0);
如果时钟正确配置,那么输出的频率应该是200M/8=25MHz
但是,最后得出的PWM频率大约1.5MHz,说明实际使用的时钟却是12MHz,时钟配置不正确。何故?(我已经实现设置了LDO电压)

回帖(3)

杨涛

2018-6-7 06:56:25
SysCtlClockSet(
SYSCTL_SYSDIV_1
|SYSCTL_USE_PLL
|SYSCTL_OSC_MAIN
|SYSCTL_XTAL_6MHZ
);
外部晶振: (4M,16M).
内部倍频到400M,经过内部分频到200M
最后系统频率:  200M/SYSDIV
按lz的用法肯定超过系统时钟,LM3S811最大工作频50M,故如下设置就是50M工作频率了。
SysCtlClockSet(
SYSCTL_SYSDIV_4
|SYSCTL_USE_PLL
|SYSCTL_OSC_MAIN
|SYSCTL_XTAL_6MHZ
);
举报

周润艺

2018-6-7 07:09:20
引用: 411easdd*** 发表于 2018-6-7 06:56
SysCtlClockSet(
SYSCTL_SYSDIV_1
|SYSCTL_USE_PLL

SysCtlClockSet(
SYSCTL_SYSDIV_4
|SYSCTL_USE_PLL
|SYSCTL_OSC_MAIN
|SYSCTL_XTAL_6MHZ
);//设置时钟
举报

周润艺

2018-6-7 07:27:03
引用: se6238751 发表于 2018-6-7 07:09
SysCtlClockSet(
SYSCTL_SYSDIV_4
|SYSCTL_USE_PLL

时钟设置请参考帖子
www.deyisupport.com/.../1893.aspx
举报

更多回帖

发帖
×
20
完善资料,
赚取积分