| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 基于stm32的测微仪采集系统开发 -> 正文阅读 |
|
[嵌入式]基于stm32的测微仪采集系统开发 |
目录 摘要随着科技的快速进步,信息技术、集成电路的高速发展。高精度、多通道的绝对测量采集系统广泛地应用在军事、航空、航天、机械等诸多领域,极大的提高了绝对距离的测量精度,促进了工业的广泛应用。 本文首先总结了国内外高精度采集系统的国内外研究现状,设计了一款高精度、多通道的光纤光学相干测距仪采集系统。具体研究内容如下: 该项目中设计了八路采集卡和主控制板及其配套软件。八路采集卡主要有三部分组成,分别是光电转换电路,放大电路和AD采集电路;主控制器主要由三部分组成,分别是以太网接口电路,232串口通信电路和外部中断电路。光电转换电路的作用是将光纤分路器返回的带有位置信息的干涉光转换为电信号,放大电路的作用是将光电转换后的产生的电流信号进行放大,AD采集电路的功能是将放大后的模拟电压信号转换为数字电压信号。串口通信电路的功能是实现数字激光调谐器的配置和控制,外部中断电路功能是实现AD转换数据的采集,以太网电路的功能是将带有干涉光信号的电压数据发送给上位机。 最后,设计了与之配套的软件系统,包括系统初始化,外设初始化,采集函数以及上位机与控制板通信函数。 关键词stm32,AD转换,UIP,光电转换 第1章 ?绪论1.1课题研究的目的及意义????????高精度距离测量作为一种基本的计量手段,在军事、航空、航天、机械等诸多领域都具有广泛的应用。在工业生产上,可以实现数控机床几何误差实时在线测量和超精密加工技术的检测;在航空航天领域和国防领域,可用于对卫星编队飞行中的位置和姿态的监测和在合成孔径雷达天线定位中精确测量卫星平台和雷达副天线之间的距离等。 ????????现有的利用光学干涉原理的光学相干测距法虽然在精度和量程上可以满足要求,但是其透镜系统组成的光路存在着价格昂贵、体积较大、携带不变等缺点,在实际的应用场景中具有诸多的不便。 ????????20世纪70年代以来,随着激光器、半导体、集成电路产业的快速发展,新的光学技术创造了光电子学的新世界。光纤作为信号传输载体具有着频带宽、重量轻、抗干扰性好等优点,因此,应用光纤光学干涉技术设计一款高精度、体积小、成本低的光纤相干测距仪在现代工业和生产中具有重要的意义。 ????????其中,高精度数字逻辑采集系统是光纤相干测距仪的重要组成部分。如何实现高效、准确地采集光干涉后的光信号对于光纤相干测距仪起到了至关重要的作用。本文以光纤光学相干测距仪为应用背景,对高精度数据采集系统进行方案制定。 1.2国内外研究现状????????光信号的采集,尤其是对微弱的光信号的采集一直是研究的重点。检测微弱光信号,一般都通过专用传感器将其转换成电信号,再经运算放大器放大。但有用信号往往淹没于外界干扰信号及检测系统本身的固有噪声,因此,研究微弱信号测量对提高测量系统精度有重要的意义。 ????????要提高光纤光学相干测距仪的测量精度,首先就要保证有效提取微弱信号。微弱信号提取的主要研究方法包括:时域的相关检测、时域平均、取样积分与数字式平均;频域的频谱分析方法;时频域的小波分析和短时傅里叶变换;非线性理论的神经网络、差分振、混沛理论、高阶谱分析、经验模式分解、随机共振方法等。 ????????1953年Bennett最早实现了实用相关检测系统。1961年,Weinreb实现利用自相关法提取随机噪声中的周期信号。1962年Klein发明BOXCAR积分,其原理是用电子技术实现取样积分。以计算机取代模拟电路实现取样积分称之为数字式平均;同一年,美国EG&G PARC公司发明第一台锁相放大器。1966年VAN Fleck研究了用过零时刻相关法实现极性相关运算。1989年Paul K.Dixon等人通过将一些专用设备(HP3561A数字分析仪、数字采集器、扫描器、计算机)通过总线集成,搭建了性能超越普通模拟LIA的数字LIA。2001年西班牙的Barragan L.A等人的文章报道基于Motorola的DSP56002评估模块的低成本模块化用于测量光衰减的DLIA系统。此后,随着电子技术的发展,越来越多的基于单片机、和的微弱信号检测设备逐渐涌现。 ????????国内天津大学的李刚等人采用叠加锯齿函数的过釆样技术,提高AD转换器测量时的釆样精度。国防科技大学的杨定新等人利用随机共振机制,可有效地放大与增强噪声中的微弱信号。北京航空航天大学的叶卫东等人设计了一种可实时恢复出深埋在均勻分布噪声中的微弱缓变非周期信号波形的算法。北京交通大学的谢涛等人实现了低于-110dB信噪比条件下高斯白噪声背景中正弦信号检测。福建的黄熙实现了使抑制谐波能力可以达到-120dB的DSP双相位检测算法。空军工程大学的杨晓阔利用特征向量盲分离方法实现了在-30dB极低信噪比下恢复出多个弱信号。西北工业大学的陈韶华等人设计了一种变截断周期时域平均搜索方法,信噪比下限达到-35dB。 1.3课题研究的主要内容及章节安排????????本文以光纤光学相干测距仪为应用背景,设计一款高精度、多通道、便携的光纤光学相干测距采集系统。该采集系统主要由两部分组成,分别是采集卡和主控制板,采集卡主要实现对带有位置信息的光信号转换、放大、采集,控制板主要实现采集数据的打包、发送以及控制采集系统相关设备。选用的AD转换芯片要具性能高、通道数多、采样率高、采样精高度,可以实现多通道,高精度的测量;选用的ARM控制板芯片要具有较强的性能、外设,可以实现高精度的控制和较多数据的发送;为了实现远距离的传输数据,需要设计数据包的格式,使得上位机和控制板解析互相发送数据。根据上诉内容,本文的主要工作包括以下几点: ????????第一章介绍了项目的绪论。首先介绍了本课题研究的目的及意义,之后介绍了高精度采集系统的国内外研究现状,最后介绍了课题的研究内容以及章节的安排。 ????????第二章介绍了本项目的总体方案。包括测微仪的基本原理和组成,控制与采集系统的总体方案,八路采集卡方案和主控制板的方案。 ????????第三章介绍了采集系统相配套软件设计,包括干涉信号的数据采集,ARM控制板与上位机的通信。 ????????第六章对本文的研究内容和取得的成果进行了总结,并且展望了下一步的研究方向。 第2章 测微仪采集系统方案2.1测微仪基本原理及组成????????光的干涉现象是指由两列或多列光波在空间中发生叠加,在叠加区域内出现不均匀的光强分布现象。光的干涉发生具有以下三个必要条件:1、两列光波具有相同的振动方向2、两列光波具有相同的频率3、两列光波具有固定的相位差。 ????????如图2-1所示的光学干涉测量系统中,其基本光路是由美国物理学家迈克尔逊和莫雷在 1883提出的迈克尔逊干涉仪。当激光器发出的光源在分光镜分为两束,透射光经反射棱镜 1 反射,反射光经反光棱镜 2 反射,两束光再经分光镜后将会在光电探测器处重新汇合。根据已述的光波产生干涉现象的条件可知,经迈克尔逊干涉仪后汇聚到光电探测仪出的两束光波是由同一激光光源产生的,因此具有相同的频率和相同的振动方向。而由于反射棱镜 1和反射棱镜 2 到分光镜的距离不相等的,但又是固定不变的,因此两束光波具有恒定的相位差。因此只能测量相对距离,而不能测量绝对距离。90 年代后期,随着可实现光频率调制的调谐激光器的出现,在光电探测器上将得到相位随激光频率连续变化的干涉信号,采集并分析相关数据就能得到距离值。 ?图2-1频率扫描干涉光路图 光纤光学相干测距仪主要由以下五个部分组成,分别为数字调谐激光器、光纤分路器、集成光纤相干传感器、控制与信号采集电路和PC上位机机。 整体工作过程如图1所示: (1)控制与信号采集模块通过232串口来控制数字调谐激光器发出频率扫描的激光。 (2)激光器产生的激光传至光纤分路器。 (3)光纤分路器将激光分光后传导至集成光纤相干传感器。 (4)集成相干光纤传感器将测量后带有位置信息的干涉光传导回光纤分路器。 (5)光纤分路器将干涉光传导至信号采集电路,信号采集电路将干涉光经过光电转换、放大、AD采集后发送至控制器。 (6)控制器将带有干涉光信号的电压数据经以太网发送至上位PC机,PC机使用LabVIEW程序计算并显示结果。 ?图1 光纤光学相干测距仪工作过程 ????????激光光源需要可以调节激光频率,因此选用了UC INSTRUMENTS公司的CA92004数字调谐激光器。该款激光器具有体积小巧、结构紧凑、价格适中、性能卓越等优点。不同于扫描频率光源数据的激光频率是连续变化的,该款激光器的频率变化是以一定的步长从起始频率到终止频率跳跃式变化输出的。该激光器如图2-2所示。 ?图2-2?CA92004数字调谐激光器??? ???????? ??图2-3?光纤分路器 ????????本项目要体现多路同时测量,所以需要光纤分路器来实现激光分路。光纤分路器又称分光器,其可以实现光能量的分路与合路。光纤分路器能够将一根光纤中传输的光能量按照既定的比例分配给多根光纤,同样也可以将两根或多根光纤中传输的光能量合并到一根光纤中。 本项目中选用的光纤分路器如图2-3所示。 2.2控制与采集系统方案控制与采集系统由采集卡和主控制板组成,具体方案如图2-4所示。 图2-4?控制与采集系统方案 ? 2.2.1 八路采集卡????????光纤分路器返回的光信号无法进行直接处理,需要经过光电转换,信号放大,模数转换等过程,才能被被处理。 ????????光电转换电路的核心器件为光电二极管。在本项目中,由于激光器发出的激光经光纤分路器分光和被测物表面的散射损耗,真正到达光电二极管的干涉光的光强只有 uW 量级甚至更低,在光电二极管的选择时,要选择在该光强范围内光电响应特性良好的器件。 ????????由于激光器发出的光经过光纤分路器分为多路和光电二极管的转换后,实际产生的电流信号只有0.1uA~20uA左右,这样的电流信号采集难度极高,因此需要放大电路将电流信号进行放大。放大芯片选择时,需要考虑到放大后的电压易于采集,可以确保采集后的精度,又不可以超出AD采集芯片的输入范围。根据以上需求,放大芯片选用的是AD8667ARZ。该芯片是一款轨对轨输出的精密双CMOS运算放大器,使用了Analog Devices.Inc.获得的DigiTrim?微调专利技术,实现了低偏移电压。同时,它还具有低输入偏置电流,低输入偏移电压和低电流噪声的特点。低偏置电压:175uV ;低电源电流:每个放大器最大275uA;低噪声:23nV/√Hz;低输入偏置电流:300fA。为了适应不同材料以及不同的使用场景,放大倍数的设置需要设计为可调节的形式。 ????????经过放大电路得到的信号为模拟电压信号,为了方便后期数据的处理及分析,需要进行模数转换,将模拟电压信号转换为数字电压信号。在本项目中,需要实现八路同时测量,分辨率要求14bit以上,采样速度要达到5Ksps。根据以上需求,同时考虑到考虑到数据的传输方式、成本以及稳定性,选用 MAX11046ECB+ 作为本项目的AD转换芯片。MAX11046ECB+ 提供了8个16bit独立通道的ADC输入,可以实现250Ksps的每个通道独立的同步采样。此外,可以接受±5V输入,使用4.75V至5.25V模拟电源和单独灵活的2.7V至5.25V数字电源运行,用于与主机连接,无需电平位移器。MAX11046ECB+?具有五个控制信号,分别是片选(CS)、写(WR)、读(RD)、转换启动(CONVST)和转换结束(EOC),具有16路数据输出为DB0-DB15,其中DB0-DB3为双向并行数字接口,可以配置芯片输出数据格式等,通过控制信号及数据传输信号的配置,可以实现对MAX11046ECB+?的初始化配置及数据读取。 2.2.2 主控制板主控制板需要实现数字调谐激光器的控制、AD信号采集和将采集的数据发送给上位机。 CA92004数字调谐激光器需要通过RS-232串口通信来实现配置和控制,因此需要设计RS-232串口通信电路。RS-232标准接口是常用的串行通信接口标准之一,它是由美国电子工业协会(EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准。而工业控制的RS-232口一般只使用RXD、TXD、GND三条线。 在数字调谐激光器开始工作时、完成频率转化时和MAX11046ECB+ 完成一次AD转换时,都会产生脉冲信号,如果采用轮询的方式查询,无法满足实时性的要求,所以采用外部中断的方式来处理。外部中断是单片机实时地处理外部事件的一种内部机制,当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。 AD芯片采集后的数据需要打包后发送给上位机进行后续的数据分析及处理,ARM控制板与上位机通信主要考虑的是传输速度。数字调谐激光器每秒改变4000次频率,经过MAX11046ECB转换后的数据为16bit,占用2Byte,以8路激光计算,下位机与上位机之间的传输速度最少要达到64KB/s,结合网络传输协议重的其他数据,比如IP信息,控制位,校验位等,本设计中采用10M以太网作为上下位机之间的通讯方式。以太网芯片选用的是比较常用的DM9000AEP。 2.3八路采集卡硬件电路设计????????八路采集卡需要实现将光纤分路器返回的光信号转换为电流信号,并对转换后的电流信号进行放大和采集,因此需要光电转换电路,放大电路和AD采集电路来分别实现以上功能。 2.3.1光电转换电路????????光电转换电路核心器件为光电二极管,激光器发出的激光经光纤分路器分光和被测物表面的散射损耗,到达光电二极管的干涉光的光强只有 uW 量级甚至更低,因此,光电二极管在uW 量级光电响应的线性度要好。在本项目使用的光电二极管光电响应特性如图2-5所示,可见光电二极管的线性度良好。 图2-5 光电二极管光电响应特性 ? 2.3.2放大电路????????由于激光器发出的光经过光纤分路器分为多路和光电二极管的转换后,实际产生的电流信号只有0.1uA~20uA左右,这样的电流信号采集难度极高,因此需要放大电路将电流信号进行放大。 ????????放大倍数的选择主要考虑两个因素。第一是放大后的电压能过低,最好在1V以上,这样在AD采集时可以保证转换后的精度;第二是放大后的电压不能超出AD芯片的输入电压范围,否则会造成AD芯片损坏。在本项目中,选用AD8667ARZ运算放大器设计放大电路,如图2-6所示。 图2-6?运算放大电路原理图 设光电二极管输出电流为,经放大后的电压为,根据放大电路原理图,与之间存在以下关系: ????????根据光电二极管输出电流为以及经放大后的电压为可以计算出,+的阻值在0.05MΩ~50MΩ之间,因此,选择0~50MΩ的可变电阻,选择0.05~1MΩ的可变电阻,可以实现最高5.1×倍的放大,而且,通过可变电阻的调节,可以使放大后的电压既不会超出AD芯片的输入范围,又可以保证转换后的精度,在实际使用的过程中,和也可以根据不同的情况做出相应的调整。 2.3.3 AD采集电路????????经过放大电路得到的信号为模拟电压信号,为了方便后期数据的处理及分析,需要进行模数转换,将模拟电压信号转换为数字电压信号。在本项目中,需要实现八路同时测量,分辨率要求14bit以上,采样速度要达到5Ksps。根据以上需求,同时考虑到考虑到数据的传输方式、成本以及稳定性,选用 MAX11046ECB+ 作为本项目的AD转换芯片。 ????????MAX11046ECB+的输入引脚为CH0-CH7,由MAX6126芯片提供的4.096V外部基准驱动电压供电;16路数据输出为DB0-DB15,其中DB0-DB3为双向并行数字接口,可配置芯片寄存器以及配置芯片的内外部基准、输出数据格式和CONVST模式;具有五个控制信号,片选(CS)、写(WR)、读(RD)、转换启动(CONVST)和转换结束(EOC)。MAX11046ECB+ 主要引脚名称,作用及连接位置如图2-7所示。 ?图2-7?MAX11046ECB+ 主要引脚 MAX11046ECB+ 原理图如图2-8所示。 ?图2-8?MAX11046ECB+原理图 ????????MAX11046ECB+ 模式配置及数据读取:MAX11046ECB+ 与ARM控制板的通信控制芯片采用SN74LVTH245APWR。 SN74LVTH245APWR用于数据总线之间的异步通信,它可以将数据从A总线传输到B总线或从B总线传输到A总线,这取决于方向控制(DIR)输入处的逻辑级别。输出启用(OE)输入可用于禁用设备,从而使总线被有效地隔离。SN74LVTH245APWR控制信号如图2-9所示。 ?图2-9?SN74LVTH245APWR控制信号 ????????MAX11046ECB+ 配置寄存器共有4位,分别是CS0 ~ CS1,通过分别通过DB0 ~ DB3来进行配置。寄存器配置表如图2-10所示。 ?图2-10?MAX11046ECB+ 配置寄存器 MAX11046ECB+ 配置寄存器流程:方向控制(DIR)=1;输出启用(OE)=1;写信号(PD5)=1;片选(PB8)=1;Max11046_WritePort3(0x000d);片选(PB8)=0;输出启用(OE)=0; MAX11046ECB+ 数据读取采用中断的方式进行。在每次转换结束后,转换结束标志位(ECO)会产生一个下降沿信号,该信号作为采集中断函数的触发信号。 ????????MAX11046ECB+ 数据读取流程为:转换结束标志位(ECO)产生下降沿信号,输出启用(OE)=1;方向控制(DIR)=0;片选(PB8)=1;读信号(PD4)=1;Max11046_Read(&(ad_data[0]));片选(PB8)=0;输出启用(OE)=0。 2.4 主控制板硬件电路设计2.4.1 主控制板最小系统一、MCU选择 ????????MCU的选择主要考虑一下几个方面,包括处理速度、功耗、内存容量等等.本设计中采用的是由意法半导体公司(STMicroelectronics)生产的基于 Cortex-M3 核心的 32 位 ARM 微控制器 STM32F103ZET6 作为采集主板的处理器,该控制器具有高性能、高集成度、实时性好、低电压、低功耗和易于开发的特点。 ????????STM32F103ZET6最高具有72MHz的工作频率,芯片内置了64K字节的SRAM和512K字节的Flash,带有4个片选的静态存储器控制器,支持SRAM、NAND和PSRAM等存储器;具有多达112个快速I/O端口,所有IO端口均可映射到16个外部中断,几乎所有端口都可以接受5V信号;具有丰富的片内外设,包括3个12位ADC,4个16为定时器,每个定时器有多达4个用于输入捕获/输出比较的通道,同时还具有USART,CAN,IIC,SPI等丰富的通信接口;工作电压为2.0V-3.5V。 芯片实物如图2-11所示。 ?图2-11 STM32F103ZET6 二、复位电路 ????????复位电路的作用是使电路恢复到起始状态的电路设备,是微机系统中电路稳定可靠工作必不可少的一部分。复位电路比较简单的大都是只有电容和电阻组合就可以办到了,但是由于简单的容阻复位电路稳定性较差,容易出现复位不成功的情况,不是非常可靠,本设计中采用TPS3305-18专用复位芯片来进行单片机的复位。电路原理图如图2-12所示。 ?图2-12??复位电路 2.4.2 主控制板与数字激光调谐器通信电路????????CA92004数字调谐激光器需要通过RS-232串口通信来实现配置和控制,考虑到ARM控制板的体积以布局的紧凑性,在本设计中没有选用常用的DB9接口,而是采用了三线通讯,分别为串口输入TXD,串口输出RXD和GND。MCU和TLS串口之间的电平转换芯片为MAX3221EAE,串口通信电路原理图如图2-13所示。 ?图2-13??串口通信电路 在ARM控制器准备就绪后,按下KEY1,即可实现通过串口向激光器写入指令,每个指令设置成功后,激光器都会返回设置完成的返回指令,如果设置有误或设置没有成功,则不会返回指令。写入指令代码如2-14所示。 ?图2-14?CA92004初始化指令 2.4.3 干涉信号数据采集电路????????在数字调谐激光器开始工作、完成频率转化和MAX11046ECB+ 完成一次AD转换时,都会产生脉冲信号,如果采用轮询的方式查询,无法满足实时性的要求,故外部中断的方式来处理。 ????????在本项目中,一共使用个三个外部中断接口,分别是: ????????1、数字调谐激光器开始频率扫描时,Trig2口会产生一个上升沿信号,该信号将作为起始脉冲中断函数触发信号。 ????????2、数字调谐激光器发出的激光频率每发生一次变换,Trig1口便会产生一个上升沿,该信号将作为采集触发中断函数触发信号。 ????????3、MAX11046ECB+ 完成一次AD转换时,结束标志位ECO 将产生一个下降沿信号,该信号作为采集中断程序的触发信号。 外部中断电路设计如图2-15所示。 ?图2-15?外部中断电路 2.4.4 主控制板与上位机通信电路????????ARM控制板与上位机之间的通信主要考虑的是传输速度。数字调谐激光器每秒钟改变4000次频率,经过MAX11046ECB转换后的数据为16bit,占用2Byte,以8路激光计算,下位机与上位机之间的传输速度最少要达到64KB/s,结合网络传输协议重的其他数据,比如IP信息,控制位,校验位等,本项目中采用10M以太网作为上下位机之间的通讯方式。 ????????以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一种称为交换机的设备连接不同的计算机。经典以太网是以太网的原始形式,运行速度从3~10 Mbps不等;而交换式以太网正是广泛应用的以太网,可运行在100、1000和10000Mbps那样的高速率,分别以快速以太网、千兆以太网和万兆以太网的形式呈现。 ????????以太网芯片选用的是比较常用的DM9000AEP,以太网电路图和DM9000AE实物图如图2-16和图2-17所示。 ?图2-16??以太网电路 ?图2-17 ?DM9000AEP实物图 ????????ARM控制板与DM9000AEP的通信通过FSMC控制器来实现。FSMC是Flexible Static Memory Controller的缩写,译为灵活的静态存储控制器。它可以用于驱动包括SRAM、NOR FLASH以及NAND FLSAH类型的存储器,不能驱动如SDRAM这种动态的存储器。由于引脚数量的限制,只有STM32F103ZE或以上型号的芯片才可以扩展外部SRAM。 ????????FSMC包含的四个模块为:(1)AHB接口(包含FSMC配置寄存器);(2)NOR闪存和PSRAM控制器;(3)NAND闪存和PC卡控制器;(4)外部设备接口。 FSMC框图如图2-18所示。 ?图2-18 FSMC框图 ????????从FSMC的角度看,可以把外部存储器划分为固定大小为256M字节的四个存储块,如图2-19所示。存储块1用于访问最多4个NOR闪存或PSRAM存储设备。这个存储区被划分为4个NOR/PSRAM区并有4个专用的片选。存储块2和3用于访问NAND闪存设备,每个存储块连接一个NAND闪存。存储块4用于访问PC卡设备。每一个存储块上的存储器类型是由用户在配置寄存器中定义的。 ?图2-19?FSMC外部设备地址映像 ????????FSMC重要控制引脚如下图2-20所示。FSMC外设相关的控制引脚,控制不同类型存储器的时候会有一些不同的引脚,其中地址线FSMC_A和数据线FSMC_D是所有控制器都共用的。NOR闪存和PSRAM接口的典型信号如图1所示,其中具有前缀“N”的信号表示低有效信号。 ?图2-20 PSRAM / NOR接口信号 第3章 测微仪采集系统软件设计3.1软件总体方案????????在本项目中,由于没有很多的并行任务,所以并没有采用实时操作系统来管理任务,而是采用了主函数加中断函数的结构。 ????????主函数功能为:系统初始化,系统外设初始化,网络初始化,外部中断初始化,AD采集卡初始化,数据包发送。 ????????中断服务函数有三个,分别是起始脉冲中断函数,采集触发中断函数,采集中断函数。 ????????软件系统总体框图如图3-1所示。 ?图3-1 软件系统总体框图 3.2干涉信号数据采集????????干涉信号的电压值采集由ARM控制器来完成,由于轮询的方式无法满足实时性的要求,故外部中断的方式来处理。 在本项目中,一共使用个三个外部中断接口,分别是: 1、数字调谐激光器开始频率扫描时,Trig2口会产生一个上升沿信号,该信号将作为起始脉冲中断函数触发信号。 2、数字调谐激光器发出的激光频率每发生一次变换,Trig1口便会产生一个上升沿,该信号将作为采集触发中断函数触发信号。 3、MAX11046ECB+ 完成一次AD转换时,结束标志位ECO 将产生一个下降沿信号,该信号作为采集中断程序的触发信号。 Trig2连接在PC1口,Trig1连接在PC0口,ECO连接在PD13口,分别占用外部中断线EXTI1,EXTI0,EXTI13。 ????????STM32的中断控制寄存器支持19个外部中断/事件请求,分别为线0-15对应外部IO口的输入中断,线16连接到PVD输出,线17连接到RTC闹钟事件,线18连接到USB事件。每个外部中断线都可以独立的配置触发方式,上升沿,下降沿或者双边沿触发。而且,STM32的每个IO口都可以配置为外部中断输入。STM32供IO使用的外部中断由16个,而IO口有上百个,他们之间的对应方式为线0-线15为对应外部IO口的输入中断,一组IO口有16个,每组的0号IO口映射到线0,每组的1号IO口映射到线1,以此类推。映射方式如图3-2所示。 ?图3-2??外部中断通用I/O映像 程序通过中断服务程序来实现,包括:起始脉冲中断函数,采集触发中断函数,采集中断函数三部分。 3.2.1起始脉冲中断函数????????数字调谐激光器在开始扫描时,Trig2会产生一个脉冲信号,该信号将作为采集起点信号和起始脉冲中断函数的触发信号。该中断服务函数的功能为初始化相关计数变量,包括点计数器dot_ptr(记录当前数据包中数据组数,每20组数据为一个数据包),包计数器packet_ptr(记录当前数据包的个数),脉冲计数器pulse(记录ECO产生脉冲的个数)。起始脉冲中断函数流程如图3-3所示。 3.2.2采集触发中断函数????????数字调谐激光器在每发生一次频率变化时,Trig1都会产生一个脉冲信号,该信号的将作为MAX11046+ 的采样和转换起点信号和采集触发中断的触发信号。该中断服务的功能为采集数据缓冲区(ad_data_temp)初始化,采集标志位start_flag置1,板卡计数器temp_count初始化。采集触发中断函数流程如图3-4所示。 ?图3-3 起始脉冲中断函数? ? ? ? ? ? ? ? ? ? ? ? ? ?图3-4 采集触发中断函数 3.2.3采集中断函数????????MAX11046+ 完成一次AD转换时,结束标志为ECO 将产生一个下降沿信号,该信号作为采集中断程序的触发信号,实现对八路采集板的的数据读取。该中断服务程序的功能为读取AD转换后的数据,将读取的数据打包并存储到uip.buf。 ????????数据打包标准及数据包格式见3.3.3数据通信协议。 ????????MAX11046ECB+ 配置寄存器流程:方向控制(DIR)=1;输出启用(OE)=1;写信号(PD5)=1;片选(PB8)=1;Max11046_WritePort3(0x000d);片选(PB8)=0;输出启用(OE)=0; ????????MAX11046ECB+ 数据读取采用中断的方式进行。在每次转换结束后,转换结束标志位(ECO)会产生一个下降沿信号,该信号作为采集中断函数的触发信号。 ????????MAX11046ECB+ 数据读取流程为:转换结束标志位(ECO)产生下降沿信号,输出启用(OE)=1;方向控制(DIR)=0;片选(PB8)=1;读信号(PD4)=1;Max11046_Read(&(ad_data[0]));片选(PB8)=0;输出启用(OE)=0。采集终端函数流程如如3-5所示。 ?图3-5 采集中断函数 3.3 主控制板板与上位机的通信????????ARM控制板与上位机之间的通信主要考虑的是传输速度。数字调谐激光器每秒钟改变4000次频率,经过MAX11046ECB转换后的数据为16bit,占用2Byte,以8路激光计算,下位机与上位机之间的传输速度最少要达到64KB/s,结合网络传输协议重的其他数据,比如IP信息,控制位,校验位等,本项目中采用10M以太网作为上下位机之间的通讯方式,通信协议采用uIP协议。 3.3.1uIP协议简介????????uIP 由瑞典计算机科学学院(网络嵌入式系统小组)的 Adam Dunkels 开发。其源代码由 C 语言编写。uIP 协议栈去掉了完整的 TCP/IP 中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,设计重点放在了 IP/TCP/ICMP/UDP/ARP 这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。 uIP 协议栈专门为嵌入式系统而设计,因此还具有如下特点: ? (1)代码非常少,其协议栈代码不到 6K,很方便阅读和移植。 ? (2)占用的内存数非常少,RAM 占用仅几百字节。 ? (3)其硬件处理层、协议栈层和应用层共用一个全局缓存区,不存在数据 的拷贝,且发送和接收都是依靠这个缓存区,极大的节省空间和时间。 ? (4)支持多个主动连接和被动连接并发。 ? ?(5)其源代码中提供一套实例程序:web 服务器,web 客户端,电子邮件发送程序(SMTP客户端),Telnet 服务器,DNS 主机名解析程序等。通用性强,移植起来基本不用修改就可以通过。 ? ?(6)对数据的处理采用轮循机制,不需要操作系统的支持。由于 uIP 对资源的需求少和移植容易,大部分的 8 位微控制器都使用过uIP协议栈, 而且很多的著名的嵌入式产品和项目中都在使用 uIP 协议栈。 3.3.2 uIP架构????????uIP相当于一个代码库,通过一系列的函数实现与底层硬件和高层应用程序的通讯,对于整个系统来说它内部的协议组是透明的,从而增加了协议的通用性。uIP协议栈与系统底层和高层应用之间的关系如图3-6所示。 ?图3-6?uip在系统中的位置 ????????从上图可以看出,uIP 协议栈主要提供了三个函数供系统底层调用。即uip_init(), uip_input() 和 uip_periodic() 。其与应用程序的主要接口是UIP_APPCALL( )。 ????????uip_init()是系统初始化时调用的,主要初始化协议栈的侦听端口和默认所有连接是关闭的。当网卡驱动收到一个输入包时,将放入全局缓冲区 uip_buf 中,包的大小由 全局变量 uip_len 约束。同时将调用 uip_input()函数,这个函数将会根据包首部 的协议处理这个包和需要时调用应用程序。当 uip_input()返回时,一个输出包同样放在全局缓冲区 uip_buf 里,大小赋给 uip_len。如果 uip_len 是0,则说明没有包要发送。否则调用底层系统的发包函数将包发送到网络上。 ????????uIP 周期计时是用于驱动所有的 uIP 内部时钟事件。当周期计时激发,每一个TCP连接都会调用uIP函数uip_periodic()。类似于uip_input()函数。uip_periodic() 函数返回时,输出的 IP 包要放到 uip_buf 中,供底层系统查询 uip_len 的大小发送。由于使用 TCP/IP 的应用场景很多,因此应用程序作为单独的模块由用户实现。uIP 协议栈提供一系列接口函数供用户程序调用,其中大部分函数是作为 C的宏命令实现的,主要是为了速度、代码大小、效率和堆栈的使用。用户需要将应用层入口程序作为接口提供给 uIP 协议栈,并将这个函数定义为宏UIP_APPCALL()。这样,uIP 在接受到底层传来的数据包后,在需要送到上层应 用程序处理的地方,调用 UIP_APPCALL( )。在不用修改协议栈的情况下可以适配不同的应用程序。 3.3.3数据通信协议????????以uIP通信协议为基础,可以快速实现上位机与ARM控制板的数据通信。为了方便后期数据的处理与分析,需要制定相应的数据协议,使得上位机和ARM控制板可以互相理解对方数据的含义,并根据相应的协议,解析出所需要的数据。 ????????通信协议的基本格式如图3-7所示,基本格式由起始位,长度位,命令种类和数据值构成。在这几种数据中,起始位,长度和命令种类位固定长度数据,功能为解析具体的数据;数据值的长度是可以变化的;长度表示的含义为数据值的字节数;命令类型用来区分命令和数据,0x0001表示数据调谐激光器发送的命令,0x0002表示采集的干涉信号电压值的数据。 ?图3-7 数据基本格式 数据值保存在Tcp_packet结构体中,Tcp_packet结构体成员变量如图3-8所示, ?图3-8 Tcp_packet成员变量 ????????其中,start_flag为其实标记为,数据值恒为0x0000ffff,len表示该结构体中数据值的长度,cmd表示命令种类,count表示数据包计数器,data表示干涉信号电压数据值。 ????????在该项目中,数据调谐激光器的扫描频率范围为191600GHz~195600GHz,以1GHz为变化量,总计共有4001组数据。在uIP协议建立连接时,需要进行“三次握手”,会有较大的开销,为了减少ARM处理器的负担,在本项目中,选择20次采集的电压值打包进行发送,共计201个数据包。 ????????每个数据包格式如图3-9所示,前4个字节为起始位start_flag;5~6字节为数据值的长度len,len的值为160*2=320;7~8字节为命令种类cmd;9~10字节为包计数器count,用于判读是否发生丢包;11~330字节为数据值,为8通道20次采集的数据,共计320字节。 ?图1 数据包格式 第4章 实验结果4.1八路采集卡八路采集卡实物图如图4-1,4-2所示。 ?图4-1 八路采集卡正面 ?图4-2 八路采集卡背面 4.2测试结果????????在1.5cm左右距离下,使用第8个数据通道,对金属表面进行测量,测得的部分数据图4-3所示。Frequence(GHz-CH8)表示测量频率,Voltage(V)-CH8表示测量电压。在测试中,频率范围为扫描频率范围为191600GHz~195600GHz,总计4001组数据,图4-3仅展示部分测量数据。 ?图4-3 测试数据 ????????图4-3和图4-4为上位机根据测量数据绘制的波形图,图4-3为时域图,图4-4为频域图,上位机可以通过以太网接收到主控制板发送的AD采集后的数据,本项目基本功能可以实现。 ?图4-4 时域图 ?图4-5 频域图 第5章 总结????????本文基于光纤光学相干测距仪为背景,针对测微采集系统进行设计,设计了八路采集卡和主控制板,并设计了与之相配套的软件,主要完成的工作和结论如下: 1、八路采集卡:八路采集卡由三部分组成,包括光电转化电路、放大电路和模数转换电路。光电转换电路的功能为将光信号转换为电流信号;放大电路功能是将转换后的电流信号放大;模数转换电路的功能为将放大后的电压信号进行采集实现AD转换。 2、主控制板:主控制板主要由4部分组成,分别是最小系统电路,串口电路,外部中断电路,以太网电路,其中,串口电路功能为实现设备间的通信;外部中断电路功能是为采集系统提供触发信号;以太网电路功能为将采集到的电压信号通过以太网发送至上位机。 3、配套的软件系统:包括系统初始化,外设模块初始化,采集函数及其中断服务,上位机与控制板通信函数及数据包通信协议。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:22:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |