基于DSP的分布式温度采集记录仪的设计与实现
扫描二维码
随时随地手机看文章
随着现代信息技术的飞速发展,分布式温度测量控制系统在工业、农业及人们的日常生活中扮演了一个越来越重要的角色。因此,对温度采集控制系统的设计与研究就具有十分重要的意义。
系统总体设计方案
TMS320F2812是TI公司推出的150MHz高速处理能力的高精度定点数字信号控制器。本设计采用TMS320F2812作为数据处理与控制单元,以Maxim公司的单线数字温度计DS28EA00为基础,通过DSP控制温度传感器顺序采集各个测量点的温度,经处理送LED显示并暂存到外扩RAM中,当满足特定的要求时,将数据存储到U盘或SD卡以便于以后分析处理。温度采集记录仪的硬件电路主要包含6个部分:DS28EA00温度测量模块、USB接口模块、SD卡接口模块、外扩RAM模块、LED显示模块和TMS320F2812数字信号处理模块,系统总体框图如图1所示。
图1 系统总体框图
系统硬件设计
1 DS28EA00温度测量模块
① 温度传感器选型
实际环境复杂多变,通常要求温度传感器能够与DSP可靠地通信,易与供电及布线,并能明确区分出温度数据与温度传感器位置的对应关系,因此温度传感器的选型十分关键。传统的模拟温度传感测量系统测量精度低、布线复杂、易受干扰,而新型单片数字式温度传感器测量精度高、抗干扰能力强,应用范围越来越广。
DS28EA00是业界首款具有链路功能的1-Wire数字温度传感器,具有9位(0.5℃)~12位(1/16℃)分辨率,且带有可由用户编程设置的非易失(NV)性温度上、下限报警触发点,报警搜索命令能够快速确定温度超出设定范围的器件。每个DS28EA00都具有工厂预先刻度的唯一64位序列号,只需一根数据线和地线就可通过1-Wire协议完成串行传输数据,支持 15.3kb/s的标准通信速率和125kb/s(最大值)的高速通信速率。经改进的1-Wire接口具有滞回和干扰滤波特性功能,使得DS28EA00能够在大的1-Wire网络中可靠工作。并且,与其他1-Wire温度计不同,DS28EA00具有两个额外的引脚用以执行顺序检测功能。该特性允许用户将器件在链路中的物理位置与序列号对应,如用来测量贮存塔不同高度处的温度。DS28EA00的供电和数据通信都是借助这条1-Wire线完成的。
DS28EA00内部包括三个主要数据部分:(1)64位序列号,(2)64位暂存器,(3)报警和配置寄存器。所有1-Wire系统都有一个重要的基本特性:每个从机都有一个唯一、不能更改(ROM)的64位、工厂激光刻制序列号(ID),这个序列号永远不会与另一个器件重复。1-Wire ROM Function Control(1-Wire ROM功能控制)单元处理ROM功能命令,允许器件可以工作在一个多点网络环境中。Device Function Control(器件功能控制)单元用于实现对器件的特定操作和控制,如实现读/写、温度转换、设置顺序检测的链路状态。8bit CRC生成器在读取温度和寄存器数据时协助主机检验数据完整性。DSP通过GPIO口与DS28EA00的1-Wire(1线接口)总线接口相连进行通信,如图2所示。
图2 测温模块原理图
② DS28EA00的序列检测硬件电路连接
DS28EA00的链路功能允许1-Wire主机检索以线性网络(“链”)方式连接的器件,找出其物理顺序,这对于那些沿长电缆等间距安装的器件是非常方便的。链路功能需要两个引脚,输入引脚(EN)使器件在检测过程中能对检测做出响应,而输出引脚(DONE)用于通知链路中的下一个器件其相邻器件的检测已完成。
DS28EA00的两个通用端口被复用以实现链路功能。PIOB被复用为EN输入,PIOA产生DONE信号并与下一个器件的EN输入相连,链路中第一个器件的EN输入需连接至GND,序列检测时的连接(由DSP充当1线主机)如图3所示。
2 USB接口模块
本系统采用Cypress公司生产的嵌入式USB接口芯片SL811HST,内含USB主/从控制器,支持全速(full-speed)/低速(low-speed)数据传输,并能自动识别低速或者全速设备,SL811HST所提供的接口可与微控制器、DSP相连。此外,SL811HST内部有一个256字节的RAM,可用做控制寄存器或数据缓冲器。本系统中USB设备映射TMS320F2812外扩0区域,USB接口模块硬件电路图如图4所示。
图4 USB接口模块硬件电路图
3 SD卡接口模块
目前市场上已出现了容量高达GB容量的SD卡,可以通过SPI口或并行(SD)接口与主机通信,另外还提供额外的引脚用来检测卡的存在以及是否写保护。在SPI总线模式下,CS为主控制器向卡发送的片选信号,SCLK为主控制器向卡发送的时钟信号,DI(Data In)为主控制器向卡发送的单向数据信号,DO(Data Out)为卡向主控制器发送的单向数据信号。若想更高速的通信则选择SD模式通信,可以采用GPIO接口满足特定的SD规范。
系统软件设计
系统软件设计是本文的重点,主要包括三部分内容:DSP与DS28EA00的通信、DSP与SD卡的通信,DSP与USB设备的通信。
1 DSP与DS28EA00的通信
DS28EA00需要严格的通信协议确保数据的完整性,该协议在一根线上定义了四种类型的信号:由复位脉冲和在线应答脉冲组成的复位序列、写0、写1、读数据。DS28EA00能以标准速率或高速两种不同的速率进行通信,且所有波形均采用快速定时。DSP通过1-Wire端口访问DS28EA00的操作流程如下。
● DS28EA00初始化
1-Wire 总线上的所有操作均从初始化开始,初始化过程由DSP发送的复位脉冲和从器件发送的在线应答脉冲组成,在线应答脉冲用于通知DSP DS28EA00已挂接在总线上并已准备就绪。
● ROM功能命令
一旦DSP检测到在线应答脉冲,就可以发出DS28EA00支持的8条ROM功能命令中的一条,所有ROM功能命令的长度均为8位。[!--empirenews.page--]
● 控制功能命令
控制功能命令用于实现温度测量、访问寄存器和PIO、改变链路状态所需的协议。DSP与DS28EA00之间的通信可采用标准速率(默认状态,OD=0),也可用高速模式(OD=1)。上电后,如果没有明确设置为高速模式,DS28EA00则以标准速率进行通信。
● 数据的收发
DS28EA00的数据通信是在一个个时隙中进行的,每个时隙只能传送1bit数据。通过写时隙将数据从DSP传输至DS28EA00,而通过读时隙则将数据由DS28EA00传输至DSP。除在线应答脉冲之外,所有的通信都是从主机(DSP)主导发出下降沿信号开始。当1-Wire总线上的电压跌落至低于门限电压时,DS28EA00利用其内部时隙发生器,确定在写时隙期间何时对数据线进行采样以及在读时隙时数据有效时间的长短。
2 数据存储
① U盘数据存储
通过DSP实现对USB移动存储设备操作的工作主要是在软件方面,因此本文主要从软件方面来说明设计过程。USB软件设计主要由通用的USB总线枚举部分和USB Mass Storage类协议软件设计和文件系统组成,U盘数据存储流程图如图5所示。
图5 U盘数据存储流程图
U盘数据存储的部分代码如下:
(1)unsigned char EnumUsbDev(BYTE usbaddr) //枚举USB设备
{USB_Reset(); //USB设备复位
if (!GetDescription()) // 获取设备描述符并获得传输包的最大字节数
return FALSE;
if (!SetAddress(usbaddr))
// 设置USB设备的地址
return FALSE;
if (!GetDescription ())
// 重新获取设备描述符
return FALSE;
if(uDev.bClass==8)
//是否是大容量存储设备
bFlags.bits.bMassDevice=TRUE;}
(2)unsigned char EnumerateMassDevice(void)
//枚举大容量存储设备
{DeviceInformation.BPB_BytesPerSec=512;
//暂假设每个扇区为512字节
if(!RBC_Read(DeviceInfomation.StartSector,0,DBUF)) //读取U盘DBR区了解U盘的基本信息
return FALSE;
DeviceInfo.BPB_BytesPerSector=LSwapINT16(DBUF[10],DBUF[11]); //读取U盘每扇区字节数
DeviceInfo.BPB_SecPerCluters=DBUF[12]; //读取U盘每簇扇区数
ReservedSectorsNumbers=LSwapINT16(DBUF[13],DBUF[14]); //读取U盘保留扇区数
DeviceInfomation.BPB_NumFATs=DBUF[15];} //读取U盘FAT表的份数
② SD卡数据存储
SD卡数据存储软件设计主要包括两部分:SD卡的上电初始化过程和对SD卡的读写操作,其工作步骤如下。
● 配置TMS320F2812的SPI接口,然后检测是否有SD卡插入。为调试方便将SD卡接口的Vss2引脚接地。
● 当检测到SD卡的存在后系统连续发送10次0xFF00使SD卡的DATA IN引脚保持至少74个时钟周期以实现系统上电初始化。
● SD卡初始化,注意此时SPI接口的通信速度应在100kHz到400kHz左右,以满足SD卡通信协议的要求。
● 系统与SD卡通信。此时可以提高SPI接口的通信速率。
SD卡数据存储流程图如图6所示。
3 文件系统
为了便于对采集的数据进行处理,需要设计一个兼容FAT16、FAT32文件格式的文件管理系统,并将数据存储到U盘或者SD卡。
文件系统的数据分为五 部分:MBR区、DBR区、FAT区、DIR区和DATA区,由于U盘或者SD卡不要求启动,因此可以没有MBR区,只包含DBR、FAT、DIR和DATA四个区。
系统分析
1 性能指标
经过反复测试后得出:系统能稳定的采集温度数据并快速的存储至U盘和SD卡,具体性能指标如下。
● DSP与DS28EA00 的通信速率:标准通信速率为15.3kb/s,高速通信速率为125kb/s;
● DSP与U盘的通信速率约为600KB,与SD卡的通信速率约400KB。
2 系统抗干扰性能分析
在1-Wire系统中,仅DSP在信号瞬变期间进行控制才可能实现线路终端匹配。因此,1-Wire网络很容易受到其他噪声的影响。根据网络的物理形状大小和拓扑结构的不同,从端点到分支点的反射可能会在一定程度上相互叠加或抵消,如同1-Wire通信线路上的毛刺或振荡一样,这样的反射也是不容忽视的。从外部源耦合到1-Wire线路上的噪声也产生信号毛刺。时隙上升沿时出现的毛刺可能会引起从器件与不同步,结果会造成Search ROM命令无效,或导致器件级命令被忽略。为提高网络性能,DS28EA00采用了一种新型的1-Wire前端,它对噪声的免疫力更强,可以降低从器件引入的噪声的幅度。DS28EA00的1-Wire前端较之传统温度传感器的前端有以下不同。
● 在线应答脉冲的下降沿斜率是受控制的,这样提供了比数字开关晶体管更好的传输线阻抗匹配,将来自传统器件的高频振荡转换为更平滑的低频瞬变。斜率控制由参数tFPD(器件存在下降时间)指定,针对标准速度和高速模式,具有不同的取值。
● 该电路中增加了一个低通滤波器,用于检测时隙开始时的下降沿,这样可降低器件对高频噪声的敏感度。
● 高低开关门限VTH具有一个滞回。如果一个负毛刺的电压低于VTH,但不低于VTH-VHY时,就不会判定为负脉冲(如图7 Case A),滞回在任何1-Wire速率下均起作用。
● 该系统具有一个tREH(上升沿拖尾时间)定义的时间窗口,在这个窗口内,即使毛刺电压低于门限VTH-VHY(如图7 Case B,tGL
结语
该温度采集记录仪不但可以稳定的采集温度数据而且可以快速的将数据存储到U盘或者SD卡,便于以后分析处理,特别适合环境比较恶劣地区的温度采集,为温度采集与数据存储提供了一个理想的解决方案。
[!--empirenews.page--]