历史上的今天
今天是:2025年04月22日(星期二)
2021年04月22日 | 基于MSP430的微功耗数据采集系统的开发应用
2021-04-22 来源:eefocus
0 引言
以电池作为电源的水下数据采集系统,若要长时间工作必然要为其配备大量的电池作为电源,如果能降低系统的功耗,那么将减少电池的数量,不仅能降低系统的成本而且能大大缩小系统的体积和重量,也更有利于水下数据采集系统的布放。本文介绍了一种基于微功耗单片机MSP430F1611和CF卡的水下微功耗数据采集系统的设计与实现,总功率仅150mW。相比传统的以DSP为处理器、IDE硬盘为存储介质的数据采集系统,功耗大大降低。
1 系统总体构成
本系统是应用在矢量水听器噪声测量试验中,要求实时采集并存储矢量水听器4通道信号,每通道采样率为10kHz,在水下不间断工作7小时。
鉴于本系统采样率不高,7个小时总的数据量不超过2个G,所以没必要采用功耗和体积都比较大的IDE硬盘,采用容量为2G的CF卡完全可以满足系统要求。CF卡的全称为Compact Flash,兼容3.3V和5V工作电压,工作时没有运动部件,其体积小、耗电量小、容量大,具有很高的性价比。目前,CF卡的容量可高达12GB,CF卡由控制芯片和闪存模块组成,闪存用于存储信息,控制芯片用于实现与主机的连接及数据的传输。CF卡可工作在TRUEIDE模式下,并且与普通IDE硬盘接口完全兼容,所以很容易进行开发使用。
系统对采集的数据只存储而不做信号处理,在处理器的选取上也就不必一味追求高速度,本系统采用TI公司的超低功耗单片机MSP430F1611作为系统的处理器,负责AD的采集,并把采集的数据写入CF卡。这是一款高性价比的单片机,具有以下特点:丰富的片内外设;超低功耗,在电压3.3V主频1MHz时工作电流仅600μA;强大的处理能力,在8MHz晶体驱动下,指令周期为125ns,完全满足系统的处理需求。系统总的结构图如图1所示。

2 硬件设计
2.1 CF卡接口设计
CF支持三种基本工作模式:PC Card Memory模式、PCcard I/O模式以及True IDE模式。在本文的设计中,使用True IDE模式,它可以在CF卡上电时自动进入。在插入CF卡之前,保证CF卡插槽的/OE管脚为低电平,即可以让CF卡进入True IDE模式。单片机与CF卡的接口电图如图2所示。

MSP430F1611拥有六个可独立配置的双向8位I/O端口(P1~P6)。本文的设计中将P1端口的P1.0、P1.1引脚分别与CF卡的读写信号线IORD、IOWR相连;复位信号RESET由P1.2给出;A0~A2为数据、命令或状态寄存器地址线,由单片机P1.3~P1.5管脚控制。CF卡总共有16根数据线D[15:0],但可以通过软件设定其工作在16 bit模式还是8 bit模式,由于MSP430F161l单片机数据线宽为8位,硬件中设计其工作在8 bit模式,使用D0~D7为数据线,与单片机的P2端口相连,D8~D15悬空。
2.2 AD采集模块设计
为了降低系统功耗,在我们系统指标要求的前提下,ADC器件的选取尽量选用低功耗ADC器件。设计中我们采用了美国ADI公司的AD7655,这款ADC采样率在10kSPS时功耗仅2.6mW,有四个模拟输入通道,精度为16bit,最高采样率高达1MSPS。数据输出接口支持串行和并行两种方式,可以方便地与单片机、DSP等处理器实现无缝连接。具体的AD与单片机的硬件接口图如图3所示。

AD7655每次对两路信号进行采样,当A0为低电平时对INAl和INBl两个通道的信号采样,当为高电平时对INA2和INB2两个通道的信号采样。CNVST为AD7655的转换开始信号,这个信号由主控单片机按照设计的采样率定周期地给出。在转换期问BUSY信号一直为高电平,转换结束后BUSY信号变为低电平,利用这个下降沿可以作为读取AD采样数据的中断信号,单片机在收到这个中断信号后给出片选CS、读信号READ和通道选择信号A/B读取AD数据。
3 软件设计
CF卡的读写是以扇区(sector)为单位的,每次读写一个或连续的多个扇区,每个扇区大小为512字节。对CF卡的读写访问操作都是通过访问其内部寄存器来实现的,对不同的寄存器进行访问是靠上节所提到的A0~A2、CSO、CSl这五根数据线来译码的,在本文的设计中,CF卡配置成TRUE IDE工作模式,具体的寄存器映射如表1所示。

寄存器0用于CF卡的数据读写。CF为了节省I/O资源,有些I/0端口是复用的,寄存器1在读操作时为错误寄存器,写操作时为特征寄存器。寄存器2的作用是设定要读写扇区的数目。寄存器3~6是用来寻址要读写的具体扇区位置,一般的IDE硬盘有CHS和LBA两种寻址模式,CF卡工作在TRUE IDE模式下也有这两种寻址模式,CHS(Cylinder/Head/Sector)是扇区对应的具体柱面、磁头、和扇区的地址;逻辑块寻址方式LBA(Logical Block Addressing)在逻辑上是连续的,比较方便,所以软件实现上采用这种方式对CF卡的扇区进行访问。寄存器7在读操作时是状态寄存器,主控器可以得到CF卡的有关状态信息;写操作时是命令寄存器,通过设置命令,主控制器操作CF卡完成特定的功能。
读写扇区时,首先需要设置起始扇区的LBA地址和扇区数目,并设置命令寄存器,读取数据设置命令“20H”,写入数据设置命令“30H”。然后读取状态寄存器,判断状态寄存器是否为“58H”。若为是,则开始读写操作;若为否则继续读取状态寄存器。接下来读状态寄存器是否为“50H”,判断CF卡操作是否完成。若为否,则继续读取判断;若为是,则结束读写过程。如果在判断状态寄存器中发生了超时或出现错误,则设置超时或错误标志,并跳出读写过程。图4为CF卡读写一个扇区的流程图。

