发表于:2009/5/22 1:11:12
#0楼
以前提到lpc938内部rc振荡器频率不准确,造成通信出错的现象,最近才测了下,发现本应是7.373mhz的频率都达到7.6m左右,测量多个都是这样,测lpc935则没这样问题。
最后决定调整trim寄存器来调整频率,调整方法是在实验板上p0口外接6个led,反应trim寄存器值,再接2个按键调整trim寄存器值,使能x2的频率输出功能,接频率计,调整正常时频率计应为3.686m左右(cclk/2)。测试程序如下:
//********************************************************************
#include
sbit up=p0^6; //增加
sbit dn=p0^7; //减少
//--------------------------------------------------
//io_init:初始化io子程序
//--------------------------------------------------
void io_init(void)
{
p0m1=0x00; //p0准双向
p0m2=0x00;
p3m1=0x00; //p3准双向
p3m2=0x00;
}
//--------------------------------------------------
//delay:延时子程序
//--------------------------------------------------
void delay(void)
{
unsigned int data i; //循环数
unsigned int data j; //循环数
for(i=0;i
//--------------------------------------------------
//主程序
//--------------------------------------------------
void main(void)
{
io_init();
trim|=0x40; //使能频率输出
while(1)
{
if(!up)trim++; //调整trim值
if(!dn)trim--;
p0=~trim|0xc0; //显示trim值
delay(); //按键延时
}
}
得到合适的trim值后,在应用程序中初始化时注意加入更改trim的语句,否则还是出厂设置值。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=88466&Name=zhouchs
最后决定调整trim寄存器来调整频率,调整方法是在实验板上p0口外接6个led,反应trim寄存器值,再接2个按键调整trim寄存器值,使能x2的频率输出功能,接频率计,调整正常时频率计应为3.686m左右(cclk/2)。测试程序如下:
//********************************************************************
#include
sbit up=p0^6; //增加
sbit dn=p0^7; //减少
//--------------------------------------------------
//io_init:初始化io子程序
//--------------------------------------------------
void io_init(void)
{
p0m1=0x00; //p0准双向
p0m2=0x00;
p3m1=0x00; //p3准双向
p3m2=0x00;
}
//--------------------------------------------------
//delay:延时子程序
//--------------------------------------------------
void delay(void)
{
unsigned int data i; //循环数
unsigned int data j; //循环数
for(i=0;i
//--------------------------------------------------
//主程序
//--------------------------------------------------
void main(void)
{
io_init();
trim|=0x40; //使能频率输出
while(1)
{
if(!up)trim++; //调整trim值
if(!dn)trim--;
p0=~trim|0xc0; //显示trim值
delay(); //按键延时
}
}
得到合适的trim值后,在应用程序中初始化时注意加入更改trim的语句,否则还是出厂设置值。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=88466&Name=zhouchs
欢迎光临我的BLOG