基于DSP的分布式温度采集记录仪的设计与实现
● 控制功能命令
控制功能命令用于实现温度测量、访问寄存器和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所示。
![](http://m.amcfsurvey.com/uphotos/fetch/20130729/148146_2_0.jpg)
图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所示。
![](http://m.amcfsurvey.com/uphotos/fetch/20130729/148146_2_1.jpg)
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
![](http://m.amcfsurvey.com/uphotos/fetch/20130729/148146_2_2.jpg)
结语
该温度采集记录仪不但可以稳定的采集温度数据而且可以快速的将数据存储到U盘或者SD卡,便于以后分析处理,特别适合环境比较恶劣地区的温度采集,为温度采集与数据存储提供了一个理想的解决方案。
评论