首页 > 范文大全 > 正文

基于MSP430单片机的现场数据实时采集系统

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于MSP430单片机的现场数据实时采集系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要;本文根据现场数据采集系统的设计原则,采用片内自带A/D转换模块及大容量数据RAM且微功耗性能突出的MSP430P149单片机,并结合大容量串行FLASH数据存储器,详细阐述了能满足现场应用环境的大容量数据实时采集系统的设计思路和具体实现方法。

关键词:数据采集;MSP430;FLASH存储器;微功耗

引言

许多工业测控,医疗仪器以及消费类电子产品对便携式设备的现场数据实时采集能力捉出了较高的要求:即在满足微功耗、微型化的总体设计原则基础上,数据采集系统还要能实时记录较长时间的现场采集数据,这就对系统的采样速度、数据存储模块的读写速度、存储容量都提出了更高的要求。

采用具有片内A/D转换模块及大容量数据RAM且微功耗性能突出的MSP430F149单片机,并结合大容量低功耗的FLASH存储器,可以为这种应用需求提供满意的解决方案。

系统器件选择

单片机

微功耗数据采集系统中,微控制器(以下简称MCU)的功耗也是系统整体功耗的重要来源之一,选择在微功耗设计上具有突出优势的MCU,对于系统的微功耗设计具有非常现实的作用。同时,选择集成有较高精度A/D转换模块及较大容量数据RAM的单片机能有效降低系统设计难度和提高系统的可靠性。

而TI公司的MSP430F149单片机(以下简称为F149)正是能满足以上要求的,且具有超低功耗特点的16位单片机,其功耗已经达到了微安级。F149内部集成有多通道、高速加转换模块ADCl2,能提供8通道12位精度的A/D转换,其最大采样速率可以达到200ksps。ADCl2模块内包括采样/保持功能的ADC内核、转换存储逻辑、内部参考电平发生器、多种时钟源、采样及转换时序电路。对于大多数现场数据采集的应用环境而言,F149内部集成的ADCl2模块都能很好地满足数据采集的要求。

另外,F149内部集成的串行通信模块不仅支持异步通信,也支持SPI同步通信方式,且其对SPI同步通信方式的配置极其灵活,这就为F149访问SPI接口的串行FLASH存储器提供了硬件上的保证。

同时,F149内集成有2KB的数据RAM,这将为把数据写入FLASH存储器提供足够的缓冲时间,能极大程度地满足实时性数据采集的需要及提高系统的可靠性,为数据采集系统提供了关键性的硬件冗余。

F149的软件结构也针对低功耗而设计。如从备用模式唤醒MCU仅需6μS。其中断和于程序调用无层次限制,这种丰富的中断能力减少了系统查询的需要,可以方便地设计出基于中断结构的数据采集程序。

综上所述,msp430F149单片机具有极低的功耗,具有多种适合现场数据采集的功能强大的片上模块。同时F149单片机采用了QFP64的表贴封装,引脚间距仅为0.5mm,极大地节省了电路板空间。采用MSP430F149作为现场数据采集系统的微控制器,增加了系统的先进性和集成度,较大程度地提升了系统的整体性能。

数据存储器

为使数据采集系统能记录较长时间的被测物理量状态,数据存储器应具有较大的容量和较低的功耗。同时为与现场环境下的采样频率相匹配,对数据存储器的读写速度也有相应要求。

目前存储器的种类很多,按存储类型分,有FLASH存储器、EPROM、E2pROM、SRAM等;按接口方式划分,有并行接口、串行SPI接口、串行12C接口、一线接口等。

选择适合微功耗数据采集系统的存储模块,应结合功耗、存储容量、读写速度、体积及接口方式等多个因素综合考虑。尤其应着重考虑功耗和存储容量的因素。

这里举例说明,以100次/秒的采样率实时采集三个通道的数据,如要求采样精度在12位以上,即使仅仅记录1小时的现场数据也需占用约2.IM的存储空间。

而常用的并行或串行E2pROM存储密度较低、容量较小,远远不能满足数据采集系统长时间记录现场数据时在存储容量上的需要。

