目前硬件上 X1 X2脚接了外部无源晶振20M,CLKIN接地。使用函数
void InitSysCtrl(void)
{
// Disable the watchdog
DisableDog();
// Initialize the PLL control: PLLCR and CLKINDIV
// DSP28_PLLCR and DSP28_CLKINDIV are defined in DSP280x_Examples.h
InitPll(DSP28_PLLCR,DSP28_CLKINDIV);
// Initialize the peripheral clocks
InitPeripheralClocks();
}
在“DSP280X_Eamples.h”中定义了
#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT
#define DSP28_PLLCR 10
但是没有得到想要的晶振频率。从例子中也找不到配置使用X1 X2引脚的晶振。求解!!!!!!!!!!!!查看了很多例子InitSysCtrl()函数都一样,不知道是否还有其他文件有关时钟的配置???
可以确认硬件没有虚焊,晶振有起震。
附件为工程,请大神给予帮助
Martin Yu:
PLL配置成
#define DSP28_PLLCR 10,
#define DSP28_CLKINDIV 1
得到100MHz,或者
#define DSP28_PLLCR 5,
#define DSP28_CLKINDIV 0
发个Demo例程的配置文件,注意晶振是10MHz的。
目前硬件上 X1 X2脚接了外部无源晶振20M,CLKIN接地。使用函数
void InitSysCtrl(void)
{
// Disable the watchdog
DisableDog();
// Initialize the PLL control: PLLCR and CLKINDIV
// DSP28_PLLCR and DSP28_CLKINDIV are defined in DSP280x_Examples.h
InitPll(DSP28_PLLCR,DSP28_CLKINDIV);
// Initialize the peripheral clocks
InitPeripheralClocks();
}
在“DSP280X_Eamples.h”中定义了
#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT
#define DSP28_PLLCR 10
但是没有得到想要的晶振频率。从例子中也找不到配置使用X1 X2引脚的晶振。求解!!!!!!!!!!!!查看了很多例子InitSysCtrl()函数都一样,不知道是否还有其他文件有关时钟的配置???
可以确认硬件没有虚焊,晶振有起震。
附件为工程,请大神给予帮助
jianxing ding:
回复 Martin Yu:
不理解!!!!!!!!!
按照这个文件的注释
/*—————————————————————————– Specify the PLL control register (PLLCR) and clock in divide (CLKINDIV) value.
if CLKINDIV = 0: SYSCLKOUT = (OSCCLK * PLLCR)/2 if CLKINDIV = 1: SYSCLKOUT = (OSCCLK * PLLCR)—————————————————————————–*/#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT//#define DSP28_CLKINDIV 1 // Disable /2 for SYSCKOUT
#define DSP28_PLLCR 10//#define DSP28_PLLCR 9//#define DSP28_PLLCR 8//#define DSP28_PLLCR 7//#define DSP28_PLLCR 6 // Uncomment for 60 MHz devices [60 MHz = (20MHz * 6)/2]//#define DSP28_PLLCR 5//#define DSP28_PLLCR 4//#define DSP28_PLLCR 3//#define DSP28_PLLCR 2//#define DSP28_PLLCR 1//#define DSP28_PLLCR 0 // PLL is bypassed in this mode//—————————————————————————-
如果定义按照你的
#define DSP28_PLLCR 10,
#define DSP28_CLKINDIV 1
得到100MHz,或者
#define DSP28_PLLCR 5,
#define DSP28_CLKINDIV 0
第一种 10*10Mhz 第二种5*10Mhz/2=50Mhz
我外部是20Mhz
PLL配置成
#define DSP28_PLLCR 10,
#define DSP28_CLKINDIV 0
按照注释 20*10/2=100MHZ
???????
目前硬件上 X1 X2脚接了外部无源晶振20M,CLKIN接地。使用函数
void InitSysCtrl(void)
{
// Disable the watchdog
DisableDog();
// Initialize the PLL control: PLLCR and CLKINDIV
// DSP28_PLLCR and DSP28_CLKINDIV are defined in DSP280x_Examples.h
InitPll(DSP28_PLLCR,DSP28_CLKINDIV);
// Initialize the peripheral clocks
InitPeripheralClocks();
}
在“DSP280X_Eamples.h”中定义了
#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT
#define DSP28_PLLCR 10
但是没有得到想要的晶振频率。从例子中也找不到配置使用X1 X2引脚的晶振。求解!!!!!!!!!!!!查看了很多例子InitSysCtrl()函数都一样,不知道是否还有其他文件有关时钟的配置???
可以确认硬件没有虚焊,晶振有起震。
附件为工程,请大神给予帮助
rookiecalf:
回复 jianxing ding:
不能只看注释,注释很多情况都会误导你,你更应该以手册为准,这边的DSP28_CLKINDIV位应该是1有效,你可以查以下手册
目前硬件上 X1 X2脚接了外部无源晶振20M,CLKIN接地。使用函数
void InitSysCtrl(void)
{
// Disable the watchdog
DisableDog();
// Initialize the PLL control: PLLCR and CLKINDIV
// DSP28_PLLCR and DSP28_CLKINDIV are defined in DSP280x_Examples.h
InitPll(DSP28_PLLCR,DSP28_CLKINDIV);
// Initialize the peripheral clocks
InitPeripheralClocks();
}
在“DSP280X_Eamples.h”中定义了
#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT
#define DSP28_PLLCR 10
但是没有得到想要的晶振频率。从例子中也找不到配置使用X1 X2引脚的晶振。求解!!!!!!!!!!!!查看了很多例子InitSysCtrl()函数都一样,不知道是否还有其他文件有关时钟的配置???
可以确认硬件没有虚焊,晶振有起震。
附件为工程,请大神给予帮助
jianxing ding:
回复 rookiecalf:
我实际的用 SCLKOU脚输出,配置那个CLKINDIV,验证的是0是使能CLKINDIV这个位的。只是晶振频率就是不对。配置CLKINDIV为1 和0 的时候刚好是2倍数关系
目前硬件上 X1 X2脚接了外部无源晶振20M,CLKIN接地。使用函数
void InitSysCtrl(void)
{
// Disable the watchdog
DisableDog();
// Initialize the PLL control: PLLCR and CLKINDIV
// DSP28_PLLCR and DSP28_CLKINDIV are defined in DSP280x_Examples.h
InitPll(DSP28_PLLCR,DSP28_CLKINDIV);
// Initialize the peripheral clocks
InitPeripheralClocks();
}
在“DSP280X_Eamples.h”中定义了
#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT
#define DSP28_PLLCR 10
但是没有得到想要的晶振频率。从例子中也找不到配置使用X1 X2引脚的晶振。求解!!!!!!!!!!!!查看了很多例子InitSysCtrl()函数都一样,不知道是否还有其他文件有关时钟的配置???
可以确认硬件没有虚焊,晶振有起震。
附件为工程,请大神给予帮助
rookiecalf:
回复 jianxing ding:
实际输出是多少?或者再使用5倍频,不分频试试,看看这些设定后的比率是否正确,如果正确,可能是其他地方的问题。因为你使用的SCLKOU,那边输出一般也是有配置项的。
目前硬件上 X1 X2脚接了外部无源晶振20M,CLKIN接地。使用函数
void InitSysCtrl(void)
{
// Disable the watchdog
DisableDog();
// Initialize the PLL control: PLLCR and CLKINDIV
// DSP28_PLLCR and DSP28_CLKINDIV are defined in DSP280x_Examples.h
InitPll(DSP28_PLLCR,DSP28_CLKINDIV);
// Initialize the peripheral clocks
InitPeripheralClocks();
}
在“DSP280X_Eamples.h”中定义了
#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT
#define DSP28_PLLCR 10
但是没有得到想要的晶振频率。从例子中也找不到配置使用X1 X2引脚的晶振。求解!!!!!!!!!!!!查看了很多例子InitSysCtrl()函数都一样,不知道是否还有其他文件有关时钟的配置???
可以确认硬件没有虚焊,晶振有起震。
附件为工程,请大神给予帮助
jianxing ding:
回复 rookiecalf:
现在头大的就是系统的时钟频率不对,好像跟外部的晶振没有什么关系,换20M和换4M的。使用的硬件电路就是 X1 X2 接20M 。引脚CLKIN接地。我上面一开始有附件工程的,能否麻烦哪位大神看下,帮我配置下,我来测试下。实在不知道哪里的原因了。
目前硬件上 X1 X2脚接了外部无源晶振20M,CLKIN接地。使用函数
void InitSysCtrl(void)
{
// Disable the watchdog
DisableDog();
// Initialize the PLL control: PLLCR and CLKINDIV
// DSP28_PLLCR and DSP28_CLKINDIV are defined in DSP280x_Examples.h
InitPll(DSP28_PLLCR,DSP28_CLKINDIV);
// Initialize the peripheral clocks
InitPeripheralClocks();
}
在“DSP280X_Eamples.h”中定义了
#define DSP28_CLKINDIV 0 // Enable /2 for SYSCLKOUT
#define DSP28_PLLCR 10
但是没有得到想要的晶振频率。从例子中也找不到配置使用X1 X2引脚的晶振。求解!!!!!!!!!!!!查看了很多例子InitSysCtrl()函数都一样,不知道是否还有其他文件有关时钟的配置???
可以确认硬件没有虚焊,晶振有起震。
附件为工程,请大神给予帮助
Martin Yu:
回复 jianxing ding:
按照这个表格配置,PLLCR[DIV] = 10, PLLSTS[CLKINDIV] = 0, 20*10/2 =100MHz; 或PLLCR[DIV] = 5, PLLSTS[CLKINDIV] = 1, 20*10/1 = 100MHz;或者按照发的文件直接只配置PLLCR[DIV] = 10即可,这个是TI的例程。你是如何测试CPU时钟的正确性的?还有外部的电路确认过吗?电容的值等。