数字信号采集
随着现代工业技术的发展和对信号处理要求的不断提高,对于一个可靠稳定的系统来说,数据采集起着举足轻重的作用。数据采集及处理系统应用非常广泛,其基本原理是将外部模拟信号的电压量通过A/D转换器,转换成为数字量并存储在内部的RAM中,通过一系列的算法完成数据的处理。
本系统采用TI公司的TMS320F2812作为信号采集和处理的核心,通过TMS320F2812的McBSP模块外扩A/D转换器LTC1865进行采集。
TMS320F2812是TI公司的一款高性能、多功能、高性价比的32位定点DSP芯片。该芯片兼容TMS320LF2407指令系统,最高可在150MHz主频下工作,并带有18K×16位零等待周期片上SRAM和128K×16位片上Flash(存取时间为36ns)。TMS320F2812采用哈佛总线结构,具有密码保护机制,可进行双16×16乘加和32×32乘加操作,提供了足够的处理能力,使一些复杂实时控制算法的应用成为可能,因而具有控制和快速运算的双重功能。
TMS320F2812芯片的McBSP是一种同步串行接口,可以根据设计者的不同需求进行配置,使用非常灵活。McBSP的时钟停止模式可以提供与SPI兼容的协议。当McBSP配置为时钟停止模式时,发送器和接收器内不同步,这样McBSP可以作为一个SPI主设备或从设备。在这种模式下,McBSP的发送时钟信号CLKX相当于SPI总线的SCK信号,发送帧同步信号FSX可以作为SPI的片选使能信号SS使用。在时钟停止模式中,由于采用内部同步模式,不使用接收时钟信号CLKR和接收帧同步信号FSR。
本系统使用的数模转换器LTC1865是凌力尔特推出的16位SARADC,采用单5V电源工作,并能保证在-40℃~+125℃的温度范围内工作。每个器件最大电表1通道配置字选择单端输入差分输入地址选择10110001通道01+-+--+地--流为850μA,最大采样率达250kS/s,供电电流随着采样速率的降低而变小。MSOP-10封装的LTC1865提供2路软件可编程的通道,并且可以根据需求来调整参考电压的大小。3线SPI兼容串行接口通信,适用于高分辨率应用场合,如汽车温度检测、发动机油压测量或多普勒信号的采集等。
LIC1865的工作时序如图1所示。LTC1865转换周期开始于CONV信号的上升沿(即CONV为高电平时),经过一段tCONV后转换才结束。如果此时CONV还是高电平,LTC1865就拉低供电电流进入省电模式。当CONV变为低电平后,在SCK的上升沿依次从SDI引脚输入2个通道配置位(其他输入位被忽略),直到下一个CONV周期出现。SCK同步与数据的传输都为全双工工作模式。数据传送完后,如果CONV还是低电平,则SDO在SCK上升沿输出为0。
LTC1865的工作时序图
2个通道输入配置字决定了下一次转换的通道及其采样模式。如表1所示,如果配置字为10时,LTC1865将测CH0引脚对地的信号;如果配置字为11时,LTC1865将测量CH1引脚对地的信号;如果配置字为00时,LTC1865将测量CH0引脚对CH1引脚的信号;如果配置字为01时,LTC1865将测量CH1引脚对CH0引脚的信号。LTC1865采样的范围为VREF到VCC,其中VREF的电压由引脚VREF决定,可以通过硬件配置为1V~VCC。
信号调理电路就是放大、缓冲或标定传感器的模拟信号,使其适合于模/数转换器(ADC)的输入。本系统选用的运算放大器是TI公司的高CMR(共模抑制)、RRIO(轨到轨输入输出)OPA2364芯片,它具有单电源、低偏置和高性能等特性,完全符合本采集系统的设计要求。图2所示为通道0的电路原理图,为了最大限度地减小采集电路对传感器的影响,运放使用了具有高输入阻抗的同相放大接法。将信号从运放的输入范围±10V调理到适于ADC的输入范围。通道1的原理与通道0相同。
TMS320F2812与LTC1865的硬件电路连接如图3所示。由于LTC1865是5V电源的A/D转换器,而TMS320F2812是3V芯片,因此,TMS320F2812的McBSP模块中的串行数据接收引脚MDR必须要通过光耦TLP512与LTC1865的串行数据输出引脚ADSDO进行隔离,防止烧坏DSP。但McBSP的发送帧同步引脚MFSX、发送时钟引脚MCLKXA和串行数据发送引脚MDXA的数据传输方向是由DSP到ADC,所以无需光耦进行隔离。
LTC1865与TMS320F2812的McBSP进行高速串行通信的软件设计流程图如图4所示。首先对TMS320F2812系统初始化,包括初始化PLL模块倍频寄存器PLLCR和低速外设分频寄存器LOSPCP的配置;然后对McBSP进行初始化,配置相应的寄存器,使其工作在时钟停止模式;进入死循环后,首先发送CH1通道或者CH0的配置字(通道CH0的配置字为0xc003,通道CH1的配置字为0x8002),等待SPCR1寄存器的位RRDY为1时(即接收器已经准备好),就可以接收寄存器DDR内容读取数据。
在软件设计中,最重要部分之一就是McBSP模块的初始化。表2给出了McBSP配置为SPI主设备相关寄存器的位的设置。用于时钟停止模式的帧同步信号作为从设备的使能信号时,在整个发送过程中都是有效的。每个信息包的长度可设置为8位、12位、16位、20位、24位或32位。接收信息包长度由RCR1的RWDLEN1位选择;发送信息包长度由XCR1的XWDLEN1位选择。在时钟停止模式中,XWDLEN1的值必须等于RWDLEN1的值,因为McBSP的发送和接收电路同步于一个时钟。
结合本系统的硬件设计,对McBSP配置如下
(1)工作时钟为DSP内部的LOPCLK时钟,并设定SRGR2和SRGR1寄存器来对时钟进行分频。
(2)接收和发送的数据延时为1个工作时钟。
(3)McBSP工作模式为时钟停止模式。
(4)数据的对齐模式为右对齐。
(5)McBSP的字长为16位。
(6)启动发送寄存器。
注意:即使是多个码字连续地传输,在1个信息包传输完以后,CLKX信号总是停止的,且FSX信号返回无效状态。当进行连续的信息包传输时,每个信息包传输之间会出现2位周期的最小间隔时间。
初始化部分程序如下:
//
voidInitMcbsp(void)
{
int i;
EALLOW;
GpioMuxRegs.GPFMUX.bit.MDRA_GPI0F13=1;
GpioMuxRegs.GPFMUX.bit.MDXA_GPI0F12=1;GpioMuxRegs.GPFMUX.bit.MCLKXA_GPI0F8=1;
GpioMuxRegs.GPFMUX.bit.MFSXA_GPI0F10=1;//定义McBSP功能模块EDIS;
McbspRegs.SPCR2.all=0x0000;
McbspRegs.RCR2.all=0x0001;//设置接收数据延迟为1位McbspRegs.RCR1.all=0x0000;
McbspRegs.XCR2.all=0x0001;//设置发送数据延时为1位;McbspRegs.XCR1.all=0x0000;
McbspRegs.SRGR2.all=0x2008;//使用内部的时钟,L0PCLK//时钟,设置帧周期为8个,CLKG周期
McbspRegs.SRGR1.all=0xffff;//设置采样速率生成器分//频系数为256McbspRegs.MCR2.all=0x0000;
McbspRegs.MCR1.all=0x0000;
McbspRegs.SPCR1.all=0x1800;//设置工作在时钟停止模//式,上升沿启运时钟带有延时McbspRegs.PCR1.all=0x0F0A;//设置发送帧同步模式,//发送时钟模块McbspRegs.PCR1.bit.CLKXP=1;
McbspRegs.PCR1.bit.CLKRP=0;
McbspRegs.SPCR1.bit.DXENA=1;//DX使能器开启McbspRegs.SPCR1.bit.RJUST=0;//Right justify word
McbspRegs.SPCR2.bit.GRST=1;McbspRegs.RCR1.bit.RWDLEN1=2;//16bitword
McbspRegs.XCR1.bit.XWDLEN1=2;//16bitword
McbspRegs.SPCR2.bit.XRST=1;//enableXRST/RRST
McbspRegs.SPCR1.bit.RRST=1;for(i=0;i《1000;i++);
McbspRegs.SPCR2.all1=0x00c0;
//OnlyenableFRST,GRST
全部0条评论
快来发表一下你的评论吧 !