基于TMS320F2812的分布式温度采集记录仪的设计与实现
时间:11-29
来源:烟台大学 刘昌伟 邵左文
点击:
系统软件设计
系统软件设计是本文的重点,主要包括三部分内容: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位。
● 控制功能命令
控制功能命令用于实现温度测量、访问寄存器和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所示。
图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。
系统软件设计是本文的重点,主要包括三部分内容: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位。
● 控制功能命令
控制功能命令用于实现温度测量、访问寄存器和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所示。
图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。
DSP TMS320F2812 分布式 温度采集 记录仪 相关文章:
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)