万年历芯片DS1302功能测试方法研究

2019-11-06 00:27张春宇
微处理机 2019年5期
关键词:功能测试下位寄存器

张春宇

(中国电子科技集团公司第四十七研究所,沈阳 110032)

1 引 言

集成电路的发明与应用是20世纪人类科技发展史上一颗最为璀璨的明珠,它改变了人类的生产生活和思维方式,为世界的经济繁荣、社会进步做出重大贡献。进入二十一世纪,集成电路产业得到空前发展与壮大,各种各样的电子产品被科学家们研制出来,并应用于各行各业,这对集成电路生产者来说是一个巨大的挑战。缩短生产周期、及时提供高质量的产品成为他们研究的首要问题,而在集成电路的整个生产过程中,测试过程是一个非常关键和耗时的工序,所以提高集成电路测试技术,缩短测试时间,可大大缩短生产周期。计算机作为一种高速精准的高科技产品,被科学家们应用到集成电路测试中。计算机辅助测试(Computer Aided Testing,CAT)技术在此背景下应运而生,被广泛用来搭建集成电路测试系统,达到测试的目的[1]。

2 系统总体设计

DS1302 是DALLAS 公司推出的万年历时钟芯片,内含7 字节实时时钟、日历寄存器和31 字节静态RAM 寄存器。 实时时钟、日历电路提供秒、分、时、日、月、星期和年的信息设置及读取,平年和闰年每月的天数可自动调整;通过设置小时寄存器可决定采用24 或12 小时工作模式。在应用系统中DS1302 芯片只能作为从设备,它与主控设备之间的联系是通过串行外设接口(Serial Peripheral Interface,SPI)来实现的。SPI 总线是一种同步串行外设接口,它可以使MCU 与各种外围设备以串行方式进行通信以交换信息。DS1302 芯片通过 SCLK、I/O、RST 三个管脚与主控芯片的SPI 接口或普通I/O 口进行连接。编写主控芯片的底层程序,即可实现对DS1302芯片的读写控制。

根据DS1302 芯片的功能特点,经过详细的需求分析,搭建上位机-下位机(主控设备)-从设备的系统架构。选择PC 机作为上位机,负责将测试命令发送给下位机,并接收下位机的返回信息,进行显示与存储。选择单片机作为下位机,负责接收上位机发送的命令,根据命令再对DS1302 进行控制,并负责将DS1302 返回的数据发送给上位机。DS1302 作为从设备只能被单片机控制,执行单片机发送的命令并返回信息。这里单片机在与上位机通讯的网络中称为下位机,在与DS1302 芯片通讯的网络中称为主控设备,起到了承上启下的作用[2-3]。

3 系统的具体实现过程

3.1 硬件设计

在系统硬件架构中,采用PC 机作为上位机,8位单片机STC89C51 作为下位机;上位机与下位机之间经过串口串行端口进行连接[4]。由于上位机的RS232 接口为负逻辑电平,不能直接与下位机的串行端口连接,因此在两者之间添加MAXIM 公司的MAX232 电平转换芯片。由于STC89C51 没有专用SPI 接口,特别采用P2 端口的3 根口线,与DS1302的SPI 接口进行连接。系统的硬件连接如图1所示。

图1 系统硬件连接图

3.2 软件设计

系统整体的软件设计基于上位机与下位机之间通讯协议,包括上位机软件设计和下位机软件设计。

上位机与下位机之间的通讯协议是指两者之间按照约定的数据帧格式进行通讯,每一数据帧中,都会包含开始字符、结束字符、数据帧长度和命令码等信息。上位机发送给下位机的数据帧中的命令码,以及下位机返回给上位机的数据帧格式中的命令码的定义如表1所示。

表1 通迅中使用的命令码

3.2.1 上位机程序设计

上位机软件采用Visual Studio 2010 中的C#语言,在Windows 7 环境下开发[5]。C#是一种最新的、面向对象的编程语言,它使得程序员能够更快捷地编写各种基于Microsoft.NET 平台的应用程序[6]。在Visual Studio 2010 中编写串口通讯程序要比在微软早期版本的编程环境下更为方便,它提供了一个SerialPort 类,所有与串口相关的操作都可以用此类的实例来完成,如SerialPort.Open()方法为打开一个新的串行端口连接,SerialPort.Close()方法为关闭已打开的串行端口连接,SerialPort.Read()方法为从接收缓冲区读取数据,SerialPort.Write()方法为发送数据到发送缓冲区[7]等等。软件界面如图2所示。

图2 上位机程序主界面

上位机程序设计包括对DS1302 芯片的功能测试、时间寄存器测试和RAM 寄存器测试三个部分。

(1)功能测试模块

