您的当前位置:首页正文

基于LF2407A的时钟芯片DS17887的应用

2023-06-05 来源:意榕旅游网
 

第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.

因篇幅问题不能全部显示,请点此查看更多更全内容