APP下载

TMS320F28335与时钟芯片DS1302的串行通信

2016-06-01赵振东李彦斌董晓龙姬占涛

单片机与嵌入式系统应用 2016年3期
关键词:示波器初值寄存器

赵振东,李彦斌,董晓龙,姬占涛

(西安工程大学 电子信息学院,西安710048)



赵振东,李彦斌,董晓龙,姬占涛

(西安工程大学 电子信息学院,西安710048)

摘要:DS1302是一种串行时钟芯片,在需要实时时钟的嵌入式系统中得到了越来越广泛的应用。本文首先介绍了DS1302的结构和工作原理,并对其读写时序进行了详细的分析,介绍了TMS320F28335通过模拟时序的方法实现了对DS1302的读写操作,详细介绍了其开发过程,并利用示波器观察了其输出的波形,验证了软件和硬件的正确性。

关键词:TMS320F28335;DS1302;模拟时序

引言

目前嵌入式设备大多工作于实时的环境中,这样不仅可以记录实时的数据,而且向外界提供的数据具有时间信息,为以后对数据的分析与检索带来了方便。然而有些CPU芯片(如DSP)内并未集成RTC(实时时钟)控制器,所以为实现此功能就需要在外部扩展实时时钟控制芯片。本文使用TI公司C2000系列DSP TMS320F28335与MAXIM公司的串行实时时钟芯片DS1302来显示时钟,并通过模拟串行控制协议来实现对DS1302的操作。

1TMS320F28335

本文以TMS320F28335为例,在CCS3.3环境下对DS1302进行了开发,图1为TMS320F28335与DS1302连接原理图。

图1 TMS320F28335与DS1302连接原理图

2DS1302工作原理

DS1302是MAXIM公司生产的一款实时时钟芯片,并且具备涓流充电的功能,在手持设备以及通信领域得到了普遍的应用,它的主要特性如下:

① DS1302能够实现秒、分钟、小时、日、周、月、年的显示,而且具有闰年自动调整的功能,并且可以配置时间显示的方式为24小时制或者12小时制。

② 有数据存储空间RAM,其大小为31字节。

③ 相对于并行通信的方式来说,使用串行I/O通信的方式,比较节省I/O口。

④ DS1302在2.0~5.5 V之间的电压范围内均可以正常工作。

⑤ DS1302在2.0 V的工作电压下,其工作电流不超过300 nA,可见其功耗很低。

⑥ DS1302共有8个引脚,其经典的应用电路是1引脚作为主电源VCC2的供电引脚,2引脚和3引脚分别作为晶振的输入X1和输出X2的引脚,4引脚是供电电源GND的引脚,5引脚是使能端CE的输入引脚,6引脚是数据传输I/O的输入/输出引脚,7引脚是通信时钟SCLK的输入引脚,8引脚是备用电源VCC1的供电引脚。

2.1DS1302寄存器介绍

DS1302的地址寄存器由8位组成,各个位的介绍略——编者注。本文考虑CLOCK功能,即相应的对应位为0;由于要进行写操作,则对应的最高位为1;而地址寄存器所要表示的地址是由A0~A4来决定的;最低位为读写位。

DS1302的时钟寄存器中秒、分、时、日、月、周、年寄存器的设置略——编者注。地址的变化范围分别为00000~00111,其中涓流充电的寄存器地址为01000。在DS1302的地址中最高位和最低位已经确定。

2.2DS1302通信时序

DS1302采用CE、I/O和 SCLK这3根线通信,其中使能线是CE,时钟线是单方向的SCLK, 双方向流通的I/ O数据线。具体的时序如图2所示。

从图2可以看到进行读、写操作的时候,写操作分成两步:第一步为写入指向所要写入数据的寄存器的地址;第二步是写入的初值;读操作也分为两步:第一步为写入指向所要读取数据的寄存器的地址;第二步为读取对应的值;下面具体分析:CE使能高电平有效,针对写操作,首先写的是所要指向的寄存器的地址,比如秒寄存器,先写其对应的地址,然后再写入对应的初值,同时可以看到,当SCLK由低电平变为高电平时,数据才被写到DS1302;针对读操作,首先写的是所要指向的寄存器的地址,比如秒寄存器,然后读对应的值,同时可以看到,当SCLK由高变低的时候,数据才被读取,写到CPU中。