近年来在优盘和MP3播放器中得到广泛应用的FLASH存储器的存储密度较高,读写速度较快,在存储容量及成本上具有明显优势。尤其基于SPI串行接口的低电压FLASH存储器在数码设备的CF卡中得到了大量应用,其存储密度高,且所用I/O口相对于并行FLASH存储器人为减少,体积小,功耗较低。因此在便携式现场数据采集系统中,是非常合适的数据存储器形式。

串行FLASH存储器

本系统选用了ATMEL公司的31兆位SPI串行接口FLASH存储器AT45DB32lB作为外置数据存储器。该FLASH存储器供电范围为2.7V―3.6V,其接口电平与F149单片机相匹配,硬件上能直接连接。且该存储器采用SPI串行三线接口,能有效减少系统所占空间,提高系统可靠性,降低开关噪声,很适合于高存储密度、低电压、微功耗的应用环境。并可根据实际需要选择该系列中存储容量更大的型号。

AT45DB321B采用单电源供电,功耗较低,其待机电流为2μA,读操作电流4mA,烧写电流15mA,相比早期的5V版本FLASH存储器,其功耗已得到很大改进。尤其结合基于页面的数据读写子程序,可以更大程度上地减少读或写FLASH存储器的时间和次数,进而有效地降低功耗。

AT45DB321B由1个主存储器阵列、2个528字节的数据缓冲区和一个I/O接口逻辑构成。AT45DB321B是32兆位的大容量FLASH存储器,其存储阵列被划分为8192页(每页528字节),其存储区的划分可以由大到小分为三个层次:sector(扇区)、bilk(块)、page(页)。具体存储器的组织结构如图1所示。

AT45DB321B存储器内部还包括2个静态RAM类型的数据缓冲区,每个RAM的容量均与主存储器阵列中一个页面(page)的存储容量相同,即均为528字节。AT45DB32lB内的两个数据RAM即使在主存储区被烧写的过程中也允许接收数据,这就为保证数据采集的实时性和可靠性提供了硬件保证。ATMEL公司之所以将每个页面及RAM缓冲区的大小都定为528字节,而不是512字节,是出于以下的特殊考虑:即这额外的16字节可以用作错误检测或存放特别的控制信息,如地址指针、特殊标志等。借助这每个页面内均有的额外16字节,设计者可以将数据进行分级或分类,也可以将数据放置到不连续的页面中。

系统实现

硬件部分