系统依次提取功能测试时间列表中设置的时间,将时间信息写入到待发送数据帧中,然后发送命令码为0 的数据帧,再延时发送命令码为1 的数据帧,读取下位机返回的数据帧,并进行判断与显示。如果返回的时间按照1 秒递增变化,则芯片功能正确,反之则芯片功能错误。在功能测试时间列表中,设置了一些关键时间点,如设置平年的月末、年末,闰年的2 月28 日,2 月29 日,年末等。为适应不同的测试要求,功能测试时间列表中的测试项可按照需要增加或减少,而不需要改变程序代码。功能测试模块程序流程图如图3所示。

图3 上位机功能测试模块程序流程图

(2)时间寄存器测试模块

和时间相关的寄存器共有7 个,分别有:秒、分、时、日、月、星期和年。每个寄存器存储的数值范围不同,要实现全覆盖测试,需要分别进行测试。以秒寄存器为例,它存储数值的范围为0~59,上位机程序需要将从0 到59 共60 个数分别写入寄存器,并且在每次写入成功之后能准确读出,则证明秒寄存器正确。其它6 个寄存器的测试方法与秒寄存器类似。上位机发送给下位机的数据帧中,设置秒寄存器的数据帧中的关键数据为寄存器地址0x80,命令码为4;读取寄存器的数据帧中的关键数据为寄存器地址0x81,命令码为 5。

(3)RAM 寄存器测试模块

将从 0 到 255 共 256 个数写入到 RAM 中,再读出,写入的数据与读出相同,则RAM 寄存器正确。可使用两种方式进行RAM 寄存器测试:单字节模式和多字节模式。

在单字节模式中,上位机发送给下位机的数据帧格式和时间寄存器测试方法中的格式相同,设置RAM 寄存器的数据帧中关键数据为RAM 寄存器地址,命令码为4;读取RAM 寄存器的数据帧中关键数据为RAM 寄存器地址,命令码为5。

在多字节模式中,上位机发送给下位机的数据帧中,设置RAM 寄存器的重要数据为寄存器地址0xFE,命令码为2,读取RAM 寄存器的重要数据为寄存器地址0xFF,命令码为3。

由于DS1302 时间寄存器中存储的数据为BCD码(Binary-Coded Decimal,又称二进码十进数)格式,将时间数据写入DS1302 之前,或者从DS1302读取的时间数据在显示前要进行格式转换。此步转换操作可由上位机程序完成,也可由下位机程序完成,在该系统中是由上位机程序完成的。比如上位机要发送55 秒这个数据给下位机,实际发送的是十六进制的55,上位机收到的秒寄存器的数据为23,实际的秒时间为17 秒。

3.2.2 下位机程序设计

下位机软件是在Keil μVision 4 环境下使用C语言编写。Keil C51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发系统。与汇编语言相比,C 语言在功能、结构性、可读性、可维护性上有明显的优势,选择C 语言进行单片机程序开发已成为大多数程序员的第一选择[8]。Keil 提供了包括C 编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。

在下位机主函数程序中,先进行系统的初始化,包括设置定时器1 工作模式,选用串口工作模式,定时器设置初值,中断允许寄存器设置,启动串口的接收中断,启动定时器1 等。使其处于while(1)循环中,在循环中判断标志位变量的值。当发生了串口接收中断后,接收上位机发送的数据帧,并置位标志位变量USART_RX_STA 的值。在主函数中检测到标志位变量USART_RX_STA 的值被置位则开始解析接收到的数据帧,根据接收到的不同的命令码来驱动DS1302 芯片,达到测试的目的。下位机的主函数程序流程图如图4所示。

当上位机发送数据帧给下位机时,触发下位机的串口接收中断,下位机串口接收中断程序流程图如图5所示。

图4 下位机主函数流程图

图5 下位机串口接收中断流程图

4 结 束 语

应用上述方案设计的DS1302 测试系统,对DS1302 芯片进行了批量测试,测试效率有显著的提高,实现了预期的测试目标。该系统还具有可移植性高的优点,用于其它接口的被控器件时,在硬件方面上/下位机结构都不需要修改,只需考虑单片机与被控器件的连接及软件方面,简单修改上/下位机程序和通讯协议即可实现对该被控器件的测试。因此该设计方法对于集成电路测试具有较高的推广价值。

猜你喜欢
功能测试下位寄存器
某内花键等速传动轴八功能测试夹具设计
基于UDS协议的CAN BootLoader的开发与验证
Lite寄存器模型的设计与实现
常用电子测速法在某数字信号处理器中的应用*
基于STM32和Zigbee的mini宠物智能喂养系统的设计
发射机房监控系统之下位机
移位寄存器及算术运算应用
围观党“下位”,吐槽帝“登基”