基于ARM的海底大地电磁信号采集系统主控模块改进:提升性能与可靠性的创新方案研究
eeskill 2023-12-01


1 海底大地电磁仪的分析


海底大地电磁数据采集器是对海底大地电磁场和海底环境信息进行自动采集的智能化仪器,旨在建立具有我国特色的海底大地电磁探测技术,并使之实用化,为我国海域区域地质调查提供新的技术支撑,为发展我国海洋电磁探测奠定基础。仪器于2000年研制成功后,在我国东海大陆架进行了成功试验。


整个数据采集器由电道前放板、磁道前放板、主放板、辅助通道板、时钟板、数字板、标定信号板和主控单元构成层叠式电路结构。整个电路板的整体何种为90×96×170mm3,重量约1kg。采集器使用+5V和±12V三路电源,工作状态下整机功耗为7W,正常工作的环境温度为-50℃~+70℃。目前一期完成的海底大地电磁仪最长记录时间为7天,频率范围为0.0001Hz~100Hz。数据采集器配置容量为144MB的固态电子盘。从数据处理的逻辑次序看,整个系统分为八部分,包括前置放大、数字和模拟滤波、低通滤波、高通滤波、主放大器、数据转换、缓冲存储和数据存储。


一期建设中,海底大地电磁仪器整体效果还是令人满意的。但也存在一些不足,主要体现在以下几个方面:


(1)系统功耗


目前系统正常工作下,功耗约为7W。其中主要包括磁场传感器功耗290mW、倾斜传感器功耗45mW、振动传感器功耗0.5W、主控电路功耗2W等。在电池电能一定的情况下,整个采集可以持续7天左右,采集时间长度不够。


(2)主控单元


目前采用286系列主控单元,在嵌入式系统发展到很高水平的今天,已不适应高效率、高集成度的技术需要。


(3)采集稳定性


海底大地电磁采集要求各采集点精确同步,所以系统对稳定性的要求十分高。而目前系统采用单道大循环程序实现各项系统任务。这样不利于提高数据采集的稳定性。


2 改进方案的设计思路


海底电磁数据采集需要的海上作业,采集成本大。为了达到效率最大化,就必须明显降低原有系统的功耗,并提高数据采集的稳定性。鉴于此,改进方案如下:


(1)用ARM芯片取代286系列主控单元


ARM具有集成度高、能耗低等特点,通过使用ARM芯片取代目前的286系列主控单元将极大地降低系统的功耗,同时也可以缩减电路,进而降低电路的复杂度,减小系统的体积。


(2)用μC/OS-II取代目前的单道程序


μC/OS-II取得了美国联邦航空管理局(FAA)对于商用飞机的、符合RTCA DO-178B标准的认证,表明μC/OS-II具有足够的安全性和稳定性。使用操作系统管理多任务,实现多任务的并发和同步。通过这种方式取代目前的单道大循环程序,可以提高系统的稳定性。


3 改进主控单元的硬件组成


ARM架构在推出后获得了成功,各种ARM核心版本以及不同系统方案种类繁多。使用ARM本身已经比原有主控电路功耗降低,在满足实际需要的情况下,还可以在ARM各架构中选择功耗较低的。最终选择了ARM7TDMI结构,部分架构功耗比较见表1。由于原有数据采集系统前台采集部分和后台主控部分使用ISA总线标准进行连接,在ARM7TDMI架构的ARM芯片中,选择了ATMEL公司支持ISA总线扩展的AT91M40800。为完成系统所需任务,根据ATMEL公司发布的EB40开发板电路设计主控单元。片内SRAM 8KB,外部Flash2MB,另有外部器件如串行接口和网络接口等。AT91m40800共有37个寄存器,其中包括31个32位通用寄存器(含程序计数器PC在内)、6个32位状态寄存器(但目前只使用其中的12位)。运行时的任意时刻,可见寄存器包括15个通用寄存器(R0~R14),一个或两个状态寄存器及程序计数器PC,其他寄存器多用于备份。经测试证明:所购芯片功耗测量均值小于0.25mW,较之原有主控单元2W的功耗,显著降低。


4 嵌入式实时操作系统μC/OS-II的移植


尽管μC/OS-II是用标准C语言写的,但当应用到某个具体的CPU上时,还需要用C和汇编语言写一些与处理器相关的代码。改写过程主要结合改进系统所采用的新主CPU AT91m40800的一些具体参数,完成整个操作系统的移植。


μC/OS-II可以大致分为内核、任务处理、时间处理、任务同步与通信、与CPU的接口等五部分。内核(OSCore.c)是操作系统的处理核心,包括操作系统初始化、系统运行、中断处理、时钟节拍、任务调度和事件处理等多任务。任务处理部分(OSTask.c)是与任务操作密切相关的,包括任务的建立、删除、挂起、恢复等。时钟部分(OSTime.c)定义μC/OS-II的最小时钟单位是Timetick(时钟节拍)。任务同步和通信部分包括信号邮箱、邮箱队列和时间 标志等部分,主要用于任务间的互相联系和对临界资源的访问。与CPU接口部分是指μC/OS-II针对所使用的CPU的移植部分,主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断和相关处理部分等内容。


μC/OS-II除了良好的稳定性和安全性以外,很重要的特点就是对多任务管理的优异表现。μC/OS-II可以管理多达64个任务。除了8个μC/OS-II自用的任务以外,用户的应用程序最多可有56个任务。用户可以通过系统提供的任务结构来自行创立任务。改进方案中需要管理的任务包括GPS校时、读采集数据、数字滤波和存数据,执行框架如图1。


