当前位置:文档之家› 基于DSP的时钟系统设计

基于DSP的时钟系统设计

题目: 基于DSP的时钟系统设计引言DSP 芯片既具有高速数字信号处理功能,又具有实时性强、功耗低、集成度高等嵌入式微计算机的特点,所以随着科技的发展,DSP 技术在机电控制领域的应用愈加广泛。

LED 可显示字符,且显示清晰美观、功耗低,在电子产品中也广泛应用。

现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。

在一个DSP应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了DSP芯片系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用DSP芯片内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高,DS12887,DS1302的情况下,通常采用这种方法,典型的时钟芯片有:X1203等都可以满足高精度的要求。

本文主要介绍用DSP芯片内部的定时/计数器来实现电子时钟的方法,本设计由TMS320LF2407芯片和LED数码管为核心,辅以必要的电路,构成了一个DSP电子时钟。

1方案论证与比较1.1数字时钟方案数字时钟是本设计的最主要的部分。

根据需要,可利用两种方案实现。

方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。

该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。

为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。

当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。

而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

方案二:本方案完全用软件实现数字时钟。

原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。

利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。

该方案芯片不上电,DSP具有硬件电路简单的特点。

而且,由于是软件实现,当.程序不执行时,时钟将不工作。

基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。

1.2数码管显示方案方案一:静态显示。

所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。

该方式每一位都需要一个8 位输出口控制。

静态显示时较小的电流能获得较高的亮度,且字符不闪烁。

但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

方案二:动态显示。

所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。

利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。

显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。

调整参数可以实现较高稳定度的显示。

动态显示节省了I/O 口,降低了能耗。

从节省I/O口和降低能耗出发,本设计采用方案二。

2.硬件设计2.1总体设计利用TMS320LF2407芯片制作简易电子时钟,由六个LED数码管、五个按键、数码管驱动74HC273及数码管位选74HC138,如下图2.1所示:电源部分复位电路按键+5V直流电源控制部分TMS320LF2407数码管驱动位选部分74HC13874HC2736个七段共阴极数码管显示秒、分、时位图2.1 系统框图2.2模块设计2.2.1 位选芯片74HC13874HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。

74HC138可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。

74HC138与74HC238逻辑功能一致,只不过74HC138为反相输出。

74HC138译码器可接受3位二进制加权地址输入(A, B和C),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。

74HC138特有3个使能输入端:两个低有效(-S2和-S3)和一个高有效(S1)。

除非S2和S3置低且S1置高,否则74HC138将保持所有输出为高。

利用这种复合使能特性,仅需1片74HC138芯片即可轻松实现6个数码管的选择导通。

如图2.2所示:译码器74HC138 2.2 图2.2.2 驱动芯片74HC27374HC273是一款高速CMOS器件,74HC273引脚兼容低功耗肖特基TTL(LSTTL)系列。

74HC273具有八路边沿触发,D 型触发器,带独立的D输入和Q输出。

74HC273的公共时钟(CLK)和主复位(-CLR)端可同时读取和复位(清零)所有触发器。

每个D输入的状态将在时钟脉冲上升沿之前的一段就绪时间内被传输到触发器对应的输出(Qn)上。

一旦CLR输入电平为低,则所有输出将被强制置为低,而不依赖于时钟或者数据输入。

74HC273适用于要求原码输出或者所有存储元件共用时钟和主复位的应用,如下图2.3所示:图2.3 74HC2732.2.3数码管显示下图为共阴极数码管的引脚图,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由DSP控制器控制组合0-9十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。

口输出段码对各个显示位来说都是相同I/O位8由于各位的段码线并联,的,如下图2.4所示:图2.4 LED 数码管2.2.4控制部分TMS320LF2407A是TI公司推出的一款定点DSP控制器,它采用了高性能静态CMOS技术,使得供电电压降为3.3V,减小了控制器的功耗;40MIPS的执行速度使得指令周期缩短到25ns(40MHz),从而提高了控制器的实时控制能力;集成了32K字的闪存(可加密)、2.5K的RAM、500ns转换时间的A/D转换器,片上事件管理器提供了可以满足各种电机的PWM接口和I/O功能,此外还提供了适用于工业控制领域的一些特殊功能,如看门狗电路、SPI、SCI和CAN 控制器等,从而使它可广泛应用于工业控制领域。

图2.5 DSP2407最小系统图如上图2.5所示,DSP2407最小系统包括6部分:DSP2407(TMS320LF2407A) 、电源、晶体振荡器接口电路、JTAG接口电路、XF引脚LED指示灯和I/O口LED指示灯。

本最小系统选择了TI公司的TPS767D301作为DC/DC转换芯片。

它固+3.3V电压,可输出一路+5V是一个双路低压降的电压调节器,输入为定电压及一路1.5~5V可调电压,每路电流最大输出为1A。

电源电路原理图如下图所示。

+3.3V输出电压供LF2407A使用,另一路可输出+1.8V,本最小系统暂不用,如下图2.6所示:图2.6 DSP2407最小系统电源电路原理图PLL滤波电路。

在DSP内部,有一个锁相环时钟模块PLL(Phase-Lock loops),它是被作为一个片内未设看待的,接在片内外设总线上,为DSP提供所需的各种时钟信号。

DSP2407的锁相环时钟电路需要片外滤波器电路的配合,PLL局部电路图如下图2.7所示。

DSP2407A最小系统时钟硬件设计有两种工作方法。