需要注意的是,读数据的时候,在写完所要指向的寄存器的地址之后,即要写入的所要指向的寄存器地址的最后一位所对应的是SCLK的第8个脉冲的上升沿,而将要读取的数据的第1位则对应的是SCLK第8个脉冲的下降沿。

图2 读写时序

由实际的时序图3可看出,电平的变化是需要一个过程的,即慢慢地上升和下降。那么在写程序时就要注意好对应的时刻,如果在电平还未稳定的时候进行读、写操作,将会导致读写的失败。在图中可以看到,tCDD、tDC、tCL、tCH、tR、tF的时间需要确定,因此要查到这些变量对应的值。在本实验中取tCDD+ tF+tCL<1 μs; tR+tCH<1 μs;tCDD<3 μs。

图3 读写对应的时序图

2.3硬件电路

DS1302实际的硬件连接电路图如图4所示,其中主电源引脚是VCC2,DS1302的供电是由VCC1与VCC2的电压大小决定的,当两者相差0.2 V时,即VCC2高于 VCC1时,由 VCC2供电;VCC2低于 VCC1时,由 VCC1供电。DS1302的基准时钟为32.768 kHz,接在X1与X2之间;若使用的是有源晶振,只需接到X1端子上即可,X2引脚悬空;GND为接地引脚;CE 是DS1302的使能引脚;I/O为读写数据引脚;SCLK是时钟的输入引脚,它是为通信提供的时钟信号;VCC1是备用电源引脚。

图4 硬件连接图

3DSP主程序设计

图5 主程序流程图

主程序流程图如图5所示,简要地描述了DS1302读取数据的整个过程,在后面的程序中详细地介绍了各个模块的操作、使用的规则、及其需要注意的问题。主要程序略——编者注。

I/O通信要注意读写方向,写程序时,需要把TMS320F28335与之对应的GPIO配置为输出口,对DS1302读操作时要把TMS320F28335对应的GPIO配置成输入口,即为以下程序:

EALLOW;

GpioCtrlRegs.GPCDIR.bit.GPIO79=1;

EDIS;

write_ds1302_byte(addr);

//对DS1302进行写操作

EALLOW;

GpioCtrlRegs.GPCDIR.bit.GPIO79=0;

//配置GPIO为输入,即对DS1302进行读EDIS

4实验结果

DS1302写入和读出的数据是低位先发,DS1302写入数据是在时钟的上升沿,而读出数据则在时钟的下降沿。在读取数据时,若指向读寄存器的指针所对应的第8个脉冲,则要注意第8个脉冲的上升沿对应的是指向读寄存器指针的最后1位,下降沿所对应的是读数据的第1位。

4.1写入初值

图6为清除保护位操作,控制寄存器地址为8EH,控制字为00,为了能给寄存器写入控制字,写入秒、分、时、日、月、周日、年的初值,DS1302写入数据应是从低位先发的,分别为0111 0001B、0000 0000B,反过来看即为8EH、00。

图6 清除保护位

图7为指向秒、分寄存器的指针值与写入的初值,即秒寄存器地址为80H,初值为18,分寄存器地址为82H,初值为48。由于是低位先发,对应的示波器的数为0000 0001B、 0001 1000B、0100 0001、0001 0010,初值对应的是BCD码,所以为18秒、48分。

图7 写秒、分寄存器

图8为指向时、日寄存器的指针值与写入的初值,即秒寄存器地址为84H,初值为16,分寄存器地址为86H,初值为14。由于是低位先发,对应的示波器的数为0010 0001B、0110 1000B、0110 0001B、0010 1000B,初值对应的是BCD码为16时,14日。

图8 写时、日寄存器

图9为指向月、周寄存器的指针值跟写入的初值,即秒寄存器地址为88H,初值为02,分寄存器地址为8AH,初值为07。由于是低位先发,对应的示波器的数为0001 0001B、0100 0000B、0101 0001B、1110 0000B,初值对应的是BCD码为2月,星期日。

图9 写月、周寄存器

