• 基于MC9328MX1嵌入式最小系统设计

    基于MC9328MX1嵌入式最小系统设计

    引言 嵌入式系统是以实际应用为核心,对功能、可靠性、成本、体积、功耗有严格要求的专业计算机系统,随着嵌入式系统相关技术的迅速发展,嵌入式系统功能越来越强,应用接口更加丰富,根据实际应用的需要设计出特定的嵌入式最小系统和应用系统,是嵌入式系统设计人员应具备的能力,由于ARM嵌入式体系的结构的一致性以及外围电路的通用性,采用ARM内核的嵌入式最小系统的设计原则和设计方法基本相同,本文基于MC9328MX1芯片介绍ARM嵌入式最小系统设计的一般方法。 1 MC9328MX1概述 MC9328MX1是Motorola公司基于ARM920T的龙珠(Dragon Ball)MX1处理器,MC9328MX1内含ARM公司设计的16/32bit ARM920T微处理器内核,采用RISC架构的ARM微处理器具有体积小、功耗低、性价比高的特点,主要应用于高级信息处理设备、智能电话、网页浏览器、数字多媒体播放器、基于流行的Palm OS操作平台的手提计算机和无线通信发射、接收设备等。 MC9328MX1的结构框图如图1所示。 MC9328MX1的体系结构如下:全16/32bit RISC架构,内含效率高、功耗强大的ARM920T的处理器核,支持16bit Thumb和32bit ARM指令集的高性能RISC引擎,支持大、小端模式,内部架构为大端模式,外部存储器可分为大、小端模式,基于JTAG接口的方案,边界扫描接口,用于嵌入式多媒体应用集成系统。 MC9328MX1的系统关系特性为:一体化的16KB指令Cache及16KB数据Cache,支持虚拟地址转换存储器管理单元(VMMU),支持 ROM/SRAM、Flash存储器、DRAM和外部I/O以8/16/32bit的方式操作,支持EDO/常规或SDRAM存储器,使用ARM先进的微控制器总线结构(AMBA),即SoC多主总线接口,利用精简先进的高性能总线(R-AHB)与速度较慢的片上外围设备进行通信,可同时连接15个外部设备。 尽管嵌入式处理器芯片种类多,引脚繁杂,但根据它们各自的功能特点,因该分布是有规律的,在嵌入式最小硬件系统设计中,要注意区分处理器芯片引脚的类型,仔细分析研究关键引脚作用,才能保障最小系统的正常运行。 MC9328MX1采用MAPBGA封装,共有256引脚,MC9328MX1的引脚可分为电源、接地、输入(I)、输出(O)、输入/输出(I/O)5 类。除了电源和接地线有近40根,以及地址总线,数据总线和通用I/O接口端,专用模块SPI、UART、I2C、LCD等接口,需要认真仔细研究的引脚不是很多,电源和接地端是保障系统正常工作最基本的条件之一,输入类型的有些引脚在系统设计时必须认真仔细对待,因为有些电平信号直接影响到 MC9328MX1的正常工作,输出类型的引脚主要用于对外设的控制或通信,由MC9328MX1主动发出,对MC9328MX1自身的运行不会有太大的影响,输入/输出类型引脚是MC9328MX1与外设的双向数据传输通道。 2 嵌入式最小系统 以ARM内核嵌入式微处理器为中心,具有完全相配接的Flash电路、SDRAM电路、JTAG电路、电源电路、晶振电路、复位信号电路和系统总线扩展等,保证嵌入式微处理器正常运行的系统,可称为嵌入式最小系统。 嵌入式最小系统硬件结构图如图2所示。 嵌入式小系统硬件功能如下: 微处理器:MC9328MX1是系统工作和控制中心; 电源电路:为MC9328MX1核心部分提供所需的1.80V工作电压,为部分外围芯片提供3.0V的工作电压; 晶振电路:为微处理器及其他电路提供工作时钟,及系统中MC9328MX1芯片使用32KHz或32.768KHz无源晶振; Flash存储器:存放嵌入式操作系统、用户应用程序或者其他在系统掉电后需要保存的用户数据等; SDRAM:作为系统运行时的主要区域,系统及用户数据、堆栈均位于该存储器中; 串行接口:用于MX1系统与其他应用系统的短距离双向串行通信; JTAG接口:对芯片内部所有部件进行访问,通过该接口对系统进行调试、编程等; 系统总线扩展:引出地址总线、数据总线和必须的控制总线,便于用户根据自身的特定需求,扩展外围电路。 3 最小系统硬件的选择和单元电路的设计 3.1 电源电路设计 电源电路是整个系统正常工作的基础,设计的电源电路必须满足系统对该电路性能指标的要求。MC9328MX1核心部分需1.80V工作电压,部分外围芯片需3.30V工作电压,根据要求输入5V直流电压经DC-DC变换,分别为系统提供1.80V和3.30V的工作电压,不同系统根据实际功耗,选择器件设计电源电路,电源电路如图3所示。 3.2 晶振电路与复位电路设计 晶振电路为微处理器及其他电路提供工作时钟,是系统必须的重要电路,MC9328MX1使用32KHz无源晶振,32KHz晶振频率输入 MC9328MX1后,经PLL(锁相环)倍频后达到16.384MHz,并输入系统PLL及MCU PLL。MCU PLL将输入的16.384MHz倍频到最高192MHz,提供给ARM内核使用,系统晶振电路如图4所示。 复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能,本系统采用较简单的RC复位电路,复位电路如图5所示。 3.3 lash存储器接口电路设计 Flash存储器在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的数据等。Flash接口电路是最小系统设计中至关重要的电路。 常用的Flash存储器为8bit/16bit数据宽度,工作电压一般为3.3V,主要生产厂商为Intel、Atmel、Hyundai等,他们生产的同类器件一般具有相同的电气特性和封装形式,可根据需要选用。 为了充分发挥32bit MC9328MX1性能优势,直接采用1片32bit数据宽度的Flash存储器芯片,也可采用2片16bit数据宽度的Flash存储器芯片并联构建 32bit的Flash存储器系统,16bit Flash存储器系统的构建方法与32bit Flash存储器系统相似,本系统使用2片28F320J3A组成32bit Flash存储器32bit Flash存储器系统如图6所示。 2片28F320J3A,其中一片为高16bit,另一片为低16bit,作为整体配置到MC9328MX1外围接口模块CS0空间,将 MC9328MX1的#CS接至2片28F320J3A的CE0端,CE1、CE2接地;2片28F320J3A的地址总线[A21-A1]均与 MC9328MX1的地址总线[A22-A01]相连,低16bit片的数据总线与MC9328MX1的低16bit数据总线[D15-D00]连接,高 16bit片的数据总线与MC9328MX1的高16bit数据总线[D31-D16]连接;2片28F320J3A的RP#端接VCC;2片 28F320J3A的OE端接MC9328MX1的#OE;2片28F320J3A的WE端接MC9328MX1的#EB;2片28F320J3A的 BYTE均上拉,使之工作在字模式。 3.4 SDRAM接口电路设计 与Flash存储器相比较,SDRAM虽然不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,并且具有读/写属性,SDRAM在系统中主要用作程序的运行空间、数据及堆栈区。因此,SDRAM接口电路在最小系统设计中必须高度重视。 目前常用的SDRAM为8bit/16bit数据宽度、工作电压一般为3.3V,主要生产厂商为Samsung、HYUNDAI、Winbond等,若同类器件具有相同的电气特性和封装形式可通用。但在使用SDRAM时要注意ARM芯片是否具有独立的SDRAM的刷新控制逻辑,若有可直接与SDRAM接口,若无则不能直接与SDRAM连接。 根据系统的需求,可构建16bit或32bit的SDRAM存储器系统,本系统采用2片K4S281632并联构建32bit的SDRAM存储器系统,单片K4S281632为16bit数据宽度、容量16MB,2片容量共32MB的SDRAM空间,可满足嵌入式操作系统及各种较复杂运行的运行需求,使用 2片K4S281632构建32bit的SDRAM系统电路如图7所示。 2片K4S281632,其中一片为高16bit,另一片为低16bit。2片K4S281632作为一整体配接到DRAM/SDRAM的CSD0,将 MC9328MX1的#CSD接至2片K4S281632的CS端,2片K4S281632的CLK端接MC9328MX1的SDCLK端,2片 K4S281632的CLE端接MC9328MX1的SDCKE端;2片K4S281632的RAS、CAS、WE端分别接MC9328MX1的RAS、 CAS、SDWE端,2片K4S281632的地址总线[A08-A00]接MC9328MX1的[A10-A02];2片K4S281632的地址总线 [A10-A09]接MC9328MX1的[MA11-MA10];2片K4S281632的地址总线[A11]接MC9328MX1的[A12];2片 K4S241632的BA1、BA0接MC9328MX1的地址总线[A14-A13];高16bit片的[DQ15-DQ0]接MC9328MX1的数据总线[D31-D16]、低16bit片的[DQ15-DQ0]接MC9328MX1的数据总线[D15-D0];高16bit片的UDQM、LDQM 分别接MC9328MX1的DQM3、DQM2,低16bit片的UDQM、LDQM分别接MC9328MX1的DQM1、DQM0。 3.5 串行接口电路设计 MC9328MX1提供了串行接口,使用RS-232标准接口,近距离通信系统中可直接进行端对端的连接,但由于MC9328MX1系统中LVTTL电路的逻辑电平与RS-232标准逻辑电平不相匹配,二者间要进行正常的通信必须经过信号电平转换,本系统使用MAX3221电平转换电路,以RS-232标准9芯D型接口为例,要完成最基本的串行通信功能,只需要RXD(数据接收)、TXD(数据发送)和GND(地)端即可。串行接口电路如图8所示。 3.6 JTAG接口电路设计 JTAG技术是一种嵌入式调试技术,芯片内部封装了专门的测试电路TAP(测试访问口),通过专用的JTAG测试工具对内部节点进行测试和控制,目前大多数ARM器件支持JTAG协议,标准JTAG接口是4线;TMS(测试模式选择)、TCK(测试时钟)、TDI(测试数据串行输入)、TDO(测试数据串行输出)。JTAG接口的连接有两种标准,即14针JTAG接口与MC9328MX1连接电路。这样,基于MC9328MX1嵌入式最小系统设计完成了。

    时间:2021-03-21 关键词: MC9328MX1 嵌入式最小系统 ARM

  • 物流中心自动引导小车控制系统设计

    物流中心自动引导小车控制系统设计

    1 总体方案设计 物流中心自动引导小车(AGV)控制系统由AGV智能控制模块、监视模块、及无线网络通讯模块等三大部分组成。工作过程是通过接入互联网的手机或者微机客户端通过无线网络向远程的AGV发送控制指令代码,期间传输信号由发送端使用加密狗加密。当信号经互联网发送到接收终端时,AGV网络模块把接受的指令传送到处理器,处理器指示驱动模块驱动AGV执行动作。运动的同时监视模块把采集到的图像通过无线互联网传输到客户机端,其整体结构如图1所示。 1.1 智能控制模块 这部分是AGV的核心部分。采用的是嵌入式系统设计,可以准确高效地运行及处理数据。控制器通过网络组件WIFI或者GPRS与外部网络进行数据通讯,用户可以使用家用宽带网络或者手机短信的方式实现模块的远程控制。同时在本地控制还可以应用红外无线键盘、数字液晶屏来提供本地人机交流界面。 1.2 网络模块 AGV无线网络通讯模块是AGV通讯信号传输的重要组成部分,由WIFI或者GPRS模块来实现通讯。通讯中介是家用无线路由或者移动网络GPRS。 1.3 监视模块 AGV监视模块通过单片机驱动舵机实现全方位的监视。视频信号通过摄像头来采集,信号转换后将视频的PAL信号传输至处理器,经无线网络传输实时传到客户端。摄像头的控制与智能控制模块连接,摄像头的运动受控制模块的控制。 1.4 驱动模块 AGV驱动模块是通过可编码的直流电机来驱动的。当处理器接收到客户端传来的指令,处理器对驱动模块信号处理。从而实现AGV的全方位移动。 2 系统硬件设计 本文采用的是PHILIPS单片32位ARM微控制器LPC2138,作为控制器的处理器,负责和WIFI、GPRS无线通讯模块、监视模块、数据存储、键盘、红外、显示屏等模块进行数据通讯和对无线网络客户端发送的信号进行采集和处理。 2.1 控制核心模块 ARM外围电路包括电源键盘显示屏、SD卡、SDRAM以及与各个辅助模块进行连接的扩展接口等。ARM处理器内嵌512k FLASH、32k的可读写RAM。电路中SDRAM芯片选用hy57v25641,存储容量为16M。用其做系统运行所需内存,为操作系统信号的采集和数据的处理提供了可靠的运行空间。扩展的接口有串口、USB接口。串口为下载程序和与GPRS馍块通讯用,USB接口用于与WIFI连接从而接入无线互联网络。LCD显示屏主要与键盘配合完成本地人机交互界面,LCD液晶240×320像素,65k色,驱动芯片是ili9325。键盘采用的是PS2接口方便使用电脑键盘,与LCD合力完成本地人机信息交换。串口通过MAX232与上位机进行通信,辅助单片机的下载通过ISP下载,支持在线调试。 2.2 外围网络模块 WIFI和GPRS模块用于实现处理器与客户端的通信连接。WIFI模块采用的是wf8000-u USBWIFI模块。GPRS模块采用的是BENQ M22A模块。各通讯模块外围电路主要由电源部分、工作指示及数据连接扩展口组成。 2.2.1 TTL电平 GPRS模块与处理器的连接通过串口通讯,模块与处理器间的电平均为TIL电平,所以无需进行电平转换就可直接进行连接。 2.2.2 MAX232转换电平 由于编程及调试控制器电脑与处理器间的电平定义不同,采用MAX232进行电平的转换,其外围电路主要有电源供电部分。 MAX232电平转换模块用来把电脑端的RS232信号处理得到TTL电平实现电脑和处理器及GPRS模块之间的通信,电路如图2所示。 2.2.3 GPRS外围网络模块 GPRS模块第15管脚必须持续3s的低电平才能实现模块的启动。本文采用的是软件模拟低电平GPRS模块启动。关机电路同样是管脚持续低电平3s,电路如图3所示。 GPRS模块第35脚是一个工作状态指示灯接口,状态表示分别为:亮1s灭1s为启动搜索信号;亮1s灭2s为信号正常;持续点亮为有数据输入或者输出。其工作原理图如图4(a)所示。图4(b)为GPRS模块SIM卡连接示意图。 GPRS模块串口工作方式的电平为TTL电平,所以GPRS模块和控制核心处理器的连接可以是直接连接。但考虑到模块的调试及程序的烧录,所以在GPRS模块与处理器连接处使用转接开关。以此完成电脑到处理器的通信、GPRS模块到电脑的通信。GPRS模块、处理器、电脑的通信电路连接示意图如图5所示。 3 监视模 监视模块采用的是普通高清视频摄像头,分辨率达1024×768。视频采用PAL模式传输经处理器处理,通过无线互联网把图像传输到客户端,其电路图如图6(a)所示。摄像头的各方位由单片机驱动舵机来实现舵机驱动电路如图6(b)所示。 4 驱动模块 驱动模块采用的驱动芯片为L298N该芯片功率大,电源可直接采用12V。单个芯片可以控制两个直流电机,本文采用两片L298N 以实现自动引导小车(AGV)的各方位移动。电路如图7所示。 5 电源模块 电源部分采用的是12V直流锂电池,功率为10W。对各个模块部分进行分别供电。稳压管采用的是7805。由于GPRS对电源要求特别高,所以单独采用一个LM2941S对其供电。 wf8000 WIFI模块是华为公司生产的一种专门用于嵌入式系统的无线网络模块,其符合802.11b标准,芯片采用prism3.0。原理图如图8所示。 6 结论 利用本控制系统,可以实现AGV的远程控制及工作环境实时监控。结合运输机械装置可以实现在特殊工作环境下的智能远程控制搬运工作。在物流中心等一些环境较差的场所可以代替人工作实现更多的功能,为货物搬运工作带来便利。

    时间:2021-03-21 关键词: 控制系统 物流中心 自动引导小车

  • 嵌入式光学指纹识别系统的设计方案

    嵌入式光学指纹识别系统的设计方案

    引言 随着电子信息技术应用面日益拓展,不少场合需要对特定用户群体进行身份识别或身份记录,如门禁系统、考勤系统、安全认证系统等,在各种系统中运用的技术形式多样,如视网膜识别、面相识别、指纹识别、RFID 射频识别应用等。其中,生物特征识别方式以其方便性强、安全性高等特点得到了越来越多人的认可和接受,特别是指纹识别技术方式,现已发展成为应用最广泛的生物识别技术之一。因此,研究基于嵌入式架构的指纹识别系统具有现实意义和广阔的应用前景。 1 系统整体结构 系统采用光学指纹传感器(内建格科微电子有限公司的光学GC0307 CMOS 图像采集芯片)与ARM Cortex M3 内核意法半导体公司的32 位高性能单片机STM32F205RE 组成功能主体,采用Sobel 边缘检测算子、Gabor 滤波、图像二值化等图像采集与处理算法对指纹图像进行识别,构建了小体积的嵌入式指纹识别模块,具有积木式嵌入、微功耗、程序接口简单易用、便于二次开发、识别准确度高、高性价比等特点。 2 系统硬件电路设计 整个系统设计构成了一体化光学指纹识别模块。模块设计采用光学暗背景成像原理,加入特有活体检测芯片,在解决干手指效应的同时解决残留指纹误识别、橡胶假指纹等问题。 图1 所示为格科微电子有限公司的光学GC0307 CMOS 图像采集芯片应用电路原理图。该款CMOS 图像采集芯片是高精度、低功耗、微体积的高性能相机的内置式组件,它把实现优质VGA 影像的CMOS 影像传感器与高度集成的影像处理器、嵌入式电源和高质量的透镜组结合在一起,输出JPEG 图像或图像视频流,支持8/10 位数字传输JPEG 图像和YCbCr 接口,提供了完整的影像解决方案。 CMOS 图像采集芯功能输出串行数据引脚、时钟信号引脚、复位引脚、串行总线引脚等都接入到STM32F205RE的GPIO 口, 通过GPIO 口模拟时序读取CMOS 芯片采集到的图像信息。由于STM32F205RE 的GPIO 口工作频率可达120 MHz,因而可以非常准确高效地模拟时序,实测640×480 的原始图像能以10 帧/s 的速度采集到主处理器STM32F205RE 中进行图像处理。 3 系统软件功能设计 本系统的指纹图像采集过程如图2 所示。系统软件设计部分则针对畸变纠正采用了四点转正算法。 通过公式(1)和公式(2)可以得到从(x,y) 到(u,v) 的变换,其中,A ~ H 由光路决定,可以由具体测定数据最终确定,通过实测可以获得原始数据。图3 所示展示了原始图像和畸变纠正前后图像的效果差异。通过变换可见,畸变纠正后的图像通过变换可达500 DPI分辨率,为后续获得高质量图像处理数据奠定了基础条件。 然后送入算法处理。由于嵌入式系统的图像处理算法必须运算量小、占用RAM 存储器空间小,才能在运算性能有限的单片机系统中运行,故而本系统通过小块方向替代点方向,减小RAM占用。 在图像增强方面,可以将图像以L 为长宽划分为小块,再按如下公式求取每一块的均方差 : 根据实验数据测定和分析,当Aver>36 时,可认为该区域内有图像,否则认为是背景。利用均方差区分出了前后景,还可以据此判断图像的对比度。根据对比度的差异分别来增强图像,可以使得不同曝光亮度的图像得到一致增强。对原始图像进行了算法处理,提取处理前后效果进行比对,具体效果如图4 所示。 软件算法中对于指纹处理中的求取图像方向场问题,采用了基于原Sobel 算子改进后的Sobel 算子。 原Sobel 算子如下: 改进后的Sobel 算子为: 改进的Sobel 算子能增加方向场的准确性,实测通过率从采用标准Sobel 算子的93.3% 提高到95.8%.图5 所示为其变化情况。 如图5 可见,改进的Sobel 算子在原Sobel 算子的基础上,能显着地分割出正确图像的面积,几乎能在整个画面区域提取出正确的方向来。系统对图像进行了Gabor 滤波和图像数据二值化。指纹图像属于纹理图像,纹理图像采用Gabor 滤波器,利用每一点的点方向沿方向指向增强,沿方向的法线方向减弱。Gabor 滤波器能很好地拼接断纹,滤除环境噪声,最后将Gabor 滤波后的图像做双窗口均值门限二值化: 门限1 均值化算子矩阵: 7×7 的单位矩阵。 门限2 :均值化算子矩阵: 3×3 的单位矩阵。 具体运算表达式如下: 当每一点的值g(x,y)>p(x,y) 时,则赋值g(x,y)=1,否则赋值为0,以此得到二值化最终的结果,提取图像进行实测效果的比对如图6 所示。 经过上面的步骤,即可从原始图像里面提取出有效的特征信息。特征信息描述了特征点的位置、方向等信息,最终形成一个大小不超过512 字节的特征模板。指纹的比对就是在特征模板的基础上,构建两个点形成的杆对集,而杆对所包含的杆长度、端点方向与杆的夹角等信息已经是相对量,与位置无关。理想状况下,同一枚指纹,采集的两幅图像能找到的杆对的每一个量(长度、夹角)在数学上是完全相等的。以此为基本数学模型,构建整个比对算法。 4 结语 本文的基于ARM的光学指纹识别系统的设计方案,经过实物测试, 模块录入用户指纹图像时间为500 ~ 800 ms,拒真率小于等于1%,平均4.2 ms 即可比对一枚指纹,支持1∶1 指纹验证和1∶N 指纹搜索。在硬件设计中引出了通信端子,系统支持3.3V TTL 串口通信,可以通过串口对模块进行用户注册、删除特定用户、删除所有用户、复位模块、获取用户总数、获取用户权限、1∶1 比对、1∶N 比对、设置串口波特率、读取图像并提取特征值、获取图像等30 个常规或扩展功能命令,能满足大多数的指纹应用场合,可以很好地运用于嵌入式领域,从而证实了本方案的可行性。

    时间:2021-03-21 关键词: 嵌入式 识别系统 光学指纹

  • 高级电源管理芯片FS1610及其应用

    高级电源管理芯片FS1610及其应用

    0引言 Fsl610是一款采用专利数字技术生产的高级电源管理控制器件,该器件可为数码相机、智能手机、个人PDA和笔记本电脑等移动设备提供完全可编程的电源系统解决方案。与传统的电源管理方法相比,FSl610能节约20~40%的PcB面积,此外,其完全可编程的专利数字技术.还能极大缩短研发周期.加快产品上市进程。 1 FSl610的主要功能 IS1610内部的电压检测主要针对的是FSl610芯片的供电输入,而器件的输出则包括8个高效开关电源和3个低功耗LDO,表l所列是其电源输出列表。需要注意的是,FSl610的输出电压和电流都会受到输入电压、电感、电容以及外部诸多元件因素的影响。 l 1电源输出 FSl610提供有8个开关电源.3个LDO电源和1个始终开启的电源。对这些电源输出的控制一般有三种方式:其一是通过外部的PWREN使能输人引控制;其二是通过串行命令在使用过程中根据具体情况进行控制;第三则是按照EEPROM中的设置程序来执行。 FS1610的电源输出主要用于降压转换、升压转换、白光LED驱动、低压差稳压、负升压转换和电池供电等。图I所示是用FSl610来驱动白光LED的驱动电路。 1.2电源输入 FSl610的供电电压范围是2.8~5.5 v。图2所示是S1610的供电输人以及AC适配器和电池之间的切换电路。其中VMAIN为主电池比较器输入,用来直接监测电池的状态;VIN为主电源供电输入;DBOUT用于断开电池的输出,将它连接到一个外部的P通道MOSFET,可当检测到电池的无电状态(DB)或者AC适配器有输入时,由该输出置位断开电池和主电源的连接;BATBU为备用电池输人,一般情况下,为了能使芯片正常操作,在BATBU输入引脚上一定要有电压;VBAT为始终开启的供电输出,可由内部开关控制,当SW[2]有效且稳定时,可将SW[2]连接到VBAT来提供电压;否则由BATBU给VBAT提供电压。 1 3其他功能 FSl610内有一个非易失存储器NVM(EEPROM),可用于保存启动的配置信息,这些信息包括通道电压、通道使能,禁止、个电源的开关顺序以及实时时钟、看门狗、中断等信息。 FSl610可通过晶体时钟提供实时时钟的操作。而其可编程报警器则可向CPU发出中断。FSl610片内还集成有一个看门狗定时器,可通过EEPROM编程设置,其定时时间达32s,时间间隔是1ms。但是,由于达到定时时间时,芯片就会复位,所以,为了避免这种情况的发生,主机必须在程序设置的定时周期结束之前,对WDT进行复位。 FSl610应由32.768 kHz晶振、或者具有合适的频率和电压的时钟源来为芯片提供内部时钟。而器件的CLKOUT输出引脚则能为外部提供32.768 kHz的输出。FSl610的nEXTON开关输人端一般连接到瞬间接触开关上,可用来控制芯片的开/关。FSl610分别为不同类型的处理器设计有两个复位输出nIRSTO和nRSTO,而手动复位输入nRSTI则主要用来启动一个硬件复位,以作为主机CPU的系统复位信号。 FSl610在需要的情况下可提供中断,并向主机发出警报。这些警报包括低电压,电源通道故障,RTC警报等。同时可以通过串行命令来对中断进行操作。 2 Fsl610的内部结构原理 图3是FSl610模块的内部结构示意图。由图可见,FSl610以电源管理控制器为核心,可为外部设备提供丰富的电源通道。另外,配合电源管理.FSl610还提供有非易失性存储器NVM、实时时钟RTC、看门狗定时器WDT、中断、复位等系统控制模块。 3工作模式 FS1610有两种操作模式,分别为串行模式和独立模式。FSl610芯片片可通过I2C、SPI和ART串口来接受主机的控制和管理,也可以在启动后根据EEPROM加载的参数独立工作。低功耗是FSl610的最突出优势之一。该芯片上的各个功能模块在不需要操作时都可以关闭。已进人休眠状态。FSl610会根据不同的环境条件在5种电源状态下自动切换,以使功耗最小化。这5种状态分别为:无电(NOPOWER)状态、关断(SHUTDOWN)状态(即SD状态)、就绪(READY)状态、工作(ACTIVE)状态、低功耗(LOWPOWER)状态。 设计时.可以对FS31610的多路电源进行灵活的配置和控制。除了对单个电源通道的开/关操作之外。还可以对电源通道进行分组,然后对各电源组进行操作。电源的启动和关闭顺序,也可以设置存储在EEPROM中,以便主机在操作的过程中来控制。 FSl610对芯片提供有可能出现的各种故障的监测和管理。这些监测包括:受监测电源正常状态、电源通道故障、电池电压和备用电池监测、热关断、中断。此外,FS1610芯片还可根据EEPROM中的设置,对监测到的不同状态进行不同的操作。 4基于FSl6l0的导航仪供电系统 FSl610的多电源输出和电源管理功能在便携式设备中应用非常方便。图4是FSl610电源管理控制芯片在基于Sumsang公司的ARM9处理器S3C2440的导航仪上的供电电路。 根据系统的设计要求,该导航仪除了具有基本的GPS导航功能外.还需要高分辨率的液晶屏支持。为此,该系统选用的是LCD模块,该模块是已经包含了背光和控制电路的液晶屏,但需要+3.3 v和+5 v供电。表2所列出是该导航仪系统的电源需求。 由于该导航仪通常是采用电池供电,故需要最小化的功率消耗,而且要求各外设都要由系统控制。在图4中用FSl610对导航仪系统进行供电的电源分配方案中,需要注意的是,LCD背光需要400mA电流的+5v供电,而FSl610的升压电路不能提供这么大的电流,因此,设计时应用一个外加的升压电路来提供LCD的背光电源。 5结束语 本文介绍了高级电源管理控制芯片FS1610的原理和功能,给出了一个FSl610在基于ARM9处理器S3C2440设计的导航仪上的应用方案。采用该方案进行供电的导航仪,不但可以自由控制各个模块电源的开和关,而且可以在不需要的时候关闭模块,以便最小化整个系统的功耗。与传统的方法相比,选用FSl610不但可以明显节省电路板面积。提供更多的通道电压.而且控制也更加灵活。

    时间:2021-03-21 关键词: 高级电源管理芯片 FS1610 S3C2440

  • 怎样处理ARM体系下浮点数Middle-Endian问题

    怎样处理ARM体系下浮点数Middle-Endian问题

    由于可移植性好,相当一部分嵌入式软件都是用C/C++语言开发的,而C/C++语言编写的程序中数据存储字节顺序是与编译平台所用的CPU相关的,所以嵌入式软件移植过程中,数据存储字节顺序是需要重点处理的地方。 在嵌入式GIS软件从x86体系结构下移植到ARM体系结构的过程中,遇到了浮点数据存储字节顺序的问题。该问题既不是Big-Endian,也不是Little-Endian,而是Middle-Endian字节顺序。本文先介绍该嵌入式GIS软件开发平台和运行平台,再对移植过程中遇到的问题进行跟踪和分析。找到问题根源,最终给出两种解决方案。 1 嵌入式GIS软件 嵌入式GIS软件是用C++语言开发的,运行在PDA上的嵌入式软件。该软件系统结构如图l所示。 在以嵌入式硬件设备为硬件平台的基础上,内核版本为2.4.30的嵌入式Linux操作系统和QT/Embedded图形界面开发包构成 了嵌入式GIS软件的软件平台。嵌入式GIS软件通过第三方库GDAL/OGR,提供对多种格式(如Shapefile、mapinfo)等矢量电子地图的读取操作。 嵌入式GIS软件的运行平台是以ARM920T为处理器的三星公司的SMDK开发板。电子地图数据来自官方发布的某区域电子地图数据。 嵌入式GIS软件在x86上调试通过后,使用2.95.3版本的arm-linux-gcc编译器交义编译嵌入式GIS软件和其他组件;最终将该软件移植到SMDK上运行。 移植到SMDK开发板上之后,嵌入式GIS软件能够正常显示软件框架;在读取Shapefile格式电子地图时,进入死循环状态。根据debug信息显示,嵌入式GIS软件所读取的Shapefile电子地图显示范围的4个double类型数值,与X86下读取的数值不一致。例如,Shapefile文件中的数据为-3.383 700,而在ARM平台下凄出的数值则为7.49530le+68。ARM体系结构下读出的错误数据将导致嵌入式GIS软件运行时逻辑出错,不能正确最示电子地图。 2 Middle-Endian 在不同的体系结构之问移植嵌入式软件时,数据存储字节顺序是需要处理的问题之一。 提到数据存储字节顺序,就要提到Big-Endian和Little-Endian。在各个体系结构处理器设计之初,Big-Endian和Little-Endian的分歧就一直存在,它们代表着每个字节在不同体系结构下的不同存储方式。如图2所示,数值0x1234ABCD在不同的字节顺序下具有不同存储顺序 字节顺序的不同,经常导致读取跨平台的文件数据不一致。针对嵌入式GIS软件移植过程中发生的数据不一致问题,对ARM体系结构的字节顺序进行了测试,方法如下: return(htonl(1)==1)?BIG:LITTLE; 测试结果显示,ARM同x86一样.采用的是Little-Endian字节顺序存储数据,并不存在Big-Endilan和Lit-tle-Endian之间转换不当的问题。 使用简单的二进制数据文件模拟x86下的Shapefile 文件。在x86体系结构下,分别在二进制文件中写入int、f1oat和double类型数据,得到x86下的数据文件。将该数据文件转移到SMDK开发板上,读取该数据文件中的数值并打印。 测试结果显示ARM体系结构下读取x86体系结构下生成的二进制文件,int和float类型数据与x86体系结构下一致,只有double类型数据不一致。经过进一步验证,将double类型数据以十六进制形式打印,就可以发现问题的关键,如图3所示。 同样的double类型数据0x1234 ABCD,在ARM体系结构下读出变成0xABCD1234。所以在ARM平台下读取的地图数据发生了变化,导致嵌入式GIS软件逻辑判断出错,不能正确运行。 原来ARM处理器对浮点数double类型的存储不支持IEEE标准,既不是Litrlc-Endian字节顺序,也不是Big-Endian字节顺序。在ARM平台下,每个double类型分为两个字,每个字内部采用Little Endian字节顺序,而两个字之间采用Big Endian字节顺序组织,即MiddleEndian字节顺序。 目前还不能通过硬件或者软件调节改变ARM体系结构对double类型数据的存储顺序,因此,对于类似嵌入式GIS软件这样需要读取其他体系结构平台下生成的二进制文件的程序,都需要对double类型数据的存储顺序进行处理。 3 解决方案 针对ARM体系结构下double类型数据存储的Middle-Endian问题,有两种解决方案。 (1)修改跨体系结构数据文件 将跨体系结构文件中的double类型数据改成用文本格式存储。文本格式在跨体系结构的传输中不会改变其存储格式,从而保证读取的数据一致。但是嵌入式GIS软件的数据是官方发布的数据,很难对其进行修改,所以在本软件中这种方法不适用。 (2)应用程序中添加Middle-Endian处理 同Little-Endian和Big-Endian的处理类似,在底层代码中,凡是涉及double类型的数据读/写操作,都要事先对double类型的数据进行调换,以保证double类型数据存储的跨体系结构一致性。 嵌入式GIS软件是通过调用GDAL/OGR中的shpopen.c文件提供的函数对Shapefile文件进行读/写操作的。所以在shpopen.c文件中添加对Middle-Endian字节顺序进行判断的函数void EndianType(void),代码如下: 通过对浮点数1.982031在软件运行平台下的十六进制数值和其在x86下十六进制数值的比较,确定该运行平台是何种字节顺序。 经过验证,一旦该平台采用Middle-Endian字节顺序存储double类型数据,则可利用函数“void SwapWord(int length,dout)e*dValue);”对double类型数据进行交换,以获取正确的存储顺序。代码如下: 经过修改后的sbpopen.c文件,增加了对ARM体系结构下Middle-Endian字节顺序的支持,最终解决了Micidle-Endian的问题,能够正确显示电子地图数据。 4 小 结 本文描述了嵌入式GIS软件从x86平台移植到ARM体系结构平台的过程中遇到的浮点数存储字节顺序问题,并对该问题进行了详细分析,最终确定是ARM体系结构下浮点数的Middle-Endian存储问题,并提供了解决方案。希望本文的开发经验可以对嵌入式GIS软件开发者提供一些有用的帮助。

    时间:2021-03-21 关键词: 浮点数 ARM体系 Middle-Endian

  • 基于ARM的嵌入式车载GPS定位系统设计

    基于ARM的嵌入式车载GPS定位系统设计

    0 前言 车载定位系统作为车载信息系统的重要部分,利用GPS等装置,以一定精度实现车辆定位,包含位置、速度和行车方向等车辆姿态信息。继一些国家之后,我国一些科研院所和高校也开始研究自己的车载定位系统,市场空前的繁荣。但是传统系统功能单一、集成度不高。随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经成为嵌入式应用和设计的主流。同时嵌入式Linux是一个非常好的免费的操作系统内核,具有稳定、良好的移植性、优秀的网络功能、完备的各种文件系统的支持、以及标准丰富的API等特点。因此,本文提供了一套具有先进性及工程实用性的车载定位系统整体解决方案,使得系统的性能、集成度和可扩展性大大提高。 1 系统的硬件设计 1.1 系统的整体硬件设计 本文车载信息系统由以下几部分组成:主控制部分、定位部分、通信部分、数据采集部分、显示部分,如图1所示。 主控制部分采用了三星公司基于ARM920T的S3C2410和Linux的嵌入式系统平台,完成整个系统的控制。其主要包括电源电路、时钟电路、复位电路、存储模块电路、JTAG接口电路、串行口电路、LCD接口、SPI接口以及按键电路的设计。主控模块通过串行口、SPI接口、LCD接口与扩展模块相连接构成整个硬件系统。 1.2 GPS模块的硬件设计与制作 定位部分采用了自行设计和制作了基于瑞士U-BLOX公司LEA-4S芯片的GPS接收模块。在此给出了GPS接收模块的整体设计,如图2所示。 u-blox的GPS部分分为两部分。采取数字/模拟分开设计的方法,有效提高了模块的抗干扰能力。在硬件的设计制作过程中。也是分为两步,即模块部分和数字部分。模拟部分主要由天线接入端及天线供电部分/检测电路构成。 天线选用3v供电的有源天线,增益27dB左右,噪声系数1.5dB左右。天线接入模块较为复杂,从GPS有源天线接收的信号频率高选1.575C,属于微渡范围。PCB设计需要满足天线座到模块RF_IN端的阻抗匹配为50Ω。 模块供电电源稳压电路为5v转3v的五脚LDO,对电压稳定精度较高,要求输出纹波在50mV以下,电流为150mA左右,这里选用精工的SOT-23-5封装的LDO S-11123.0V,能满足电源供应的要求。后备3V可充电微型锂电池则为数据保存作用。 选择电路为波特率的选择及速率选择。或是启动速度之类的选择,一般可以用默认值。 数字部分硬件相对简单,LEA-4S为两路TTL电平输出,分别为9600/11520波特率,分别支持国际通用GPS协议NMEA及u-blox公司的UBX二进制格式。在本设计中,通过串口O提取ASCII码,串口数据通过MAX232电平转换为RS232电平。另外,将GPS模块的发送端和接收端经电平转换后与审口DB9交叉相连。 2软件平台的搭建 系统的软件平台的搭建其实就是嵌入式linux操作系统的移植移植工作,主要包括4步:建立交叉编译环境,移植引导程序,编译内核,生成根文件系统。 交叉编译工具主要由gcc,binutils和glibc这几部分组成。由于重新建立一个交叉编译工具链比较复杂也没有任何意义,所以本文使用已经做好的工具链。因此建立交叉编译环境的过程实际就是对工具包cross-3.3.2.tar.bz2解包的过程。 本文移植的Bootloader是韩国Mizi公司开发的vivi.首先在根目录下创建一个armsys2410目录,对vivi_armsys.tgz执行解压命令。解压完成后进人vivi_armsys.执行命令makememmonfig,然后选择"Load on Alternate Configuration File"菜单,再写入arch/def-co-igs/smdk2410,进行vivi的裁剪。执行make命令进行编译,在vivi_armsys目录下生成vivi二进制文件。最后将其烧写到Flash. 内核的编译通过命令make menueorffig进行内核的配置;通过命令make dep建立依赖关系;通过命令make zlmage建立内核。得到Linux内核压缩映像zhnage.最后通过vivi命令提示模式下使用下载命令,将压缩映像文件zlmge装载到flash存储器中。 Linux支持多种文件系统。cramfs是Linus Torvalds撰写的只具备最基本特性的文件系统。本文使用mkcramfs工具对主机里已有cramfs文件系统进行制作和压缩。最后也要烧写到flash的相应部分。 3 GPS模块驱动程序的开发 Linux将设备分为最基本的两大类,字符设备和块设备。字符设备是单个字节为单位进行顺序读写操作,通常不使用缓冲技术;而块设备则是以固定大小的数据块进行存储和读的。 GPS模块驱动程序是在UART驱动程序的基础上加入对GPS模块初始化和对GPS模块输出数据处理的部分,构建一个独立的驱动模块,在导航系统进实时导航工作模式时挂接到系统内核中,实现GPS功能。 3.1 初始化/清除模块 在初始化程序段中要完成对GPS设备的注册,设备节点的创建和对串口相关寄存器的初始化。部分代码如下: 3.2 两个数据结构定义 模块驱动的最终目的就是取得GPS信息,因此规范GPS数据是对数据传递的可靠性和速率都是有益的。 struct GPS_DATA{ unsigned int hour;//小时,24小时制 unsigned int minute;//分 unsigned long Second;//秒,精度小数点后三位 unsigned long latitude;//纬度 unsigned char southornorth;//纬度属于南北的标志码 unsigned long longitude;//经度 unsigned char eastorwest;//经度属于东西的标志码 };//其中包括了在导航系统中所需的几个重要数据。 另外还有对驱动模块文件操作结构的定义。即: static struct file_operations gps_fops={ead:gps_read, rite:gps_write, octl:gps_ioctl, open:gps_open, elease:gps_release, };//定义了设备操作映射函数结构。 3.3 驱动程序的模块操作 在导航系统进入GPS导航模式时,系统首先是将GPS模块注册到操作系统中,实现初始化过程,再通过gps_open函数打开设备,此过程中完成对中断、缓冲区以及定时器等资源的申请,为GPS数据读取做准备。通过gps_write()向模块写命令字来是自主地选择工作模式,gps_ioctl()则是选择串口传输模式,使之与GPS模块传输模式相匹配。之后的应用程序将创立一个独立的进程为进行GPS数据的读取gps_read(),该进程没有数据时进程会一直处于睡眠等待数据,有数据来,进入中断处理模块,完成数据的分析,生成GPS_DATA数据结构,供导航使用。这个进程是随着导航模式的切换而终止的,此时除了关闭进程外,还需要用gps_release()释放申请的所有资源,并关闭设备。 3.4应用程序的实现 GPS模块通过串口输出NMEAO183语句,而应用程序主要完成对GPS数据的采集与解析。NMEA0183输出语句多达十余种,任意一种定位语句都包含一定的定位数据,由于以"$GPRMC"开头的语句包含了本系统所需的所有定位信息,本系统只需研究该类型。该类型定位数据的各个符号位的含义如下所示。 应用程序的整体设计流程如图3所示。 从图3可以看出,系统开始运行后首先对串口的初始化就是对GPS模块韧始化,包括设置波特率、数据位、校验位等,然后开始接收GPS数据。即从串口读数据。井将读到的数据保存到BUF中;接着进入数据的解析和提取阶段。通过BUF等不等于"c"判断是苦为$GPRMC;若是,则开始提取经纬度、时间等信息并存入结构体GPS_DATA中。最后通过LCD显示出来。 4 结束语 本文给出了基于ARM9和嵌入式操作系统Linux下,GPS定位系统的整体解决方案。包括了系统的整体设计,GPS模块制作方案,开发平台搭建以及GPS驱动程序和应用程序的设计。较市场上的车载定位系统相比,本设计在功能性、可扩展性和稳定性上都有所提高。由本系统作为基础,车载定位系统的下一步工作将可以专注于应用程序的编写,包括提高GPS定位精度的算法,以及开发更加友好的人机交互界面。

    时间:2021-03-21 关键词: 嵌入式 车载GPS定位系统 ARM

  • 基于ARM的数字电视射频信号功率检测器设计

    基于ARM的数字电视射频信号功率检测器设计

    1 模拟、数字电视信道功率区别 模拟电视广播,用峰值功率电平表征频道信号的强弱。测量模拟电视发射机输出信号功率电平时,使用频谱仪对信号同步脉冲的峰值电平进行测量。因为这里集中了信号在频道内的主要能量(超过98%),所以可以认为对载波同步脉冲的测量可以代表信号在测量频道内的电平值。 数字电视广播用信道功率表征频道信号的功率强弱。数字电视调制信号类似噪声,信号在调制到射频载波前被进行了随机化处理。由于数字信号以噪声形式出现,它更像随机加入到频域测试设备中的一组组脉冲,所以采用信道平均功率判断信号强弱。 数字电视信号有较高的峰均比,如表1所示。如果测量中仍测其峰值功率电平,则测的的数据会与信道平均功率有较大误差。因此,数字电视信号的测量应测其平均功率。 2 功率检测器系统总体设计 数字电视射频信号功率检测器主要由3个部分组成:带通滤波器、RF功率检测模块和系统控制与显示模块。其框图如图1所示。 数字电视发射机功率检测器用ARM S3C4480X芯片作为其核心控制器,内部的宽带滤波器用微带线滤波器实现,RF功率检测用专业的功率检测芯片AD8362实现,模数转换用双通道、12位高速ADC芯片实现,显示用128×64像素点单色LCD显示器实现。 框图中共有2组带通滤波器+功率检测模块组合,分别用来检测一个频道的RF信号入、反射功率大小。若系统需要同时检测多个频道的RF入、反射功率,则可以增加带通滤波器+功率检测模块组合及ADC模块数量。 耦合而来的RF信号先进入数字电视射频信号功率检测器中的带通滤波器(UHF波段特定中心频率、带宽8MHz)。经过滤波后,某一特定频道的RF信号再送入功率检测模块,检测后输出信号强度模拟电平,该功率检测模块可以检测数字信号的真有效值功率,检测动态范围高达60d B。ADC芯片将送来的RF功率强度模拟检测电平转换为数字信号输出,该ADC芯片具有2个12位的高速逐次逼近型ADC模块,采样速率高达2MSP S。ARM控制器控制整个功率检测器的功率检测及显示功能,ARM控制器接收ADC送来的数字信号,经运算处理后,最终将结果显示在LCD显示模块上,ARM控制器采用16/32位ARM7TDMI内核,主频66MHz,集成8KB高速缓冲器、外部存储器控制器、LCD控制器等模块。 3 硬件设计 3.1 输入保护电路 在整个功率检测器的输入端,增加了输入功率过载保护电路。当输入的RF信号功率过大时,该保护电路将会自动限制输入信号的功率,达到保护后级检测电路不受损伤的目的。输入过载保护电路由肖特基增强型PIN限幅器、射频变压器组成。当输入RF功率低于门限电平时,信号能够正常通过保护电路;当输入RF功率达到或超过门限电平时,保护电路会自动将输入功率限制在最大允许功率电平上,保证后级电路正常工作。该保护电路具有宽工作频率200~1400MHz,低功率限制电平约6.05dBm,能够满足广播电视频段应用的需求。 肖特基增强型PIN限幅器采用ASML-5829,限幅器中有一PIN二极管和一肖特基二极管,两二极管如图反向并联在输入电路上,当RF信号低于限制门限,肖特基二极管上电流很小,导致PIN二极管的结电阻很大,RF信号便能无损耗地向后级传输;当RF信号增大到限制门限,肖特基二极管电流升高,导致PIN二极管结电阻减小,大部分RF信号入射功率经PIN二极管被反射回输入源。射频变压器采用TC4-14+,次级初级绕阻比为4,因此变压器即能起到放大信号的作用,又能起到阻抗匹配的作用。输入过载保护电路在整个工作频段内,插损最大约-2.8dB,回波损耗最小约-18dB。 3.2 功率检测 3.2.1 均方根检波器AD8362 AD8362是一个真有效值功率检测器,其检测输出的线性直流电压正比于输入信号功率大小,输出与输入信号的峰均比无关,具有60dB测量范围。它被用于各种不同高频通信系统和对信号功率要求准确相应的仪器中。该芯片简单易用,只要单5V电源供电和一些电容。它可以在任意低频至2.7GHz频率中工作,可以接受从1mV~1V有效值的信号输入。被测信号的峰值因数可以高达6,超过了对CDMA信号精确测量的要求。AD8362能够测量射频信号的有效值功率,为理想的数字电视射频信号功率检测器。 AD8362具有以下特性:1)完全精准测量/控制系统;2)精准的RMS转直流(50Hz~2.7GHz);3)输入动态范围大于60dB(50 Ω下,-52~8dBm):4)独立的波形和调制(GSM/CDMA/TDMA等);5)线性的分贝输出(50mV/dB);6)0.5dB偏差;7)不同温度和供电下功能稳定(4.5~5V在24mA,-40~+85℃);8)待机状态1.3mW。 AD8362既能用于功放线性控制,也能用于射频功率检测。当用于功率检测时,其VOUT脚与VSET脚应直连,此时输出是正比于输入rms对数值,斜率50mV/dB。当用于功放线性控制时,VOUT脚与VSET脚独立,功放通过AD8362的VOUT输出来改变自身的增益,达到功率输出线性的目的。 3.2.2 功率检测电路 AD8362提供测量模式和控制模式两种工作模式。在控制模式下,AD8362可监视可变增益功放的输出,并通过设定VSET脚上的电压,控制调节功放增益,使功放输出到一个理想的目标值。当输入大于VSET脚设定值,VOUT置逻辑高电平,当输入小于VSET脚设定值,VOUT置逻辑低电平。在测量模式下,AD8362仅检测RF的功率大小,VSET脚与VOUT脚短路。本设计采用测量工作模式,检测电路如图3所示。 AD8362的输入可以是差分输入或单端输入,如果要配置为差分输入模式,输入电路前还需增加BALUN(非平衡转平衡转换器),这里我们使用单端输入模式。VOUT经过运放放大后送出检测电压值PWR_DET。当VSET脚与VOUT脚短路连接时,输出电压与输入信号电平呈线性对数关系(斜率50mV/dB),对于输入信号为-60dBm(截距)时,VOUT输出为0V。输出电压可用如下公式表示: VOUT=(PIN-PZ)×50mV PIN为输入信号的功率,PZ(截距)为输出为0V时的输入信号功率,两者单位均为dBm。通常PZ为-60dBm。 本设计中,VSET脚与VOUT脚并未直接短路连接,而是通过一个电阻相连,且在VSET脚上加了一个配置电压(截距重定位电压)。这样,便可以增加输出电压公式中的斜率,以便更适应特定的功率检测环境。当然,这样的电路连接也会降低检测的动态范围。 由于VOUT、VSET连接改变,斜率有所变化。另一方面,由于阻抗失配和衰减等因素,测量可能会有误差,因此,需要对测量电路的计算公式做校正,重新计算公式中的斜率(SLOPE)和截距(INTERCEPT)。校正方法是施加连个接近AD8362线性输入范围端点的已知信号电平,然后测量输出电压。根据AD8362线性范围选择两个输入信号电平为PIN1=-60dBm,PIN2=-30dBm,并分别测得电路输出电平为VOUT1和VOUT2。则可以通过以下公式计算斜率和截距: 检波器输出给后级的双路,12BIT ADC处理,将检测直流电压变为数字信号经过SPI接口送至MCU主控制器。 3.3 系统控制 整个功率检测器选用三星公司的16/32位RISC处理器S3C4480X(66MHz)作为系统控制器。S3C44BOX采用ARM7TDMI内核,0.25 μm工艺的CMOS标准宏单元和存储编译器,为手持设备和一般类型的应用提供了高性价比和高性能的微控制器解决方案。该处理器提供了丰富的内置部件:8KBcache、内部SRAM、LCD控制器、71个通用I/O接口、RTC、10位ADC、自动握手的2通道UART、I2C总线接口等。系统控制器执行功率检测程序,并控制检测电路对射频信号功率的采集,将功率检测结果显示在LCD模块上。LCD模块选用128×64像素的LCD屏,共能显示4行中英文字符。且通过软件控制,可以实现定时刷屏,这样就能实时显示射频信号功率的检测结果了。 4 软件设计 功率检测软件执行的流程如图4所示。系统先初始化功率检测模块、ADC模块、LCD模块等,使所有模块进入正常工作状态。MCU采集射频信号的入、反射功率检测数据,对数据进行判断是否超过测量线性范围,如超过,则显示超过测量范围,此时可按“重新检测”按钮使系统重新检测功率;如未超过,则由采集数据计算功率值的大小。系统对功率值继续判断其是否在设定门限范围内,如超过,则显示异常功率值大小及功率异常报警,此时仍可按“重新检测”按钮使系统重新检测功率;如未超过,则显示正常的功率值大小。如果检测的功率值正常, 系统默认是按周期循环检测,使维护人员能够实时查看入、反射功率状态,同时也可按“停止循环检测”按钮随时停止循环检测程序,使显示保持当前状态。 5 小结 本设计的数字电视射频信号功率检测器能够准确实时测量地面数字电视射频信号功率大小,并具有功率异常报警功能,为维护人员提供有效监测手段,提高维护效率,保障安全播出。本检测器检测准确、结构简单、运行稳定,具有一定的应用前景。

    时间:2021-03-21 关键词: 数字电视 射频信号 功率检测器 ARM

  • 基于ZigBee技术的嵌入式无线网络平台的研究

    基于ZigBee技术的嵌入式无线网络平台的研究

    0 引言 无线网络系统源自美国军方的“电子尘埃(eMote)”技术,是目前国内、外研究的热点技术之一.该系统基于IEEE802.15.4规范的无线技术,工作在2.4 GHz或868/928 MHz,用于个人区域网和对等网状网络.ZigBee是一种新兴的近距离、低复杂度、低功耗、低数据速率、低成本的无线网络技术。它是一种介于红外无线技术和蓝牙之间的技术提案.主要用于近距离无线连接.它依据802.15.4标准。在数千个微小的传感器之间相互协调实现通信.这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,所以它们的通信效率非常高.相对于现有的各种无线通信技术,无线ZigBee网络技术将是近距离通信最低功耗和成本的技术.这一技术目前正向工业、民用方向推广和发展,市场前景广阔.包括国家863计划等项目都在进行相关的研究工作.因此,本文介绍的基于ZigBee技术的嵌入式无线网络平台,这一无线网络平台可应用于工业控制、信息家电、安保系统、环境监测、港务运输、煤矿安全、农业自动化和医疗监护设备等许多行业和设备。具有广泛的适应性。并能弥补其他无线通信技术的不足,保证其安全性,降低服务成本. 1 应用环境的确定 基于ZigBee技术的无线网络平台是构建于采用ARM技术和嵌入式Linux技术相结合的应用环境中. 1.1无线标准的比较 随着通信距离的增大,设备的复杂度、功耗以及系统成本都在增加.相对于现有的各种无线通信技术。ZigBee技术将是最低功耗和成本的技术.同时由于ZigBee技术的低数据速率和通信范围较小的特点,也决定了ZigBee技术适合于承载数据流量较小的业务.所以ZigBee联盟预测的主要应用领域包括工业控制、消费性电子设备、汽车自动化、农业自动化和医用设备控制等. 1.2 ZigBee协议栈模型 ZigBee协议栈采用分层结构,包括:物理层(PHY Layer)、媒体接入控制层(MAC Layer)、网络层(NWK Layer)和应用层,如图1所示. 相对于常见的无线通信标准,ZigBee协议栈紧凑简单,具体实现要求很低.只要8位处理器再配上4kB ROM和64kB RAM等,就可以满足其最低需要.从而大大降低了芯片的成本.ZigBee技术主要应用于距离短、数据传输速率不高的各种电子设备之间,典型的传输数据类型有周期性数据、间歇性数据和重复性低响应时间数据. 1.3 ARM 微处理器结构与嵌入式Linux的结合 ARM微处理器支持多种操作系统,同时Linux支持ARM技术的CPU.Linux提供ARM微处理器的编译环境,ARM的汇编指令和C语言可以进行交叉编程.标准C语言写的程序可以直接在ARM技术的CPU上运行.嵌入式Linux和ARM技术结合具有许多优点,为研究、开发和使用带来了极大的方便.本文提出以ZigBee协议为基础,利用ARM微处理器和嵌入式Linux操作系统,将它们有机结合,构建出针对无线网络的控制平台,这将为今后的研究和开发建立良好的环境. 2 基于ZigBee技术的嵌入式无线网络平台 本文主要针对ZigBee技术的主要特征及其协议栈,最后给出一种基于ZigBee技术的无线网络平台的实现.研究内容包括:可应用于嵌入式信息系统平台的无线网络的拓扑结构、网络层协议、路由算法、应用层接口及协议、低功耗系统设计方法、无线网络与标准平台的互连方式;安全机制;嵌入式软件设计与优化等.基于ZigBee的嵌入式无线网络平台的研究要考虑以下因素: 1)网络拓扑结构:ZigBee标准实际上支持多种网络拓扑,包括星型、簇树型(cluster tree)或星/网络混合型网络.因此,网络的选型需从数据的可靠性、网络的扩展工作范围等多方面考虑. 2)互操作性:ZigBee设备采用应用对象进行建模,这些应用对象通过交换类对象和它们的属性实现与其它设备的通信,因此要考虑利用ZigBee应用编程接口(API)来设计专有的应用类.此外,ZigBee没有定义传输层,所以是自己创建传输机制,还是使用一个带有内置传输层的ZigBee芯片来创建实际的应用也成为了关键问题. 3)安全性;ZigBee提供了一套基于128位AES算法的安全类和软件,并集成了802.15.4的安全元素.ZigBee协议栈类为MAC、网络和应用层定义了安全性.它的安全服务包括针对关键进程建立和传输、设备管理和框架保护的方法.必须决定在哪个层上施加安全机制,应用层的安全机制需要更多的存储器来实现.在MAC层和网络层的安全性实质上服务于相同的目的:确保单跳传输的安全. 4)平台因素:ZigBee提供了一个标准化的网络和应用框架,可以在此基础上建立应用而无须担忧联网和RF问题的烦扰.然而,单靠其自身,ZigBee标准化框架不能保证产品的顺利开发.必须选择一个集成硬 软件平台来建立自己的应用.必须仔细考虑所选平台的集成深度、网络协议栈的深度和合适的开发工具. 5)基于ZigBee技术的嵌入式无线网络平台评测的主要技术指标有:①无线传感网络节点功耗小于75mw(激活工作状态).②无线传感网络动态路由,有效数据载荷大于20kbps.③无线(GPRS)嵌入式广域网协议栈小于64KB RAM、128KB Flash. 3 平台安全性 3.1 ZigBee的抗干扰性 IEEE802.15.4定义了两个物理层标准,分别是2.4GHz物理层和868/915MHz物理层.ZigBee物理层分组结构如图2所示. (其中前导码4byte,主要用于前导同步,分组定界1byte,标志了分组的开始,物理层头1byate,指示了数据单元的长度,数据单元则用来承载所有传输的数据.) 两个物理层都基于DSSS(Direct Sequence Spread Spectrum,直接序列扩频)使用相同的物理层数据包格式,区别在于工作频率、调制技术、扩频码片长度和传输速率.2.4GHz的物理层通过采用高阶调制技术,有助于获得更高的吞吐量、更小的通信时延和更短的工作周期,从而更加省电.为了避免干扰,除了2.4GISM频段外,欧洲还采用868MHz频段,美国采用915MHz频段作为ZigBee的工作频段.这些频段都比较近,对信号合成器的程序稍微改动,就可以使用相似的硬件,从而降低生产成本.由于这2个频段上无线信号传播损耗较小,可以降低对接收机灵敏度的要求,获得较远的有效通信距离,从而可以用较少的设备覆盖较大的区域.2.4GHz频段(2.4—83GHz)被划分成l6个信道,数据传输速率为250kbifs,码元速率为62.5kbaud,采用了l6进制正交调制,用码片长度为8的伪随机码直接扩频.915MHz频段(902—928MHz)被划分为10个信道.数据传输速率为40kb/s.868MHz频段(868.3MHz)有1个信道,数据传输速率为20kb/s,码元速率为20Kbaud.后2个频段均采用了差分编码的二进制移相键控(BPSK)调制,用码片长度为15的M序列直接扩频. 3.2无线网络平台数据安全性 根据ZigBee网络的特点,在无线网络平台中采用许可证技术对保证数据传输的安全性较为适合.许可证是一个数据结构,它包括设备的信息、权限、等级、密钥等信息,用于确定设备的身份信息、操作权限和提供必要的密钥.如表2所示. 表2 许可证结构定义 采用许可证技术后,平台中信息传递的过程如下: ①发送方向接收方发送信息,并附加本设备信息. ②接收方收到信息后,先将信息和发送方设备信息存储在一个缓冲区中,然后将发送方的设备信息与本地存储器中的访问权限表相比较,确定发送方设备是否有权限向本设备发送信息. ③如果发送方是有权限的发送设备,那么接收方接收发送方的信息,并向发送方发送“正确接收”的反馈信息.如果发送方是非授权的发送设备,则接收方拒绝接收信息,清空缓冲区. 4 无线网络平台的自组网方式 ZigBee主要采用了3种组网方式:星型网、网状网和丛集树状网.如图2所示在星型网中,一个功能强大的主器件位于网络的中心,作为网络协调者,其它的主器件或从器件分布在其覆盖范围内.由于网络协调者定义了整个网络的时分复用和多址接人方式,因此星型网的控制和同步都比较简单,通常用在设备薯莨比较少的场合.如图3所示,网状网是由主器件连接在一起形成的,又可分成为点对点和簇树2种结构.星型网和网状网相结合则形成了丛集树状网,如图4所示.各个子网内部都以星型网连接.其主器件又以对等的方式连接在一起.信息流首先传到同一个子网内的主节点.通过网关节点达到更高层的子网,随后继续上传,直至到达中心采集设备.中心采集设备与普通的WPAN设备相比具有更强的处理能力.丛集树状网可以用于覆盖范围较大的区域,在上述网络拓扑结构中,网络的形成和维护通过设备间的通信自动实现,不需要人32干预网络的建立、扩展或者减小.ZigBee网络中的所有设备都被动态分配到IEEE地址.图中,个人区域网络协调者(PAN Coordinator)表示网络主节点Mesh Network,全功能设备有32KB存储器,而简化(精简)功能设备只有4—8KB存储器. 5 结束语 低功耗、低成本的ZigBee无线网络标准将在家庭和楼宇自动化、节能甚至国土安全领域开拓丰富的新市场.但该协议不是能以一种规格适应 所有应用的“万能药”.在其最基础层,ZigBee确保了与其它符合标准的产品的互操作性.而与ZigBee的潜在应用非常之广一样,对其进行开发必须权衡的问题也非常之多

    时间:2021-03-21 关键词: 嵌入式 无线网络平台 ZigBee技术

  • MMA7361L的高精度角度检测平台设计

    MMA7361L的高精度角度检测平台设计

    倾角是许多控制系统中需要测量的一个重要参数。针对倾角测量,设计了一种基于ARM微控制器和加速度传感器的角度测量平台。该平台采用基于ARM Cortex-M3内核的STM32F103VE为数据处理的核心,利用高精度加速度传感器MMA7361L为测角传感器,同时配置液晶屏和小型键盘实现了人机交互。该平台具有测量精度高、灵敏度高、价格低的特点,应用前景广阔。 引言 在很多控制系统中,角度值是一个十分重要的物理参数。例如起重机和升降机上都要有角度测控机构来控制起降高度;飞行器自动驾驶系统中都有大量的角度传感器,实时检测飞机偏转角度,以便对飞行姿态进行调整。目前已有利用加速度传感器实现高精度角度测量的设计研究,但主要侧重于单轴的测量,同时进行三轴测量的研究设计鲜有报道。本文将重点讨论采用三轴加速度传感器MMA7361L实现高精度角度检测的软硬件方法。 1 角度检测仪硬件平台设计 采用了高精度三轴加速度传感器MMA7361L作为角度检测模块,数据处理采用最新的带A/D转换功能的STM32F103VE芯片,采用I2C接口的AT24C02A芯片进行周期性数据存储,采用1602液晶模块对角度值进行实时显示,为了扩展系统功能,采用4×4键盘对系统模式进行设置。同时采用声光报警电路,当角度超过设定上限时,进行声光报警提示。角度检测仪硬件平台结构框图如图1所示。 1.1 STM32F103VE控制器 本系统采用新一代低功耗高速工业级芯片STM32F103VE作为控制器核心,芯片采用更优化的32位ARM Cortex-M3内核,时钟频率达到72 MHz。该芯片系统资源和外围接口丰富,内部集成专用时钟、复位以及电源管理模块,支持多种工作模式,内含2个12位高速ADC、80个快速I/O口、7个定时器和多达9个通信接口。 1.2 MMA7361L角度检测模块设计 MMA7361L是一种超低功耗、小型电容式的微机械加速度传感器。该传感器可以采用1.5g或6g灵敏度重力选择模式,具有信号调理、一阶低通滤波、温度补偿、自检、带有线性自由落体检测和零重力检测等功能。工作电压为2.2~3.6V,工作电流为400μA,设置为睡眠模式时工作电路仅为3μA。从灵敏度、功耗角度考虑,采用MMA7361L作为角度检测模块的核心芯片。MMA7361L角度检测模块电路如图2所示。 2 角度检测仪软件平台设计 2.1 软件平台整体结构 几乎所有的嵌入式产品中都需要嵌入式软件来提供灵活多样而且可为应用定制的功能。为了便于今后产品功能扩展,采用精简的μC/ OS-II操作系统作为软件平台的支撑。角度检测仪软件体系结构如图3所示。其中最底层为设备驱动程序层,主要是进行处理器初始化和驱动各外设电路模块;第2层为嵌入式μC/OS-II操作系统,主要是管理系统的软硬件资源,以及上层应用和操作底层驱动接口;第3层为应用程序,主要是系统调用和实现OS级别功能。 2.2 MMA7361L角度测试驱动实现 MMA7361L是一款高精度的模拟三轴加速度传感器,其精度模式可以选择1.5g或6g两种。从工程需要的角度选择1.5g模式,其精度为800 mV/g,将g-Select引脚置为低电平。在正常工作状态,Sleep引脚需要置为高电平。同时启动Self Test模式,芯片在工作之前先完成内部自检。 MMA7361L三轴加速度传感器实现角度测试,其核心算法是建立输出电压和角度之间的函数映射关系。零倾斜角度的选择对于测量仪的精度影响比较大,本文先以MMA7361L传感器X轴方向的倾角计算为例加以说明,Y轴、Z轴的角度测量方法类似。在本文中取传感方向x轴与重力加速度g垂直时的状态为零倾斜角度,当倾角为θ时,x轴方向倾角测量图示如图4所示。 传感方向x轴方向的重力加速度分量是g1(θ)=gsinθ,当θ→0时有: 可以看到,当倾斜角θ为一个小角度时,其角度的变化率(即导数)越大并趋向于g,这样有助于提高小角度测量的分辨率,因此该零倾斜角度的选择方式有助于小角度的精确测量。由于传感器的加速度分量与其电压成正比,且精度是800mV/g,因此倾角 在算法分析的基础上,该加速度传感器的角度测试的驱动程序得以实现。其核心部分可以用如下代码实现: Y轴、Z轴的角度也可以用类似的方法得到。另外为了便于系统管理,软件部分采用实时精简的嵌入式操作系统μC/OS-II,可以将角度测量、键盘、显示作为若干个任务进行管理。 结语 本文论述了一种基于MMA7361L的高精度智能角度测量仪的设计与实现方法,构建了角度测量仪的软硬件平台,同时对MMA7361L角度检测算法进行了详细的介绍,并给出了实现代码。实验测试证明,该测量仪具有高精度和良好的可靠性,且成本低,应用前景非常广阔。

    时间:2021-03-21 关键词: 高精度 MMA7361L 角度检测平台

  • ARM嵌入式汽车节能控制系统设计

    ARM嵌入式汽车节能控制系统设计

    系统工作原理 本系统主要由三部分组成,即检测部分,控制部分和执行机构。检测部分包括踏板位置传感器、曲轴位置传感器、压缩机活塞位置传感器、汽车运行速度传感器、储气罐压力传感器等信号的检测。执行机构主要包括双向可控电磁阀和电磁离合器。控制部分主要由ARM微处理器组成的控制系统及一些外围电路构成。本文主要介绍该系统的控制部分。该装置的作用就是将刹车时本应由摩擦来消耗掉的汽车动能,改为由气体的势能来消耗,在启动时,利用刹车时储气罐内储存的高压气体势能来驱动汽车行走,当车速到达一定值如20km/h时,再切换到由汽车发动机驱动的模式。 系统硬件设计 由于该节能装置需检测的模拟量较多,如储气罐内的压力、制动踏板的位置、车速、活塞运行位置和油门踏板位置等数据,而且有些是需实时监控的,如储气罐内的压力等,需要使用多任务执行方可实现,而普通单片机无法满足这一要求。因此需根据实际情况,选用合适的处理器芯片,加上各种数据和程序存储芯片构成最小系统。同时,增加数据采集、显示、通信接口、控制执行单元和电源管理模块等,来组成一个完整的控制系统。由于目前汽车应用CAN现场总线比较广泛,因此,为了与汽车的控制系统连接的方便,还增加了CAN总线接口,由此构成了整个硬件系统。系统的总体框图如图1所示。 S3C44BOX 由于设计要求系统能随车采集信号,并进行实时监控,对主控模块的要求较高,因此主控制模块应当是以高性能的微处理器为核心而组成的一个最小系统。根据具体应用的要求,实际应用的反映情况,选用了Samsung公司的ARM芯片S3C44BOX,其主要性能如下: Samsung公司推出的16/32位RISC处理器S3C44BOX为一般类型的应用提供了高性价比和高性能的微控制器解决方案。为了降低成本,S3C44BOX提供了丰富的内置部件,包括:8KB的Cache,内部SRAM, LCD控制器,带自动握手的2通道DART, 4通道DMA,系统管理器(片选逻辑,FP/EDO/SDRAM控制器),带有PWM功能的5通道定时器,I/O端口,RTC, 8通道10位ADC,IIC-BUS接口,IIS-BUS接口,同步SIO接口和PLL倍频器。 S3C44BOX的突出特性是它的CPU核,是由ARM公司设计的16/32位ARM7TDMI RISC处理器(66MHz)。ARM7TDMI体系结构的特点是它集成了Thumb代码压缩器,ICE (In Circuit Emulator)断点调试支持,和一个32位的硬件乘法器。 数据采集单元 数据采集单元的作用就是对需要的模拟信号进行采集、处理后送到处理器进行处理。在该单元中,核心是对模拟信号的调理。由于系统要采集到汽车的储气罐内的压力数据、制动踏板的位置数据、车速、离合器切合位置和油门踏板位置等数据,因此需要多路数据采集通道。各通道的数据必须完成信号的调理后,才能送到处理器进行处理。该采集单元的信号采集通道框图如图2所示。 控制执行单元 控制执行单元的功能主要是接收处理器发出的数字量,经过隔离及驱动后,送到执行机构如电磁阀、继电器、离合器等来使行相应的动作。功能框图如图3所示。 这一级相对来说较为简单,但为了防止外界对系统的干扰,须采用隔离。隔离器件采用普通的光电祸器即可,系统中采用TLP521-1。 数据显示模块 在系统的设计中,为了对采集的数据进行监控,使得调试更为方便、直观,因此增加了数据显示模块。S3C44BOX集成了LCD (Liquid Cristal Display)控制器,该控制器支持在LCD上的单色、4级、16级灰度、256色的显示,具有很强的通用性,S3C44BOX的LCD控制器的作用是将缓存中的数据传送到外部的LCD驱动器,并产生必须的LCD控制信号。LCD控制器可以编程支持不同水平和垂直点数 (640×480,320×240,160×160等)、不同数据线宽度、不同接口时序和刷新速率的LCD,支持4位双扫描、4位单扫描、8位单扫描模式,并支持水平/垂直滚动,以用来支持更大的屏幕显示(如1280× 1280)。 由于不同尺寸的LCD具有不同数量的垂直和水平象素、数据接口、数据宽度、接口时间和刷新率,S3C44BOX中的LCD控制器可以对相应的寄存器值进行编程,以适应不同的LCD显示板。LCD控制器逻辑框图如下图4所示。 电源模块 在本系统设计中,由外部供给系统单一的9V电源,通过三端稳压AS1117-5.0, AS1117-3.3和AS1117-2.5,分别得到5.0V, 3.3V以及2.5V。AS1117系列稳压器最大能提供800mA电流,由于本系统功耗较低,最大需求电流不超过300mA,因此用AS1117足以满足系统的供电需求。另外的两套±15V电源由DC/DC变换器供给。考虑到系统中有数字电路和模拟电路,由于数字电路的电流变化较快,容易产生脉冲干扰,从而影响模拟信号的采样精度,因此应把数字地和模拟地分开。 调试接口 S3C44BOX内嵌JTAG测试电路,使得调试起来非常方便。JTAG是一种国际标准测试协议,主要用于芯片内部测试及 对系统进行仿真、调试,JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP (Test Access Port,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。JTAG接口还常用于实现ISP(In System Programmable)功能,如对Flash器件进行编程等。 目前JTAG接口的连接有两种标准,即14针接口和20针接口,在本设计中,采用的是14针的接口。该接口主要通过下载电路与计算机的并行口相连,在集成开发环境之下,使用相应的JTAG下载代理软件就可以用来进行系统调试,而不需专门的仿真器,这样可以降低开发的成本。 通信单元 在系统设计中,考虑到数据传送、下载以及调试的方便,增加了串行通信RS-232C接口。另外,考虑到系统升级的方便,以及为了与现在流行的汽车总线接口的方便,增加了CAN现场总线的接口。 本系统中选用MAX232。MAX232可以实现TTL电平和RS-232电平之间的转换。由于在实际应用中,器件对电源噪声很敏感,因此MAX232的VCC引脚必须要对地加0.lmF去耦电容,另外,为提高抗干扰能力,添加了四个l0mF电容,在连接在内部电源引脚输出端。MAX232芯片第7, 8引脚接入分别到串行口的第3, 2引脚;9, 10引脚接处理器的RXD, TXD引脚,实现与处理器的连接。 需要注意的是,MAX232是5V器件,而处理器芯片是用的是3V供电,因此需要考虑电平转换,否则将无法正常收发数据。由于Maxim公司已经注意到这点并推出了专用3V供电的器件MAX3232C,利用它就可以无需考率3V到5V的电平转换问题。MAX3232C与处理器的接口电路如图5所示。 系统软件设计 在本系统中,主程序是整个程序的核心,担负着系统的运行、控制的主要任务,需要对其控制流程进行仔细考虑,以完成所需的控制要求。 在程序开始时,首先对系统进行初步的初始化。之后,采集各种数据并判断数据是否正常,如果正常,则显示数据并等待中断,根据中断转向相应的中断服务子程序。如果数据不正常,则通过报警来提示用户检查数据,直到数据正常才执行其他程序。如果一切正常,且没有刹车和启动等控制,则可以与其他设备进行通信等操作。具体的流程见图6所示。 系统的抗干扰设计 要达到良好的系统控制效果需要在系统设计中非常注意它的抗干扰性和可靠性。本系统由于采用高速ARM作为核心处理器,它的高频信号不仅容易受到干扰,而且也会成为系统的干扰源,因此有必要对整个系统,特别是ARM部分的抗干扰及保护做更多的处理。 硬件部分,控制系统的电源及功率驱动部分抗干扰措施主要就是从防和抗两方面入手。其总原则是:抑制或消除干扰源;切断干扰对系统的耦合通道;降低系统对干扰信号的敏感性。抗干扰设计的具体措施包括:隔离、接地、屏蔽、滤波等常用方法。 软件部分,本系统的软件主要采用了以下几种软件抗干扰设计: 软件陷阱法 测试系统在遇到外界干扰时,往往会导致运行程序进入程序存储器的空白区(即无指令区),这种现象叫做程序“跑飞”。于是在各子程序之间、各功能模块之间和所有空白处,都写上连续3个空操作指令(nop),后接一无条件转移指令,一旦程序跑飞到这些区域,就会自动返回执行正常程序。 程序的冗余设计 在程序存储器的空白区域,写入一些重要的数据表和程序作为备份,以便系统程序被破坏时仍有备份参数和程序维持系统正常工作。由于 TMS320LF2407A的数据存储以数据页为基准,如果对不同数据页的数据进行操作而不指定相应的数据页,会导致程序跑飞。因此需要对程序未使用满的数据页进行填充,防止数据页混乱导致的系统误操作。

    时间:2021-03-21 关键词: 嵌入式 汽车节能控制系统 ARM

  • ARM-CortexM0/M0+单片机的指针变量替换方法

    ARM-CortexM0/M0+单片机的指针变量替换方法

    引言 CortexM0/M0+是RISC类型的低端ARM内核,其指令集与高端ARM兼容,在性能、功耗和价格方面远优于传统的以8051、68S08/12等为代表的8/16位CISC(复杂指令流)CPU。目前,各半导体厂商纷纷以之替代原有的8/16位MCU内核,32位ARM MCU全面替代8/16位MCU已是大势所趋。 CortexM0+将CortexM0的3级流水线简化为2级,并进一步降低功耗、提高性能,这些优点使得CortexM0+成为目前8/16位处理器较好的替代者。不过 替代8/16位MCU的低端ARM往往内存资源非常有限,目前典型的CortexM0/M0+ MCU往往仅有2 KB、4 KB或8 KB,最多16 KB片内RAM。Flash一般也不大于64KB。对这类MCU编程,使用短指针变量就够了。而目前ARM处理器的集成开发环境(IDE)中的C编译器,延续CortexM3/M4的使用传统,仍使用32位长指针变量。这无形中多占用了1倍的RAM资源。这里以飞思卡尔ARM CortexM0+处理器中的Kinetis 系列MCU为例,说明如何使用16位短指针替代32位长指针,以便在将原有的以8/16位MCU为核心的产品升级到采用32位ARM内核时,不增加系统开销。特别是若使用了实时操作系统,系统的内存会更加紧张。在专门面向CortexM0/M0+的集成开发环境(IDE)推出前,可使用本文提供的替换方法,以降低系统的RAM开销,提升系统的性能。 1 指针替换原理 32位ARM内核的内部寄存器都是32位的,其寻址空间可以达到4 GB,通常也应使用32位的地址指针。但在数据空间、程序空间和I/O空间都不大于64 KB的情况下,可以采用1个32位基地址加1个16位偏移量的方法,合成ARM需要的长指针。 以CortexM0+为内核的MCU,其SRAM、FLASH很少超过64 KB,一般使用16位的偏移量指针就能满足需要。 以Freescale公司的KL25Z128 MCU为例,有16 KB SRAM和128 KB FLASH存储空间。其SRAM的地址范围是0x1FFF_F000~0x2000_2FFF[1],使用16位的偏移量指针便可以满足寻址范围的要求。 图1说明了长指针替换方法的基本原理,通过使用一个32位的RAM基地址,完成原始32位绝对地址与相对基地址的16位相对偏移地址的相互转化。 其转化关系如下所示: Address_32bits=Address_16bits+Address_base(1) Address_16bits=Address_32bits-Address_base(2) 对于KL25Z128 ,Address_base基地址值可选择为0x1FFF_F000。通过以上方法的转化,32位的地址空间0x1FFF_F000~0x2000_2FFF(16 KB)可以转化为16位的地址空间0x0000~0x3FFF(16 KB)。 2 指针替换方案 2.1 常量形式实现方案 以下使用Freescale公司推荐的IDE CodeWarrior v10.5予以说明。 typedef unsigned short pointer_16; #define address_base 0x1ffff000Lu /*定义基地址*/ #define addr_16(pt_addr_32)((unsigned short)((unsignedint)pt_addr_32 - address_base)) /*32位地址指针转换为16位地址“指针”*/ #define addr_32(pt_addr_16)((unsigned int)((unsigned int)pt_addr_16 + address_base)) /*16位地址“指针”转换为32位地址“指针”*/ 程序中利用宏定义了一个32位常数的基地址,显然也可以使用一个全局变量或寄存器变量来存储基地址。在将长指针变量pt_addr_32转化为16位地址“指针”时,需先将指针变量pt_addr_32做强制类型转化,变为32位无符号数后再进行基地址扣除的计算。该段代码还声明了一个16位无符号数的数据类型pointer_16,用来定义或存储16位地址偏移量,例如使用如下语句来定义一个16位的指针变量: pointer_16 pt16_data = addr_16(&data); pt16_data的值便是指向data的16位“指针”(转化而成的16位地址偏移量值),编译器编译出的汇编代码如下所示: 69pt16_data = addr_16(&data); 00000a06:ldr r3,[pc,#72]//R3指向data 00000a08:uxth r2,r3//16位 R3送32位 R2 00000a0a:adds r3,r7,#4//R3指向pt16_data 00000a0c:movs r1,#128//R1 = 0x80 00000a0e:lsls r1,r1,#5//生成基地址补码 00000a10:adds r2,r2,r1//R2=32位指针-基地址 00000a12:strh r2,[r3,#0]//存储R2低16位 00000a50:1FFF_F020//存储data地址 需要将16位地址转化为长指针时,以下面的整型数据赋值操作为例: int temp = *(int*) (addr_32(pt16_data)); 数据data的值赋值给了变量temp,其中int数据类型可以替换成任意其他的数据类型(例如unsigned int、unsigned short、short、unsigned char、char等)。 2.2 高组寄存器优化方案 CortexM系列内核是专门为ARM MCU设计的,仅支持无条件执行的Thumb指令。CortexM0/M0+使用ARMv6指令集,而CortexM3/M4使用ARMv7指令集。ARMv6 对ARMv7做了高度简化,仅保留了其中56条指令。指令中除个别32位指令外,都是16位指令。CortexM0/M0+的内部寄存器结构与高端ARM兼容,但低端MCU应用往往不需要那么多寄存器,CortexM0/M0+仅提供了R0~R12共13个通用寄存器。这些通用寄存器分为两部分:低组寄存器(Low registers,R0~R7),高组寄存器(High registers,R8~R12)[2]。CortexM0/M0+牺牲了大量面向高组寄存器的指令,尽量减少32位指令的使用。实际上CortexM0/M0+的指令集中仅有以下3条指令支持高组寄存器R8~R12: MOV ,;寄存器间数据传送 ADD, ;基地址+偏移量 CMP, ;地址的比较 这里Rd和Rm之一可以是高组寄存器。可以看出,对于高组寄存器,ARMv6仅保留了高低组寄存器间数据传递、不影响标志位的加法运算和单独的地址比较这3种操作,其用处显然是为了支持将高组寄存器用于地址运算。 目前基于gcc的主流ARMC编译器对CortexM0/M0+的高组寄存器采取尽量不予使用的策略,在定义指针变量时,仅使用长指针。而分析ARMv6指令集的设计初衷,显然应该用高组寄存器和相关指令。这对于旨在替代8/16位MCU的低成本ARM器件非常必要。 实际上,应用程序中可通过MOV指令将R8~R11初始化成“寄存器常数”,而以后不再改变它们的值。例如可以令: R8,= 0用于低寄存器的快速清零 R9,=RAM基地址用于拼接长指针 R10,= I/O模块基地址 R11,=库函数基地址 当FLASH存储器空间不大于64 KB时,函数指针无需设定基地址,可以直接使用低16位作为16位指针。对于超过64 KB的FLASH,可以使用库函数基地址,采用类似分页的方法实现16位指针替换。 最后一个高组寄存器R12可在响应中断时和R0~R3,PC、SP一同自动入栈,是用户可以使用的寄存器变量。 2.1节中提出的宏定义方案形式上简单清楚,但展开后需要多条指令才能完成。将Address_base作为寄存器变量,存放在R8~R12中的某个高组寄存器中,而不是使用宏定义常量或全局变量。由于C语言不能直接对通用寄存器进行操作,需通过将汇编嵌入到C语言中实现长指针的替换。在程序初始化时,将R8~R12中的一个寄存器初始化为Address_base的值,例如下面给出的语句: asm("LDR r1, =0x1ffff000"); //R1=基地址 asm("MOV R9, R1"); //R9=R1,即基地址 R9寄存器初始化后无需再修改,是一个“寄存器常数”。对于已经存储在R0中的长指针,则使用如下汇编代码,很容易将其转化为16位地址: asm("MOV R1, R9");//R1=基地址 asm("SUB R0, R0, R1"); //R0=R0-R1,R0低16位即16位 //短指针值 代码首先将R9寄存器存储的基地址转移到R1寄存器,随后利用单条指令完成从R0寄存器所存长指针值减去R1中存储的基地址,并将所得结果保存在R0中。执行完成后,R0低16位便是转化后的16位地址。16位地址转化为长指针是类似的转化形式(SUB指令换为ADD指令),在此不再赘述。这种方法充分利用了内核提供的高组寄存器,并且简化了指针转化的算法,减少了所需指令的数目,提高了运行效率,缩短了转换时间,降低MCU因指针替换而产生的时间损失。转换所需指令数目也压缩到两条,减少转换过程所带来的额外指令代码的存储空间开销。 3 指针替换结果 μC/OS(含μC/OSII、μC/OSIII)是适用于低成本MCU的多任务实时内核。以μC/OS为例,当最大任务数为10时,整个内核需使用12个全局指针型变量,而非指针型变量仅需占用8字节RAM空间。若使用默认的长指针模式,共需12×4+8=56字节;若改用短指针,则需使用12×2+8=32字节。任务数目、任务间通信机制增多时,指针变量的使用将更频繁,本文介绍的方法所节约的RAM空间也更加显著。在CortexM0/M0+处理器替代8/16位MCU的应用中,非常有必要使用短指针。 最新版本的μC/OSIII针对带有计算前导零硬件指令(CLZ)的CortexM3/M4处理器进行了重大改进,提高了其优先级任务搜索的效率。但CortexM0/M0+的ARMv6指令集简化掉了CLZ指令,故不适宜使用μC/OSIII。这里以运行μC/OSII v2.92(最多256个任务)为例,说明指针替换效果。实际上对于内存紧张的MCU,μC/OSII v2.82及以下的版本(最多64个任务)就足够用了。 μC/OSII每个任务都需要使用任务控制块TCB(Task Control Block)的数据结构,来维护任务相关的信息[3]。在μC/OSII v2.92中,每个任务的TCB数据结构包含9个指针变量,采用本文描述的16位指针替换方法后,每个任务控制块均可以节省18字节的RAM空间。在μC/OSII中还存在很多数据结构,均包含着大量的指针变量。这些数据结构采用本文描述的方法所节约的RAM空间如表1所列。 表1 μC/OSII数据结构内存占用情况对比 注:其中X为OS_LOWEST_PRIO,由用户进行配置,典型值为63。表中内存占用大小是笔者根据ucos_ii.h文件进行统计的,实际占用内存可能会由于用户配置不同而略有差异。 可以看出,以16位短指针替代ARM编译器默认的32位长

    时间:2021-03-21 关键词: 单片机 指针变量 替换方法 ARM-CortexM0 M0

  • 基于ARM9的媒体播放器设计

    基于ARM9的媒体播放器设计

    1 引言 计算机多媒体技术和网络技术飞速发展使得基于流媒体的多媒体应用也被运用在多种领域,特别是网络可视电话、远程监控、视频点播领域。伴随着计算机多媒体压缩技术的成熟和网络传输技术的发展,开发实时可靠、多功能、数字化、操作简单的基于计算机网络通讯技术和多媒体应用的网络化流媒体播放器已成为计算机、通信、消费电子产品领域(3C 产业-Computer、Communication、Consumer Electronics)技术发展的主要方向之一。 2 系统硬件设计 本文使用TQ2440 开发板作为硬件平台。 S3C2440AL 是控制核心,负责控制所有辅助设备。存储器采用SDRAM 和Flash 两种类型,能满足系统运行和调试的需要。基本端口包括以太网接口、USB 接口、两个RS232 的串口。A/D 和D/A 模块主要用于现场数据的采集与控制信号的输出。DC/DC 模块主要负责整个系统的供电。 S3C 2440AL 是三星公司设计开发的基于精简指令集的ARM9 核的CPU, 工作频率可以达到400MHz,且具有丰富的内部设备,其中主要包括:存储器管理单元MMU、16kB 的指令缓冲器和16kB 数据缓冲器、存储器控制器(SDRAM 控制器)、NANDFlash 和NOR Flash 控制器、4 通道的外部DMA 请求控制、3 个串行口、SD 存储卡读取接口、USB 主机、USB 设备、5 个脉宽调制定时器。目前,S3C2440AL 已广泛地应用于PDA、智能手机、数字多媒体等方面。 3 系统的软件设计 系统的软件组成包括:嵌入式Linux 操作系统、设备驱动程序、图形界面和浏览器程序,这些只是IPTV 机顶盒软件组成的关键部分。 3.1 嵌入式操作系统的选择及移植 本系统采用Linux 作为操作系统,并选用Linux2.6内核在嵌入式微处理器S3C2410 上移植,具体移植方法如下: (1)准备Linux2.6 内核移植所必需的文件(内核压缩包linux-2.6.tar.bz2 及交叉编译器arm -linuxgcc-3.4.1.tar.bz2),这些文件可到Linux 官方网站免费下载。 (2)利用Linux 命令(mkdir,tar,mv 及export)安装交叉编译器arm-linux-gcc-3.4.1. (3)修改Makefile 文件及相关硬件文件。由于内核的编译是根据Makefile 文件的指示进行的,Makefile 文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。所以,开发人员要首先修改Linux2.6 根目录下的Makfile 文件,修改的主要内容是目标代码的类型和为编译内核指定一个编译器。 (4)运用Make 命令编译内核生成内核镜像文件zImage 文件,通过相应的固化软件把这个文件固化在系统相应的存储器中,完成Linux2.6 内核在ARM 微处理器上的移植。 3.2 媒体播放器的总体架构 系统实现原理:在嵌入式微处理器S3C2440AL的控制下,TQ2440 开发板通过网络接口接收来自内容服务提供商的音视频广播信息,之后运行图形界面程序获取音视频信息,并在此基础上生成音视频节目清单,将信号传至显示屏进行显示,将节目呈现给用户。用户利用显示系统提供的图形界面和浏览器使用键盘、鼠标进行控制,观看节目,其总体架构如图1 所示。 3.2.1 媒体播放器与网络接口的实现 媒体播放器播放网络上的多媒体文件时最大的特点是边下载边播放的“流式”特性。在IPTV 应用中,因为多媒体数据的流式特性需要媒体播放器与媒体服务器之间进行信息交互,所以它们之间须共同遵循一个交互协议标准。本系统播放器采用RTSP 协议与服务器之间建立及管理RTSP 会话,通过网络传输协议接收来自网络上的媒体数据。媒体播放器数据接收流程如图2 所示。 3.2.2 TS 流解析实现 在MPEG-2 系统中根据传输媒体的质量不同定义了两种复合信息流:传送流(TS:Transport Stream)和节目流(PS:Program Stream)。TS 流与PS 流的区别在于TS 流的包结构是固定长度的,而PS 流的包结构是可变长度的。PS 包TS 包在结构上的这种差异,致使TS 流比PS 流对传输误码的抵抗能力更强,因此在本设计中的网络多媒体数据采用了TS 的封装格式。TS 包的结构如图3 所示,由包头和包数据两部分组成,包头长度占4B,自适应区和包数据共占184B,整个TS 包长度相当于4 个ATM 包长。 因为在TS 流里可以填入很多东西,所以制定TS流标准的机构就规定了PSI (Program SpecificInformation)表,其作用是从一个携带多个节目的某一个TS 流中正确找到特定的节目。 PSI 表包括以下四个表: (1)PAT 表(Program Association Table)即节目关联表,它的主要作用是指出该传输流ID,以及该路传输流中所对应的几路节目流的MAP 表和网络信息表的PID. (2)PMT 表(Program Map Table)即节目映射表,该表的PID 由PAT 提供,通过该表可以得到一路节目中包含的信息。 (3)CAT 表(Conditional Access Table)即条件访问表,PID 是0x01.CAT 携带的是服务器的私有信息(CA 系统就需要使用该表格实现节目的解密)。 (4)NIT 表(Network Information Table) 即网络信息表,该表包括数字电视网中所有的传输流的物理传输网信息,包含节目的频道调谐参数、频率、符号率等,这些信息使得接收机可以按照用户的选择以很少的延时或无延时地改变频道、调谐参数,正确地解码出TS。 所以TS 流解析流程如图4所示:先接收一个负载里为PAT 的数据包,在整个数据包里找到一个PMT 包的ID.然后再接收一个含有PMT 的数据包,在这个数据包里找到有关填入数据类型的ID.之后就在接收到的TS 包里找到含有这个ID 的负载内容就是填入的信息。根据填入的数据类型的ID 的不同,在TS 流复合多种信息,解有这些信息的传输包即可解出音视频的PES 包,最终解出音频流和视频流。 由于时间和资源有限,本设计中移植成熟的QT/Embedded 库到机顶盒的嵌入式系统,作为其图形界面类库。Qt/Embedded 采用frame buffer (帧缓冲)作为底层图形接口。同时,将外部输入设备抽象为keyboard 和mouse 输入事件。Qt/Embedded 的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的XLIB/Server 系统。界面程序流程图如图5 所示。 4 结语 本系统利用TQ2440 硬件平台的优势,将Linux2.6.14 内核移植到开发板中,设计实现了一款基于嵌入式Linux 的机顶盒流媒体播放器,完成了其与网络接口的实现,通过TS 流的解析实现,提供了对主流的MPEG-2、MPEG-4、H.264 等格式文件的支持。该系统具有良好的可移植性和可扩展性,能够满足市场需求的不断变化。

    时间:2021-03-21 关键词: 媒体播放器 ARM9 TQ2440

  • 使用ARM9的心电除颤模拟发生系统设计

    使用ARM9的心电除颤模拟发生系统设计

    随着社会的发展,人们的医疗保健意识越来越强,所以医生的培训也就成为非常重要的环节。心电除颤技术作为医生培训的一个主要方面,若操作规范,动作熟练,往往在紧急关头可以救人于危难之间,在培训的时候,如果能够真实地模拟急救除颤的场景,将会起到良好的学习效果。因此,在急救、有创性临床操作训练上,医学模拟教学日益显示出其成本低、重复性高、教学效率高以及符合医学伦理要求等优势。 除颤模拟发生系统可以任意选择34种状态(包括成人和儿童两大类)时也可以连接医用监护仪,使除颤模拟更加逼真。学员可以进行不同能量的除颤练习,同时这也便于老师检验学员的学习效果。 该系统是根据心电图的有关原理以及监护仪的信号合成原理研制的,严格按照医学的相关规定,产生的波形达到医学教学的目的。在相关病态心电图的关键点处达到比较逼真的效果,当系统接收到高压除颤信号以后,根据系统的预设置,进行相应的波形变换。系统可以用于医疗培训机构的培训工具,使学员快速掌握心电除颤的方法。该系统与急救模拟人、监护仪配合使用,具有广阔的市场前景。 本文介绍的心电除颤模拟发生系统是以ARM9为控制核心,充分利用ARM9丰富的I/O资源和强大的处理功能。它采用嵌入式的开发方案,并综合考虑系统的通用性和使用性,系统输出信号的幅度为0~5 mV可以连续输出室性、室上性早搏型号等,还可以产生周期为1 s,脉宽为100 ms,幅度为1 mV的方波。便于对监护仪进行校准,信号均采用三导联的同步信号输出。 1 系统结构和设计方案 系统主要包括ARM9中央处理单元、高压除颤信号采集模块、D/A转换模块,与监护仪信号匹配模块以及心电波形仿真和数据的提取,应用程序的设计等几个部分。本系统采用ARM9嵌入式开发平台,以下是ARM9处理器的主要结构及其特点。 (1)32 b定点RISC处理器,改进型ARM/Thumb代码交织,增强性乘法器设计,支持实时(real-TIme)调试; (2)片内指令和数据SRAM,而且指令和数据的存储器容量可调; (3)片内指令和数据高速缓冲器(Cache)容量从4 KB~l MB: (4)设置保护单元(Protoction Unit),非常适合嵌入式应用中对存储器进行分段和保护; (5)采用AMBA AHB总线接口,为外设提供统一的地址和数据总线; (6)支持外部协处理器,指令和数据总线有简单的握手信令支持; (7)支持标准基本逻辑单元扫描测试方法; (8)支持BIST(Built-in-self-test); (9)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。 心电除颤模拟发生系统总体设计方案,如图1所示。 2 系统硬件部分设计 该部分主要分为ARM9硬件平台、D/A转换、滤波电路、高压除颤信号的采集,其系统硬件连接图如图2所示。系统在ARM9的控制下,由D/A转换把波形数据转换为模拟量进行输出。当接收到高压采集信号后,处理器就会转换输出另一种心电波形图。 2.1 D/A转换和电阻衰减网络 该部分是系统的核心,为了保证系统的稳定和ECG信号的要求,D/A转换芯片采用8位并行的DAC0832芯片,由12 V单电源供电,每个DAC有各自独立的基准输入,对ARM9提供的数据进行变换,输出部分采用4阶巴特沃斯滤波,输出的波形经衰减后得到所要求的心电信号,经有源滤波后输出波形的峰值可达到10 V,通过电阻分压网络得到0~5 mV的电压输出范围。考虑到要采用三路D/A,如果每一路独占8个I/O端口,再加上若干控制端口,处理器提供的I/O端口数远不能满足要求,所以计划采用共用数据端口,外接I/O口片选的方式来实现,这样可以节约16个I/O口,也满足了信号输出同步性的要求。 2.2 高压信号采集电路设计 该部分采集除颤器上的高压放电信号,由于高压除颤信号具有的放电电流具有双向性,且放电时间只有4 ms,瞬态电压可达到3 000 V,所以在安全性能上要充分考虑。该部分电路图如图3所示。 电路中采用大功率电阻和瞬态抑制二极管对高压放电信号进行预处理,将高压信号降低到比较小的范围,通过整流电路把电流变为单向流动,然后通过光耦隔离输入到ARM9的I/O口中,起到保护处理器的作用。 3 软件设计 系统的硬件为基本功能和扩展功能的实现奠定了牢固的基础,软件系统的设计就是要充分利用硬件平台的资源,实现软件操作的有序运行。 软件开发工作涉及到以下两个方面:接口驱动程序的修改和完善;应用层软件的开发。应用层的程序全部用C++开发完成的。 图4是整个系统的软件模块结构图。 3.1 D/A驱动程序和高压信号采集驱动部分 设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作,以往在开发应用程序时都有一个main函数作为程序的入口点,而在驱动开发时却没有main函数,模块在调用insmod命令时被加载,此时的入口点是init module函数,通常在该函数中完成没备的注册。同样,模块在调用rmmod函数时被卸载,此时的入口点是cleanup module函数,在该函数中完成设备的卸载。在设备完成注册加载之后,用户的应用程序就可以对该设备进行一定的操作,如read,write等,而驱动程序就是用于实现这些操作,在用户应用程序调用相应入口函数时执行相关的操作,init roodule入口点函数则不需要完成其他如read,write之类功能。 驱动程序主要函数如下: 3.2 系统应用程序设计与实现 该系统的应用程序是基于Qt/Embedded设计的,目前使用的嵌入式GUI系统存在Microwindows,MiniGUI,Qt/Embedded,Qt/Embedded延续了Qt的强大功能,可以运行在多种不同的处理器上部署的嵌入式Linux操作系统。Qt/Embedded提供了信号和插槽的编程机制,该部分采用的Qt是一个创建GUI程序的C++类库,编写Qt应用程序的主要工作是基于已有的Qt类编写用户类。该部分主要分为波形界面的实现和用户按键控制的实现,波形显示采用Qt的函数类库Qpainter,由于波形界面显示两路心电波形,会产生延迟效果,所以引入了多线程机制协调,Qt支持多线程,有独立于平台的线程类,线程安全方式的时间传递和一个全局Qt库互斥量允许不同的线程调用Qt方法。 4 结语 本系统设计采用三星2440嵌入式处理器作为核心搭建了硬件平台,并采用嵌入式Linux操作系统并结合外围的D/A转换部分、与监护仪匹配网络、高压信号采集部分、应用程序控制部分等实现了心电除颤模拟发生系统的设计。该系统可以很好地模拟医学除颤的过程,并可以与医用监护仪相连接,输出符合医学标准的34种常见异常心率波形,由于系统使用嵌入式实时多任务操作系统,因此该设计具有很高的实时性、稳定性和可靠性。

    时间:2021-03-21 关键词: ARM9 心电除颤 模拟发生系统

  • 基于ARM的海底大地电磁信号采集系统改进

    基于ARM的海底大地电磁信号采集系统改进

    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)对于商用飞机的、符合RTCADO-178B标准的认证,表明μC/OS-II具有足够的安全性和稳定性。使用操作系统管理多任务,实现多任务的并发和同步。通过这种方式取代目前的单道大循环程序,可以提高系统的稳定性。 3改进主控单元的硬件组成 ARM架构在推出后获得了成功,各种ARM核心版本以及不同系统方案种类繁多。使用ARM本身已经比原有主控电路功耗降低,在满足实际需要的情况下,还可以在ARM各架构中选择功耗较低的。最终选择了ARM7TDMI结构,部分架构功耗比较见表1。由于原有数据采集系统前台采集部分和后台主控部分使用ISA总线标准进行连接,在ARM7TDMI架构的ARM芯片中,选择了ATMEL公司支持ISA总线扩展的AT91M40800。为完成系统所需任务,根据ATMEL公司发布的EB40开发板电路设计主控单元。片内SRAM8KB,外部Flash2MB,另有外部器件如串行接口和网络接口等。AT91m40800共有37个寄存器,其中包括31个32位通用寄存器(含程序计数器PC在内)、6个32位状态寄存器(但目前只使用其中的12位)。运行时的任意时刻,可见寄存器包括15个通用寄存器(R0~R14),一个或两个状态寄存器及程序计数器PC,其他寄存器多用于备份。经测试证明:所购芯片功耗测量均值小于0.25mW,较之原有主控单元2W的功耗,显著降低。 表1部分ARM架构功耗比较表 CPUDescriptionArea(mm2)Power(mW)Clock(MHz)Mips(MHz) ARM7TDMICore0.53<0.2560~1100.9 ARM9TDMICore1.10.3167~2200.9 ARM9E-SSynthesizableCore-1133~2001.1 ARM1020EMacrocell32+32KBcache100.85200~4001.24 4嵌入式实时操作系统μC/OS-II的移植 尽管μC/OS-II是用标准C语言写的,但当应用到某个具体的CPU上时,还需要用C和汇编语言写一些与处理器相关的代码。改写过程主要结合改进系统所采用的新主CPUAT91m40800的一些具体参数,完成整个操作系统的移植。 μ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提供的信号量机制,可很好地实现任务进程的互斥与并发。 5ARM对外围设备的扩展 主控单元与前台数据采集模块间仍保留原有ISA总线接口标准,只是自行设计ARM主控单元的接口电路如图2所示。符合原有协议标准后,改进电路成功替代了原来的主控。 虽然串行接口速度较慢,但完全可以满足与上位机之间的通信。改进方案首先实现了ARM对于串口的扩展,作为通信手段之一。使用ARM公司自行开发的的ARM调试专用环境ADS1.2测试串行接口的效果:扩展程序所设计的输出结果为AT9140800USART_CUGB,连接采集仪和PC机,使用Windows自带的超级终端可以看到输出结果与设计一致,表明扩展是成功的。 各采集器间及采集器与上位机交互还可通过网络实现。改进方案基于μC/OS-II移植IP协议栈后,通过扩展网络接口卡,可实现网络功能。由于网络接口芯片本身也遵守ISA标准,所以扩展的网络接口还可以用来仿真测试ISA总线。检测总线时序情况就可测试主控模块的功能情况。抓取ISA设备时序,即得出系统接总线是否符号ISA协议标准。写一次后,逻辑分析仪截出几次时序,结果如图3所示。图3时序情况:/CS8019为网络接口芯片片选信号,/WE为写使能信号,/OE为输出使能信号,A1~A5为低5位地址,D0~D7为8位数据位。图3中显示写使能一次后,输出多次,对应地址循环(程序设定的输出效果),数据位则是输出8019的数据,具体内容没有意义。如图3虚线处,在C1时刻,开始进行写操作;C2时刻输出,低5位地址为00000;C3时刻第二次输出,地址为00001;C4时刻第三次输出,地址为00010。依次类推,表明主控单元改进满足了ISA总线的要求,网络接口扩展也正常。基于此,通过与前台数据采集模块直接连接,即可进行海底大地电磁数据的高效采集。 由于采用ARM芯片取代原有主控单元,仅此一项就降低功耗约25%,实现了功耗降低的要求。另外在采用了操作系统后,将使整个采集过程更稳定有序,提高了整个采集过程的准确性和安全性。

    时间:2021-03-21 关键词: 采集系统 大地电磁信号 ARM

  • 基于ARM硬件的手持机间短消息交互的程序设计

    基于ARM硬件的手持机间短消息交互的程序设计

    引言 短消息是现代通信的重要形式之一,短信业务让手机成为电报式的解读工具,使视觉文字成为现代通信中传递信息和沟通的一种重要方式。短信这种文字视觉式的信息传输、解析特点,使其他类似的短消息业务广泛应用于具备通信功能的嵌入式手持设备中。 在研制一种基于STM32F107VCT6芯片的互联形嵌入式手持机时,不同的用户之间需要进行文本信息交互。本文基于现实需求,根据短信的基本定义并参考现代手机中短信的功能设计,研究了一套实现短消息功能的方案,以实现短消息的编辑、存储、发送、接收等功能,并在某嵌入式手持设备中获得了应用。 1短消息总体设计 手持机的短消息通信功能是嵌入式通信系统整体设计方案的一部分,不同的嵌入式手持机设备通过网线采用星型拓扑结构与控制终端电脑相连,利用控制终端软件的调度实现手持机与电脑之间的信令交互和状态控制,最终使控制终端实现对固定格式的短消息信令的转发,进而实现不同手持机间的短消息通信,其星型拓扑结构如图1所示。 手持机是互联互通功能实现的终端,其短消息功能实现的方案是:在STM32F107VCT6主控芯片的调度下,相关外围软、硬件外设相互配合,完成短消息的4个功能模块,即短消息发送(包括文字编辑)、短消息接收、短消息存储、短消息删除。 1.1硬件模块简介 实现短消息通信功能的硬件系统包括计算机和手持机两大部分,计算机为成型的商业电脑,不再赘述。手持机为自主设计,其硬件电路主要由以下几部分组成,即控制芯片STM32F107VCT6、像素为128×64的JLX12864G573PC型液晶显示模块(包括字库IC)、容量为64 Mb的W25Q64的FLASH存储芯片、网络通信模块(包括网络控制芯片VM35RB DP83848VVVBC及网络变压器HR911105A及其附属电容、电阻)、4×5键盘(包括0~9及A、B、C、#键及上、下、确定键),以及电源等其他外设。 STM32F107VCT6是ST公司设计的内核为CortexM3的32位处理器,其最高工作频率达72 MHz,内部含有256 KB的FLASH和64 KB的SRAM,实时性好,且具有很强的中断处理能力,目前广泛应用于嵌入式和手持设备中,是手持机实现短消息功能的核心部件。 JLX12864G573PC型液晶显示模块包括ST7565R驱动芯片、显示屏(128×64像素)和内置标准字库的存储芯片,可以通过STM32F107VCT6的引脚接口实现对字符、图片的提取、显示以及变更等操作。 W25Q64是华邦公司推出的大容量SPI FLASH产品,容量为8 MB,支持标准SPI,最大SPI时钟可达80 MHz[2]。在本设计中是利用STM32F107VCT6自带的SPI来实现对外部FLASH(即W25Q64)存储内容的读写,以实现手持机短消息的存储、删除功能。 网络控制芯片VM35RB DP83848VVVBC是美国国家半导体公司生产的一种支持10/100 Mbps的单路物理层网络芯片,具备良好的鲁棒性和低功耗特点,对各种标准的以太网解决方案有良好的兼容性,在本设计中通过UDP通信方式实现主电脑控制终端的信令交互与短消息收发。 1.2软件模块简介 实现短消息通信功能的软件系统包括计算机中控软件和手持机操作软件两个部分。 计算机中控软件采用VC++编写,利用VS2003开发环境基于无链接的UDP协议,自定义了短消息类,接收并解析收到的短消息信令,根据信令中包含的目标ID和目标ID所指向手持机的工作状态,决定是否转发短消息。代码相对简单,不再赘述。 短消息的程序实现方面主要由以下5部分组成:STM32F107VCT6的驱动程序、显示芯片驱动和显示程序、网络驱动及初始化程序、按键控制程序以及短消息实现程序。在本设计中,手持机操作软件的编写不依赖操作系统,为自主设计的代码,以上5部分代码是在ST公司自带的库文件上编写。手持机开机后,程序初始化,配置好STM32F107VCT6的内部时钟以及SPI、键盘、W25Q64、显示屏、网络接口等外设的引脚,并分别启动。之后利用UDP协议通过网络向电脑控制终端上报开机信息。在开机后,以心跳的方式每3 s向控制终端汇报一次工作状态。最后通过键盘操作进入到短消息界面,进行短消息的操作(接收短消息通过中断的方式进行)。 2短消息实现的程序设计 在本设计中,短消息是由手持机编辑并发出,以特定格式的信令通过控制终端的解析、转发到目的手持机,手持机短消息菜单界面分为收件箱、写信息、发件箱、删除短信4个子菜单,其界面如图2左图所示。 “收件箱”即接收到信息后,将信息解析、存储,以便查看、编辑(包括删除、转发)的功能菜单。其接收功能是“收件箱”的核心,具体实现是利用网络通信中断函数ETH_IRQHandler(),通过指定端口接收并解析来自控制终端转发的短消息信令,并将之存储在W25Q64芯片中。 “删除短信”功能就是对存储在W25Q64中的发送信息、接收信息进行擦除,即将目标存储空间覆盖特定字符,如0x00。在本设计中存储芯片W25Q64最小擦除单位为一个4 KB大小的扇区[2],为了使程序逻辑更加简单明了,对信息的删除,以及对接收信息、发送信息的存储操作都是以4 KB为单位对W25Q64的扇区进行操作的。 “写信息”功能是短消息功能实现代码中最庞大也是最核心的部分,即通过键盘操作,参考T9输入算法编辑文字(包括英、汉、数字、标点等),并提取相应的GB2312码存放到STM32F107VCT6开辟的缓存buffer中。当决定发送时,与输入的信宿号码(相当于手机号码)一起按照固定格式组成一条短消息信令,利用UDP协议通过网络接口发送出去,并将之存储到W25Q64芯片中预先划分的“发件箱”区域中,即“发件箱”所能够查看的内容。 存储(包括删除)、接收短消息的代码相对简单,技术实现难度较低,在此不再赘述。“写信息”中汉字编辑的难度较高,远远超过英文、数字、标点的编辑,因此,以汉字的编辑过程为主要对象进行详细说明。 2.1“写信息”程序设计与状态转换 “写信息”菜单的代码程序参考了当前市场流行的T9输入法的界面和基本操作流程,并根据应用需求做适当改进。不同的输入内容可通过“#”键进行循环切换,数字输入采用直接按键的方式,英文大/小写字母、标点符号以快速连按的方式进行选择并输入,程序设计相对简单。以汉语拼音的方式实现汉字输入的方法需要随时根据键盘和显示屏的显示内容进行状态转换,过程相对复杂。 汉字拥有固定的形、音对应关系,这是汉字编辑的逻辑起点。利用T9拼音输入汉字的思维逻辑是:一个汉字至少对应一个拼音,因此可利用汉字对应的汉语拼音查找同音汉字,然后在同音汉字中查找目标汉字。“写信息”菜单中汉字编辑的实现及状态机转换过程也是与这种认知规律相一致,即是一个采用循环[34]结构,不断查找、判断输入数字串与拼音组合及同拼音汉字这三者之间的映射关系过程[5]。 首先通过“#”号键调整输入方式,使之处于汉字输入的状态下;然后通过键盘2~9输入代表拼音的数字串,并在显示屏上实时显示拼音的“匹配结果”,若代表拼音的数字串输入有误,可以通过C键删除上一个错误输入的数字,若代表拼音的数字串输入正确,则通过A或B键查找目标字符拼音,即筛选与数字串对应的拼音组合;若拼音组合也正确,则判断、确定目标汉字,即按下“1”键,确定拼音,并通过1~5键选择排列的1~5个汉字,存储其GB2312码,并将其对应的点阵组合显示到显示屏上,或利用上、下键选择下一组同音的5个汉字。至此一个汉字的输入过程便完成了,下一步则可以根据短消息编辑的需求,决定是继续输入汉字还是按下确定键输入信宿的号码,并按发送键将保存的GB2312码流发送出去。算法的主体结构如图3所示,并可借鉴参考文献[1]中汉字“帮”的输入过程(如图2右图所示)。 2.2信息功能实现的关键点设计 要完成短消息的编辑、发送和接收等主体功能,汉字拼音码表的查找,中、英文混排编辑以及设计合理的信令结构是其中的关键点。 2.2.1“码表查找”数据结构 汉字输入法的实现过程实际上是一个根据键盘输入查找拼音组合以及相应汉字的过程,但关键在于数字串到拼音往往是一种多对多的映射关系,而拼音到同音的汉字排列表是一种一对多的映射关系。为实现正确的汉字输入,首先要获得正确组合的数字串,根据数字串找到对应的拼音,再根据该拼音找到对应的汉字,最后根据汉字的机内码到汉字字库中查找汉字的显示点阵,这一过程不妨称为“码表查找”过程。“码表查找”的实现中对合理码表的设计具有重要意义[4]。 拼音索引数据结构,是一个包括输入数字序列、拼音、拼音码表的结构体,这三者构成一个完整的三级映射关系。其定义如下: typedef struct { u8 *py_input;//输入的数字序列 u8 *py; //数字序列对应的拼音 u8 *pymb; //拼音码表 }py_index; 其中具体的拼音索引表(部分)由2~9数字组合成的数字序列、数字序列对应的拼音,以及拼音码表数组3部分组成。

    时间:2021-03-21 关键词: 手持机 ARM硬件 短消息交互

发布文章