AT45DB32lB采用了SPI三线接口(SI、SO、SCK引脚),支持SPl0和SPl3 两种工作模式。在采用SPI同步通信方式时,MSP430F149单片机作为主机提供时钟与数据,因此F149内的SP[接口应相应地设置为8位三线连接主模式。MSP430F149与AT45DB321B的具体连接如图2所示。

AT45DB321B的RDY/BUSY引脚是开漏输出的,此引脚需接一个1kQ上拉电阻,因此常态应为高电平。但当AT45DB321B芯片内部启动了数据烧写操作、数据比较操作或页面到缓冲区的传输操作中的一种时,此引脚会被芯片自动拉到低电平,表示芯片处于“忙”状态,即此时不能访问主存储器阵列和正使用的数据缓冲区。

CS引脚是AT45DB321B的使能引脚,同时此引脚上的电平跳变也是芯片内部动作的触发信号。如在AT45DB321B内开始一个操作时,需在CS引脚上产生一个由高到低的电平跳变;而在AT45DB321B内中止一个操作时,需在CS引脚上产生一个由低到高的电平跳变。

为了滤除芯片引脚上的噪声信号以免造成芯片的误动作,应该在芯片的相应引脚上且尽量靠近芯片的地方连接去藕电容。在SCK、CS及SI引脚上各接一个100pF的去藕电容,同时在AT45DB321B的Vcc引脚上以1uF、0.1uF和0.01uF三个电容并联的形式去藕。

数据采集流程

MSP430F149的A/D转换模块ADCl2具有四种转换模式:单通道单次转换、单通道重复转换、序列通道单次转换及序列通道重复转换。在数据采集系统中,如要采集温度、压力等变化较为缓慢的物理量,则可以采用单通道单次转换模式,程序设计上较为简便;如要采集多通道、连续变化的数据,则序列通道单次转换模式的时序控制较为简单,灵活性较高。

因此要采集应用现场的多通道、连续变化的大量数据,同时考虑到数据采集系统的微功耗和实时性要求,应对数据采集程序进行综合考虑,如数据采集过程中的时钟设置,采样输入信号的选择,A/D中断服务子程序的设计,AT45DB321B芯片的数据写入方式及数据缓冲区的切换等。

图3是数据采集程序的相关流程图:

采用序列通道单次转换模式时,应相应设置控制寄存器ADCl2CTLl的SHP=1,同时将SHS(采样输入信号源选择控制位)设置为1,即由Timer A.OUTl触发采样定时器。定时器A可以工作在增计数模式,其定时间隔就是A/D转换的采样时间间隔。采用定时器输出信号触发采样的优点在于:能精确控制采样时间间隔;由于采用硬件定时,因此MCU可以在定时间隔内进入休眠状态,并由中断唤醒,这就完全符合了基于中断的微功耗程序设计原则。

在数据采集过程中有几个问题值得注意:

(1)避免可能的“丢帧”问题。由于数据写入外部数据存储器AT45DB321B需要一定的写入时间,因此每次采集到的多通道数据若直接写入存储器,则在采样速率较高时,不能保证系统能及时从数据写入过程中返回并及时开始下一次A/D转换,这就会造成“丢帧”,即会丢失紧接着的若干次序列数据。而若强行返回,又不能保证数据被可靠写入。解决方法是:在MSP430F149单片机的数据RAM内开辟两块缓冲区,利用两块缓冲区切换,并结合AT45DB321B的批量数据块写入功能,使得采样数据能及时存储。

(2)A/D中断服务子程序应尽快返回以保证数据采集的实时性。由于数据采集程序是工作在中断模式下,而且采样数据的处理也是在A/D中断服务子程序中完成,因此A/D中断服务子程序内的语句越少越好,即要保证从A/D中断服务子程序返回所需的实际时间要小于采样间隔时间(由采样率决定)。

(3)数据采集过程中保证稳定的时钟源。如选择由SMCLK或ACLK作为采样过程中的转换时钟或定时器A的时钟源,应注意在F149进入低功耗休眠状态时,保证这些相应的时钟信号可用,否则会引起采样时间间隔上的严重误差甚至错误。

(4)保证数据采集过程中高质量的电源输出。要保证较高的采集精度,系统的电源输出质量也是关键,即要求系统电源的输出纹波小、稳压效果好,电磁辐射小。

(5)保证有精确的电压基准。ADCl2的内部参考电平发生器能提供1.5V、2.5V的参考电平,但是在MCU本身的电源电压受干扰时,其内部参考电平也将受影响。因此在对采样精度要求较高时,可以考虑采用片外的精密电压基准。

AT45DB321B读、写子程序

SPI同步串行接口一般有四种工作模式:SPl0、SPll、SPl2及SPl3。SPl接口的工作模式决定了发送和接收数据的时钟信号的相位和极性,即决定了时钟信号的哪个跳变沿控制数据传输的方向。

AT45DB321B存储器只支持SPIO、SPl3两种工作模式,即在SCK时钟信号的上升沿锁存数据,下降沿输出数据。因此若MSP430F149单片机与AT45DB321B采用SPl3模式,则F149单片机的UCTL0控制寄存器的CKPH和CKPL位均应置1。F149作为SPI串行数据传输中的主器件,其数据或命令的发送采用查询UTXIFG0寄存器的方式,数据的接收则采用查询URXIFGO寄存器的方式。

访问AT45DB321B存储器时,应结合微功耗设计原则选择其读、写方式。 在系统的运行功耗中,AT45DB321B的静态及动态功耗均明显高于F149,尤其在数据烧写过程中其写入电流较大(典型值为15mA),因此应尽量减少对其的操作时间。这主要通过以下两点来实现:①尽量不使AT45DB321B处于无谓等待状态,即只在访问AT45DB321B时,才使能该芯片;②根据AT45DB321B的存储器阵列的结构特点,访问AT45DB321B时可采用页面读和页面写方式。

页面读方式(mainmemorypageread)允许用户从AT45DB321B存储器阵列的8192页数据中读取任一页面的数据, 页面读方式无需用到AT45DB321B内的2个528字节的数据缓冲区,也不会影响其内数据。

在页面写方式(main memory pageprogram throu9h buffer)中,数据首先通过SI引脚移入AT45DB321B的数据缓冲区,然后启动内部时序删除欲写入数据的页面(将页面内的所有位置1),最后将数据缓冲区内的数据烧写入此页面。在页面写过程中所有的删除和烧写操作的时序都是AT45DB321B芯片内部自身产生。在此删除和烧写过程中,其内的状态寄存器会提示芯片处于“忙”状态,且AT45DB321B的RDY/BUSY引脚也为低电子。

图4为AT45DB321B页面写方式的子程序流程图。

需要注意的是,AT45DB321B的CS引脚由低置高后,芯片内部启动自定义的删除和烧写时序,这需要最大约20ms(即器件手册中的乙)的时间。在这段时间中,页面写子程序可以返回也可以不返回。如一直等待AT45DB321B不忙以后再返回,则一定要注意开启F149的中断,使F149能一直响应采样中断以保证数据采集的连续性。

这里就存在一个关键问题:即为了保证大容量数据采集的实时性和连续性,在F149的数据RAM内开辟的采样数据缓冲区需要能提供大于tFp的缓冲时间,以保证在下一次另一块数据缓冲区满之前,AT45DB321B能将本次数据缓冲区内的数据可靠写入。否则,将造成数据的丢失。因此必须在F149单片机内开辟两块相同大小的数据缓冲区,且其大小与实际采样速率、采样通道数及AT45DB321B的tEP时间密切相关。由于AT45DB321B内的RAM数据缓冲区和存储器阵列内页面的大小均为528字节,在满足缓冲时间的前提下,可以在F149的2K字节RAM内直接开辟两片大小均为528字节的数据缓冲区,这样可以有效简化程序设计。

页面读方式子程序的流程图与图4类似,但是在发送完指令码、地址信息码和32位无关码后,由于此时数据是由AT45DB321B串行输出到SO引脚上,因此必须由主机(即F149单片机)提供移位所需的时钟信号,这点尤其重要。具体的技巧是:在读取AT45DB321B输出的每个字节数据之前,先由F149单片机发送一个00H的数据到AT45DB321B,以此产生AT45DB321B输出数据所需的时钟信号。

在利用AT45DB321B内的全部页面记录现场的大量数据时,在系统的主程序中需要维护几个变量:如一个记录页面编号的全局变量,以确定数据读写时所需访问的页面;以及一个缓冲区标志的变量,使得程序能够根据标志判断当前缓冲区是否存满,是否需要切换及切换到哪个缓冲区。

另外,即使AT45DB321B芯片处于“忙”状态,也可以对其内的另一块空闲数据缓冲区进行读写操作。因此程序设计时应注意对芯片“忙”状态的查询和利用数据缓冲区可以交替操作的技巧以提高数据访问的速度。

综上所述,AT45DB321B的数据读写子程序中需要注意数据采集与数据存储之间的时序配合,以保证数据采集的连续性和数据的不丢失。同时数据读写过程中稳定的时钟信号也是需要优先考虑的,而这点往往为设计者所忽略。

结语

如本文中所述,内置A/D转换模块及2KB数据RAM的16位微功耗单片机MSP430F149很适合作为现场实时数据采集系统的微控制器。尤其结合低电压版本的大容量串行FLASH数据存储器,就能够设计出满足现场数据长时间采集和存储需要的数据采集系统。本文详细阐述了该数据采集系统的设计思路和具体实现方法。同时,该系统在实际应用中也取得了满意的效果。