在初始化时,进行GPS校时。读优先级最高,采集器不停地读数据。当数据在缓冲区中还没填满时,进行滤波和写存储器的任务,一旦缓冲已满就要继续执行读操作。这里所说的读操作实际上是系统从缓冲中读的操作,并不是实际的采集器读地磁信号操作。写任务其次,必须连贯地完成一次写任务,中途不能被打断。所以只有在不进行读操作时,才可以进行写操作。滤波任务在读任务完成后执行,但是如果前一个写任还没有完成,就不能滤波,以防止新数据无法写入。所以只有当新的读任务结束,且旧的写任务完成后方可执行新读数据的滤波任务。通过μC/OS-II提供的信号量机制,可很好地实现任务进程的互斥与并发。



5 ARM对外围设备的扩展


主控单元与前台数据采集模块间仍保留原有ISA总线接口标准,只是自行设计ARM主控单元的接口电路如图2所示。符合原有协议标准后,改进电路成功替代了原来的主控。


虽然串行接口速度较慢,但完全可以满足与上位机之间的通信。改进方案首先实现了ARM对于串口的扩展,作为通信手段之一。使用ARM公司自行开发的的ARM调试专用环境ADS1.2测试串行接口的效果:扩展程序所设计的输出结果为AT9140800USART_CUGB,连接采集仪和PC机,使用Windows自带的超级终端可以看到输出结果与设计一致,表明扩展是成功的。


各采集器间及采集器与上位机交互还可通过网络实现。改进方案基于μC/OS-II移植IP协议栈后,通过扩展网络接口卡,可实现网络功能。由于网络接口芯片本身也遵守ISA标准,所以扩展的网络接口还可以用来仿真测试ISA总线。检测总线时序情况就可测试主控模块的功能情况。抓取ISA设备时序,即得出系统接总线是否符号ISA协议标准。写一次后,逻辑分析仪截出几次时序,结果如图3所示。时序情况:/CS8019为网络接口芯片片选信号,/WE为写使能信号,/OE为输出使能信号,A1~A5为低5位地址,D0~D7为8位数据位。图3中显示写使能一次后,输出多次,对应地址循环(程序设定的输出效果),数据位则是输出8019的数据,具体内容没有意义。如图3虚线处,在C1时刻,开始进行写操作;C2时刻输出,低5位地址为00000;C3时刻第二次输出,地址为00001;C4时刻第三次输出,地址为00010。依次类推,表明主控单元改进满足了ISA总线的要求,网络接口扩展也正常。基于此,通过与前台数据采集模块直接连接,即可进行海底大地电磁数据的高效采集。


由于采用ARM芯片取代原有主控单元,仅此一项就降低功耗约25%,实现了功耗降低的要求。另外在采用了操作系统后,将使整个采集过程更稳定有序,提高了整个采集过程的准确性和安全性。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【7.24 深圳】2025国际AI+IoT生态发展大会/2025全球 MCU及嵌入式技术论坛


  • 相关技术文库
  • C语言
  • 编程
  • 软件开发
  • 程序
  • 光立方程序编写步骤

    基于51单片机的4*4*4光立方程序实现原理及程序代码。LED光立方的复位电路、时钟电路、每层LED灯电路控制逻辑,系统总原理图,工作流程及相关C语言源码实现。希望能够对你学习了解LED光立方程序编写及LED立方实体制...

    前天
  • 封装继承多态

    封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 封装的意义: 封装的意义在于保护或者防止代码(数据)被我们无意中...

    前天
  • 封装是什么意思?

    即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中...

    前天
  • 超声波模块测距51程序_单片机超声波测距c语言

    超声波检测原理 超声波测距的程序流程图 程序如下: //超声波模块程序 //超声波模块程序 //Trig = P2^0 //Echo = P3^2 #include #define uchar unsigned char #define uint unsigned int // void delay(uint z) {...

    07-01
  • 大佬带你看嵌入式系统,嵌入式系统该学习什么?

    嵌入式系统是当今的热门系统之一,在诸多领域,嵌入式系统都有所应用。为增进大家对嵌入式系统的认识,小编将为大家介绍嵌入式系统是一个什么样的专业,以及学习嵌入式系统该学习哪些内容。如果你对嵌入式系统具有...

    06-27
  • c51单片机编程要点总结

    c51单片机编程要点总结 1、头文件:#include (我用的是 STC 89C54RD+) 2、预定义:sbit LED = P1^0// 定义 P1 口的 0 位为 LED 注:“P1^0”这个写法,与 A51 不同(A51 是 P1.0),P1 是一组端口,端口号范围 0~7 注2...

    06-25
  • C语言基础知识点汇总

    总结C语言基础知识点

    06-23
  • Keil使用中的若干问题

      一、混合编程  1、模块内接口:  使用如下标志符:  #pragma asm  汇编语句  #pragma endasm  注意:如果在c51程序中使用了汇编语言,注意在keil编译器中需要激活Properties中的“Generate Assembler...

    06-23
  • ESP32-finsh

    esp32c2添加finsh实现了ping指令和AT指令解析

    06-13
  • 一文讲通C语言位域,快速掌握!

    在嵌入式系统的开发中,内存是最程序员非常需要关注的对象,尤其是MCU开发、网络协议解析、硬件寄存器操作等领域,能否对内存进行高效的利用和合理的管理,将直接影响程序的性能和硬件的稳定性。

    06-10
下载排行榜
更多
评测报告
更多
广告