由于对CF卡的操作是以扇区位单位,在单片机内部RAM开辟了两个大小为1 kByte的缓冲区,每个缓冲区的数据正好可以写满CF卡的两个扇区,AD采集的数据先存储在缓冲区,当存满一个缓冲区后,设置CF的LBA地址、扇区数目及写命令,把缓冲区内的数据写入CF卡,同时AD采集的数据存储在另外一个缓冲区。
CF卡如果要通过读卡器在计算机上直接读取数据,CF卡中的文件系统必须与计算机的文件系统一致,现在计算机的文件系统有FATl6、FAT32及NTFS等。由于微功耗单片机处理能力有限,在采样周期内完成数据采集及数据存储的工作后,所剩时间已经不多,如果再加上处理文件系统的程序,势必影响系统数据采集的实时性。在本设计的程序里并没有将数据写成文件系统,而是从数据扇区对应的LBA地址开始从小到大依次将数据写入扇区,直到写满整个CF卡。在读取数据时,利用磁盘操作函数编写一个小的VC程序,将CF卡中数据依次读出并存为文件存储在计算机的硬盘里,读取的扇区及文件的大小也可以方便地设置,非常灵活。这样也就在处理器能力有限的情况下实现了系统的实时数据采集和存储。
4 结论
采取这种设计方法使整个采集系统的功耗大大减小,经测量,整个系统功耗为150mW。采用高能锂离子电池作为系统电源,使整个系统轻松装入一个内径为15cm,高15cm的圆柱形密封罐内,体积的减小也更加有利于系统在水下的布放。该系统经过在吉林松花湖试验,能够稳定可靠地工作,实时采集并存储水下环境的噪声和过往船只的噪声数据。
史海拾趣
|
很早以前就知道led行业,但一直未做深入了解 , 今天去爬山碰到一个哥们, 向我吹嘘: 1.单多的做不完,要经常性加班. 2.很难在市场上招到合适的人 ,也就是有点led水平的人很难找 3.tcl和创维,不做led研发 ,而将研发生产全外包 4.利润好,银行 ...… 查看全部问答> |
|
无线数传模块 无线数传模块 液晶模块 一. 功率:20mW - 1W 串行接口 TTL 、232、485可选,波特率1200----115200 电源:DC3.3V--5.5V 距离:500m-5Km ...… 查看全部问答> |
|
windows CE重启之后 怎样才能让自己对系统的修改设定保存下来呀? 1.我自己开发的程序,烤的到windows CE系统里面,重启就没有了,还有触摸屏的设定,usb conection的设定都没有了 2.usb conection的波特率对应注册表的哪个键值?… 查看全部问答> |
|
我使用的平台是2410 ,系统为CE5.0 ,在做电源管理的时候遇到了如下的问题 1、能够休眠。 经过fw.s中的CPUPOWEROFF后系统可以确定是休眠了,理由是:PWREN 脚为低,CLK0,CLK1,SCK也都为低,虽然我没有把内核的1.8V分开,但是系统的 ...… 查看全部问答> |
|
WIN CE 系统声音大小要如何改变? 我改了注册表里的 [HKEY_CURRENT_USER\\ControlPanel\\Volume]下面\"Volume\"这一项 但是改完了声音好像并没有改变。是不是还要做什么动作? 我看WIN CE 自带的Volurne&Sounds里声音一改变[HKEY_CURRENT_USER\ ...… 查看全部问答> |
|
正在写一个SIP的程序。 遇到了这样一个困难。 首先在生成SIP软面板的时候,创建了一个窗口,得到句柄hwndsip。 我可以在这个面板上直接TextOut就输出了文本,直接InvalidateRect就可以将文本清除掉,在同一窗口下做这样的一系列操作都没什么问题 ...… 查看全部问答> |
|
由于刚学,可能提的问题不是太有价值,但突然想到,困惑很长时间。我们现在做单片机实验,流程是这样:先在IDE里用汇编写出了源程序,然后编译成*.HEX,然后调试状态全速运行,如果对的话就能看结果了。我有点晕,这源文件变成1 0后怎样变成高低电 ...… 查看全部问答> |
|
主要是如何初始化那个微端口驱动程序,具体操作是什么?我的PC安装了EVC 4SP4和PB 5.0,还需要怎么做才能开发NDIS网络驱动? 这个驱动程序最后是要写入S3C2440开发板上运行的… 查看全部问答> |
|
本应用指南首先介绍了通过动态重配置端口 (DRP) 对Spartan-6 FPGA 锁相环(PLL) 的时钟输出频率、相移及占空比进行动态修改的方法。在阐述了内部DRP 控制寄存器的功能后,提供了一个通过状 ...… 查看全部问答> |