一种是利用锁相环时钟模块PLL中提供的内部振荡电路,在DSP芯片的引脚XTAL1/CLKIN与XTAL2之间连接一晶振,启动内部振荡器。

另一种方法是不使用片内的振荡电路,完全由外部有源晶体振荡器产生时钟信号,直接接入XTAL1/CLKIN引脚,此时,XTAL2脚悬空。

这种方法称为晶振方式。

但着一方式仍是用片内的PLL倍频电路来对这一来自片外的时钟进行倍频,以产生所需的时钟。

图2.7 锁相环电路PLL片外滤波电路JTAG标准接口。

JTAG(Joint Test Action Group)是1985年指定的检测PCB和IC芯片的一个标准。

仿真器一般提供DSP的JATG时钟信号,只参与数据的传输,即将目标代码通过JATG接口从PC机下载到目标系统的存储器中。

仿真器JTAG的仿真头如下图2.8及JTAG仿真信号表2.1所示:图2.8 仿真器JTAG的仿真头仿真信号JTAG 2.1 表输出输入//输出DSP信号说明JTAG信仿真器输入状态状态号输入仿真引脚0 输入/EMU0 输出/输出输入仿真引脚EMU1 1输入该目标板存在检测信号。

引脚用于指示仿真器是以及目否与目标板接上,输出PD(Vcc) 输入DSP 标板是否已经上电。

引脚必须与目标板的PD Vcc相连。

的电源输出输入测试时钟。

由仿真器提供TCK的时钟信10.368MHz的号输TCK_RET测试时钟返回对仿真输而言,是输入信输测试数据输入(针TDI输DS输测试数据输出(针输TDODS输输测试方式选TMS输-TRST输测试复位2.3系统总原理图图2.9 总体硬件电路图3.软件设计3.1程序流程图1Y,分清0电子时钟程序流程图 3.1 图3.2程序清单程序编写如下:#include F2407REGS_c.hunsigned int sec,min,hour,i;unsignedchartable[]={0xFF3F,0xFF06,0xFF5B,0xFF4F,0xFF66,0xFF6D,0xFF7D,0xFF07,0xFF7F, 0xFF6F}; //程序初始化unsignedchartablewe[]={0xFF00,0xFF01,0xFF02,0xFF03,0xFF04,0xFF05,0xFF06};v oiddelay(unsigned int j);void main() //主程序{DSP2407_Initialing();Ioport_Initialing();asm(CLRC INTM);EV AIMRA= EV AIMRA|0x0080; //仅允许定时器1的周期中断EV AIMRA=EV AIMRA&0x0080; //清除定时器1的周期中断T1CON=0x170C; //timer1为连续增计数模式,预分频值为128,使用内部时钟200ms的周期寄存器值设为//timer1 T1PER=0xF424;T1CNT=0x00; //timer1的计数器清0sec=0;min=0;hour=0;i=0;While(1){PCDATDIR=0x00FF;if(i==5) //i等于5为1秒{i=0;sec++; //秒加1PBDATDIR=tablewe[0]; //选通秒的个位PFDATDIR=0xFF01; //选通74HC273 PADATDIR=tabale[sec_x0010_]; //秒个位显示PFDATDIE=0xFF00; //关断74HC273 PBDATDIR=table[1]; //选通秒的十位PFDATDIR=0xFF01; //选通74HC273 PADATDIR=table[sec/10]; //秒十位显示PFDATDIR=0xFF00; //关断74HC273}if(sec==60){sec=0;分钟的显示// min++;PBDATDIR=table[2];PFDATDIR=0xFF01;PADATRDIR=table[min_x0010_];PFADATDIR=0xFF00;PBDATDIR=tablewe[3];PFDATDIR=0xff01;PADATDIR=table[min/10];PFDATAIR=0xFF00;}if(min==60){min=0;hour++; //小时的显示PBDATDIR=tablewe[4];PFDATDIR=0xFF01;PADATDIR=table[hour_x0010_];PFDATDIR=0xFF00;PBDATDIR=tablewe[5];PFDATDIR=0xFF01;PADATDIR=table[hour/10];PFDATDIR=0xFF00;}if(hour==24)hour=0;if(PCDATDIR=0x00FE) //按键T1,时、分、秒复位为0 {delay(100); //调用延时程序PCDATDIR=0x00FE;min=0;sec=0;hour=0;}if(PCDATDIR=0x00FD) //按键T2,时钟停止计时{delay(100);PCDATDIR=0x00FD;PFDATDIR=0xFF00;}if(PCDATDIR=0x00FB) //按键T3,时钟开始计时{delay(100);PCDATDIR=0x00FB;PFDATDIR=0xFF01;}if(PCDATDIR=0x00F7) //按键Tm,调分{delay(100);PCDATDIR=0x00F7;min++;}if(PCDATDIR=0x00EF) //按键Th,调时{delay(100);PCDATDIR=0x00EF;hour++;}}void interrupt INT2() //定时器中断程序{swith(PIVR) //有外设中断向量寄存器PIVR判断case 0x0027:i++;T1CNT=0x00;EV AIFRA=EV AIFRA&0x0080;break;default;break;}void delay(unsigned int j) //延时程序{unsigned k,m;for(m=0;m<j;j++){for(k=0;k<50;k++)}}3.3 程序调试步骤1.实验准备(1) 连接设备:关闭计算机和实验箱电源;关闭实验箱上的三个开关。

相关主题