图10为指向年寄存器指针值与写入的初值,即秒寄存器地址8CH与初值13,以及写保护,控制寄存器地址为8EH,控制字为01。由于是低位先发,对应的示波器的数为0011 0001B、1100 1000B、0111 0001B、0000 0001B,初值对应的是BCD码,表示13年。

图10 写年寄存器和写保护寄存器

写入的初值为13年2月14日16时53分39秒,周日。

4.2读寄存器的值

读寄存器的标准为写入指向读寄存器的地址,然后针对具体的地址读操作。

图11为指向秒、分寄存器的指针值与读出的值,即秒寄存器地址81H,读出值为1010 0010B,分寄存器地址为83H,读出值为1000 1000B。由于是低位先发,因此对应的读出数为0100 0101B、0001 0010B,对应的BCD码为45秒,12分。

图11 读秒、分寄存器

图12为指向时、日寄存器的指针值跟读出的值,即秒寄存器地址85H,读值1110 1000B;分寄存器地址87H,读出值为0010 1000B。由于是低位先发,因此对应的读出数为0001 0111B,0001 0100B。对应的BCD码为17时,14日。

图12 读时、日寄存器

图13指向月、周寄存器的指针值跟读出的值,即秒寄存器地址89H,读出值0100 0000B; 分寄存器地址8BH,读出值为1110 0000B。由于是低位先发,因此对应的读出数为0000 0010B,0000 0111B。对应的BCD码为2月,星期日。

图13 读月、周寄存器

图14为指向年寄存器的指针值及示波器的读出值,即秒寄存器地址8DH,读出值1100 1000B,由于是低位先发,所以对应的读出数为0001 0011B。对应的BCD码为13年。

图14 读年寄存器

综上所述,读出的值为13年2月14日17时12分45秒,星期日。

结语

本文研究了TMS320F28335与DS1302通信的问题,从实验中可以看出年、月、日、周寄存器的值在当天读取是不变的,而秒、分、时寄存器的值是变化的,与实际是一致的。从另一个角度来说,这也验证了通信协议的正确性,即手册资料的正确性。

编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。

参考文献

[1] TI.TMS320F28335,TMS320F28334,TMS320F28332,TMS 320F28235,TMS320 F28234,TMS320F28232数字信号控制器 (DSC) [EB/OL].[2015-09].http://www.ti.com.cn/cn/lit/ds/symlink/tms320f28332.pdf?keyMatch=tms 320 f28335&tisearch=Search-CN-TechDocs.

[2] 刘陵顺,高艳丽,张树团,等.TMS320F28335 DSP 原理及开发编程[M].北京:北京航空航天大学出版社,2011:408-419.

[3] MAXIM.DS1302 Trick-Charge Timekeeping Chip [EB/OL].[2015-09].https://www.maximintegrated.com/cn/products/digital/real-time-clocks/DS1302.html.

赵振东(研究生)、李彦斌(工程师),研究方向为现代电力电子变换与电力传动技术、伺服系统。

Zhao Zhendong,Li Yanbin,Dong Xiaolong,Ji Zhantao

(School of Electronic Information,Xi′an Polytechnic University,Xi′an 710048,China)

Abstract:The DS1302 is a kind of serial clock chip,which has been widely applied in the embedded system that needs the real-time clock.In the paper,the structure and operating principle of the DS1302 are described,and its read and write timing are analyzed.The TMS320F28335 realizes read and write operations of DS1302 by analog timing method,and the development process is introduced.The correctness of the hardware and software is verified through the output waveform of the oscilloscope.

Key words:TMS320F28335;DS1302;analog timing

收稿日期:(责任编辑:杨迪娜2015-09-29)

中图分类号:TP29

文献标识码:A

猜你喜欢

示波器初值寄存器
具非定常数初值的全变差方程解的渐近性
带有随机初值的复值Ginzburg-Landau方程的弱平均动力学
STM32和51单片机寄存器映射原理异同分析
一种适用于平动点周期轨道初值计算的简化路径搜索修正法
退化抛物型方程的一个初值反演问题
Lite寄存器模型的设计与实现
移位寄存器及算术运算应用
一款教学示波器的Y通道设计与实现
可携带式虚拟双踪示波器
基于TEGRA K1的实时信号处理示波器的设计