第3期
2007年6月
微 处 理 机
MICROPROCESSORS
No.3
Jun.,2007
基于LF2407A的时钟芯片DS17887的应用
李 明,程明霄,朱宇翔
(南京工业大学自动化学院,南京210009)
摘 要:介绍了新型DSP———LF2407A的特性和时钟芯片DS17887的工作原理,并介绍了基于
LF2407A控制DS17887进行时钟读写的软硬件设计方案。该方案发挥了DSP的优势,解决了测控系统对时间数据的需求问题。
关键词:数字信号处理器;LF2407A;DS17887中图分类号:TP368.1 文献标识码:B 文章编号:1002-2279(2007)03-0117-03
ApplicationofClockCMOS-ChipDS17887basedonDSP—LF2407A
LIMing,CHENGMing-xiao,ZHUYu-xiang
(CollegeofAutomatization,NanjingUniversityofTechnology,Nanjing210009,China) Abstract:Thispaperintroducesthecharacteristicsofnew-styleDSP—LF2407AandtheworkprincipleofClockCMOSchip—DS17887.ThentheauthorintroducesthedesignofhardwareandsoftwareforDS17887’sreadingandwritingbasedonLF2407A.ThismethodshowstheadvantageofDSPandsolvestheneedingoftimedateforinstrument.
Keywords:DSP;LF2407A;DS178871 引 言
随着DSP芯片功能越来越强,速度越来越快,性价比的不断提高以及开发工具的日趋完善,广泛用于通信、雷达、声纳、遥感、生物医学、机器人、控制、精密机械、语音和图像处理等领域,并且日益显示其巨大的优越性和良好的发展前景。虽然对一般分析仪器而言普通单片机的功能已比较全面,但随着过程分析仪器的进一步智能化、网络化,普通单片机无论是运行速度方面还是功能模块方面都显得力不从心,显然已很难进一步完善当前测控平台的功能,更无法负荷未来仪器的更新换代和功能扩展,而新型控制器DSP就在此时应运而生。作为新型芯片,DSP无论运行速度、功耗,还是内部功能模块的数量和种类都更胜普通的单片机一筹。本文详细介绍了DSP处理器LF2407A和时钟芯片DS17887的工作原理,并介绍了LF2407A控制DS17887进行读写的软硬件设计方案。
用而设计的TMS320LF2407ADSP。下面简要介绍一下此次设计中所使用的TMS320系列DSP的主要
[1]
特点:
・采用静态CMOS技术,使得供电电压降为3.3V,降低了控制器功耗;40MIP/S的执行速度使得指令周期缩短到25ns,从而提高了控制器的实时控制能力;
・片内有高达32K字316位的Flash程序存储器(EEPROM,4扇区)、2.5K字316位的数据/程序RAM、544字双端口RAM(DARAM)、2K字的单口RAM(SARAM);可扩展的外部存储器共192k字316位的空间,分别为64k字程序存储器空间、64k字
数据存储器空间、64k字I/O空间;
・10位ADC:最小转换时间为500ns、8个或16个多路复用的输入通道、可选择由两个事件管理器来触发两个8通道输入ADC或一个16通道输入ADC;
・CAN2.0B模块,即控制区域网络块;・高达41个可单独编程或复用的通用输入/输出(GPIO)引脚;
・5个外部中断(2个驱动保护、1个复位和2个可屏蔽中断);
・电源管理,具有3种低功耗模式,能独立地将
2 DSP———LF2407A简介
选择DSP处理器时,作者主要考虑其运算速
度、总线宽度和性价比。由于我们开发的是便携式仪表的控制板,所以选用的是专门为了满足控制应
作者简介:李明(1980-),女,辽宁丹东人,硕士研究生,主研方向:单片机嵌入式系统的开发、硕基于DSP处理器的系统开发等。收稿日期:2005-02-26
・118・
微 处 理 机2007年
外围器件转入低功耗工作模式;
・看门狗(WD)定时器模块;
LF2407A的结构和高性能可以很好地适应本测控平台控制需求,它利用16位字长和32位寄存器来储存中间结果,并且有两个硬件移位寄存器独立计数,这个结合可以减小量化误差和截断误差,提高附加功能的处理能力。
3 时钟芯片DS17887
测控平台有许多与时间相关的操作,这一系列操作如果要通过CPU的定时器中断来计时的话,显然会过多占用系统资源,并且不能很精确的计时。
本设计采用了一块实时时钟芯片DS17887,它是微机中常用的时钟芯片。该芯片是24脚双列直插封装的一个集成组件,组件中包含石英晶体、锂电池、实时时钟、日历时钟、报警时钟、和128个字节的RAM,其中15个字节用作实时时钟的控制寄存器,其余113个字节可作普通RAM使用,其中数据也可以十年不丢失,DS17887的年月日、时分秒等信息都[3]
放在内部寄存器中。
采用双路2-4线译码器74HC139,将译码器的一路输出用于对LF2407A控制信号进行译码,生成DS17887的片选信号,译码器的其余通道可用于生成其他外设的控制信号。具体硬件电路设计如图2所示。将LF2407A的I/O空间选通引脚IS与其地址线A2结合起来,共同控制时钟芯片的CS片选引脚;而将LF2407A的地址线A0接时钟芯片的数据/代码选通引脚———ALE。在此连接方式下,I/O空间0x04对应时钟模块的数据空间,0x05则对应时钟模块代码空间。
图2 时钟芯片片选信号设计5 软件设计DS17887读写命令格式由其内部寄存器A、B、C、D决定。寄存器C、D的设置功能在本次设计中
4 硬件接口设计
DS17887的总线工作方式须通过Pin1脚
(PWR)进行选择。PWR接低电平时,芯片工作在Intel总线方式;反之芯片工作于Motorola总线方式。此处把芯片的Pin1脚(MOT)接地,使其工作于Intel
未使用,在此不做详细介绍,下面主要介绍内部寄存器A、B的设置方法及功能。
DS17887控制寄存器A有各布尔位定义如表1
所示
[3]
。
表1 DS17887A控制寄存器
BIT6DV2
BIT5DV1
BIT4DV0
BIT3RS3
BIT2RS2
BIT1RS1
BIT0RS0
总线方式。DS17887内部自带锂电池,可以在不需
要外部电压的情况下工作十年,所以不论外部供电与否,只要启动DS17887的计时功能,芯片都将自动计时。
BIT7UIP
UIP位是更新周期标志位。该位为“1”时,表示芯片正处于或即将开始更新周期,此时程序不准读写片内的时间寄存器。该位为“0”时,表示至少在μs后才开始更新周期,此时程序可读芯片内的244
时间寄存器。DV0、DV1、DV2是芯片内部振荡器RTC控制位。当芯片解除复位状态将010写入DV0、DV1、DV2后,另一个更新周期将在500ms后
开始。在程序初始化时可用这三位精确地使芯片在
图1 硬件接口电路设计图
设定的时间开始工作。DS17887固定使用32768Hz的内部晶体,只有一种010的组合选择可启动RTC。RS3、RS2、RS1、RS0是周期中断的可编程方波输出
硬件电路设计时,需要注意以下两个问题:①工
作电压———时钟芯片DS17887的工作电压可在5V和3V中自选。在本平台中,鉴于LF2407A工作电压为3.3V,作者选用3V工作电压方式。此时时钟芯片可接收2.5~3.7V的数据信号,因此时钟芯片DS17887与LF2407A数据线和控制线连接时无需进行电压转换,以往比较常见的时钟芯片DS12887仅支持4.5~5.5V工作电压,显然不适合此处使用。②片选信号线和数据/代码选通线———本系统
速率选择位。各种不同的组合可以产生不同的输出,由于本次设计没有使用此功能,这里不详细介绍。DS17887控制寄存器B的各布尔位定义如表2所示
[3]
。
表2 DS17887B控制寄存器
BIT6
PPIE
BIT5AIE
BIT4BIT3BIT2BIT1BIT0UIESQWEDM24/12DSE
BIT7SET
3期李 明等:基于LF2407A的时钟芯片DS17887的应用
・119・
SET位为“0”时,芯片处于正常工作状态,每秒
产生一个更新周期来更新时标寄存器;为“1”时,芯片停止工作,程序在此期间可初始化芯片的各个时标寄存器。DM为“0”时,用的是十进制BCD码;DM为“1”时,用的是二进制码。24/12位用于24/12小时模式设置位。24/12位=“1”时,用24小时
clock_code=11;
clock_data=0x86;//设置芯片停止工作,使
用2进制码,24小时制
clock_code=10;
clock_data=(clock_data&0x8f)|0x20;//将010写入DV0、DV1、DV启动RTC
clock_code=9
clock_data=year;//写入“年”…………//仿照写入“年”依次写入月、日、小时、分、秒
clock_code=11;
clock_data=0x06;//启动芯片工作}
工作模式;24/12位为“0”时用12小时工作模式。
一个DSP系统程序项目往往由头文件ioreg.h(对程序中用到的寄存器以指针方式进行寻址)、命令文件.cmd(实现对程序存储器空间和数据存储器空间的分配)、vectors.asm(系统初始化,定义所需的复位和中断向量)和主程序———C语言程序这四部分组成,下面以写时钟模块的C语言程序为例介绍软件设计方法,源代码如下:
#include\"ioreg.h\"//头文件,定义程序中用到的寄存器
ioportunsignedintport0004;//定义I/O空间0x0004
ioportunsignedintport0005;//定义I/O空间0x0005
#defineclock_dataport0004//clock_data对应6 结束语
此方法已经实际应用在多组分烟气分析仪中,用来读写时钟数据,取得了良好的效果。很多与LF2407A系列类似的DSP芯片都可以用上述方法
实现对DS17887时钟芯片的读写操作,而DALLAS公司的一系列与DS17887类似的其他时钟芯片(如DS17885等)的使用,也可参考上面介绍的方法。
参考文献:[1] 刘和平.TMS320LF240xDSPc语言开发应用[M].北
京:北京航天航空大学出版社,2003年.[2] 清源科技.TMS320LF240xDSP应用程序设计教程
[M].北京:机械工业出版社,2003.
[3] DALLAS公司产品介绍[DB/CD].DS178873Volt/5
VoltRealTimeClock.
时钟芯片数据空间#defineclock_codeport0005//clock_code对应时钟芯片代码空间voidwriteclock()//写时钟子程序
{
(上接第116页)盘来引导嵌入式Linux的方法。通过了解DOC二进
M-Systems提供的BootSoftwareDevelopment制扇区的结构我们给出了IPL实现的方案,并利用Kit(BDK)中提供了大量的API帮助SPL的开发。以BDKAPI改写了Redboot,从DOC中读入内核映像和读操作为例,主要包含如下步骤:①调用bdkSetBoot2根文件系统来完成引导过程。由于没有使用传统而PartitionNo()函数,指定要读取的分区;②调用bdk昂贵的NORFlash引导器件,从而节省了整个系统的GetBootPartitionInfo()函数得到分区的信息,如分区成本。大小,块大小,以及分区的签名等数据。③调用bdk2参考文献:
NC.DiskOnChipG4DataSheet[EB/CopyBootArea()函数,复制分区数据到指定的RAM[1] M-SYSTEMS,I
内存地址。
[2] M-SYSTEMSINC.DiskOnChipTrueFFS6.3BootSoft2
有了对DOC的读写能力,Redboot在成功初始化wareDevelopmentKit(BDK)DeveloperGuide[EB/OL].硬件以后,从读内核映像分区分别读入操作系统映像http://www.m-systems.com.2005.
NC.DiskOnChipTrueFFSBlockDevice和根文件系统映像,然后跳转PC指针,启动Linux。[3] M-SYSTEMS,I
(BD)6.3SoftwareDevelopmentKitDeveloperGuide系统成功引导后,通过根文件系统中的TrueFFS驱动
[EB/OL].http://www.m-systems.com.2005.
程序,将DOC数据分区中的内容mount到根文件系
[4] INTELCORPORATION.IntelIXP4XXProductLineof
统中,就能访问到DOC中的应用程序和数据了。NetworkProcessorsDeveloper’sManual[EB/OL].
OL].http://www.m-systems.com.2005.
4 结束语
上面讨论了在IXP425平台上使用DOCG4电子
http://www.intel.com.2003.
[5] 杜春雷.ARM体系结构与编程[M].北京:清华大学出
版社,2006.
因篇幅问题不能全部显示,请点此查看更多更全内容