首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP与串行A/D组成的高速并行数据采集系统

DSP与串行A/D组成的高速并行数据采集系统

关键字:DSP   ADC   数据采集  
  tms320vc5402(以下简称c5402)是德州仪器公司1999年推出的定点数字信号处理器(dsp)。与tms320c54x系列的其他芯片相比,c5402以其独有的高性能、低功耗和低价格受到了人们的广泛青睐。c5402增强外设有软件等待状态发生器、锁相环时钟发生器、6通道直接存储器访问(dma)控制器、增强型8位并行主机接口(hpi)等。两个可编程的多通道缓冲串口(mcbsp)能够全双工、快速地与其他同步串口进行数据交换,硬件连接简单,串口的工作模式和传送数据的格式可通过编程实现。

  因为c5402内部没有集成a/d,因此在数据采集时需要使用a/d转换芯片,a/d芯片与c5402的接口设计成为一个重要的问题。a/d转换芯片一般有串行a/d和并行a/d。为了充分利用c5402所提供的多通道缓冲串口资源,简化系统设计,本文系统使用了ti公司的高速串行a/d来同时完成两路数据采集,大大提高了串口工作效率。


  串行a/d芯片tlv1572

  tlv1572是高速的十位串行a/d转换芯片,可以通过3或4个串行口线直接与dsp或其他数字微处理器串口相连,不需要外加逻辑,但是转换速度受sclk供给时钟的限制。tlv1572与dsp的多通道缓冲串口相连是通过cs、sclk、do和fs四条线完成的,此时dsp的clkr产生移位脉冲,fsr产生帧同步信号,并分别提供给tlv1572。当t-lv1572与其他串口微处理器相连接时fs必须提供高电平,通过cs、sclk、do三条线来完成数据传输。当cs为高时,a/d芯片各管脚处于三态状态。在cs由高变低时,tlv1572检测fs引脚的状态来确定工作模式,若fs为低则为dsp模式,若fs为高则为其他微处理器模式。


图一 tl1572在dsp模式下的转换时序图



图二 tl1572在微处理器模式下的转换时序图


  当tlv1572工作在dsp模式时,必须保证在cs变低时,fs为低电平,并且要锁存一定时间。cs为低时,do跳出三态状态,但是直到fs为高时芯片才脱离休眠状态。tlv1572在每个时钟sclk的下降沿检测fs的状态,一旦检测到fs为高,tlv1572开始采样。在fs的下降沿,a/d芯片通过移位时钟将数据移到do上。在6个前导0传送之后,dsp可以在时钟的下降沿得到a/d转换的数据,如图1所示。在最低位移出之后,a/d芯片自动进入休眠状态,直到fs下一次有效。如果fs在16位传输完成后立即有效,则a/d开始新的数据转换,此时a/d为连续转换。若fs在tlv1572转换数据的过程中变高,则a/d芯片被复位,开始新的数据转换周期。因此可以通过设置fs,改变数据传输的位数。

  当tlv1572工作在非dsp模式下时,fs引脚必须接高电平。在每次转换的过程中都必须提供16个时钟信号,若微处理器无法一次接收16位数据,可以分成8位两次接收,两次接收的时间间隔不能大于100μs,此时cs必须一直处于有效状态。在dsp模式下转换的开始是由fs信号有效来决定的,而在微处理器模式下,数据转换cs有效后的第一个时钟信号上升沿开始的,如图2所示。在微处理器模式下,也可以通过设置cs来改变传送的位数。

  c5402的多通道缓冲串口

  c5402提供两个高速、全双工、多通道缓冲串行口mcbsp0、mcbsp1,用数据线d(r/x)、帧同步线fs(r/x)和移位时钟线clk(r/x)实现发送数据和接收数据。mcbsp通过6个引脚(dx、dr、clkx、clkr、fsx和fsr)与外设接口。

  (1)clkx(发送时钟输入或输出)

  芯片内部发送以为寄存器(xsr)通过该时钟信号将数据发送到dx引脚。该串口可以通过pcr寄存器的clkxm位配置成使用内部时钟或者使用外部时钟。

  (2)fsx(发送帧同步输入或输出)

  fsx是发送开始的标志,串口可以通过pcr寄存器的fxm位配置成输入或输出。

  (3)dx(串行数据发送)

  串口数据发送是通过该口进行的。

  (4)clkr(接收时钟)

  clkr用来接收外部时钟信号,该时钟信号将dr数据移入接收移位寄存器(rsr)。可以通过pcr寄存器的clkrm位配置成使用内部时钟或者使用外部时钟。

  (5)fsr(接收帧同步输入)

  fsr接收帧同步脉冲信号,标志数据接收开始。可以通过pcr寄存器的frm位配置成输入,也可以配置成输出。

  (6)dr(串行数据接收)

  串口数据接收是通过该口进行的。接收过程中,数据首先通过移位时钟clkr的作用下移入rsr(接收移位寄存器),然后,rsr中的数据再拷贝到ddr(数据接收寄存器),拷贝完成时,产生rint中断通知cpu来响应或revta中断通知dma响应,同时设置rrdy中断标志位,也可以用查询方式来完成,从数据寄存器中读出数据。clkx、clkr、fsx、fsr即可以由内部采样率发生器产生,也可以由外部设备驱动。mcbsp分别在相应时钟的上升沿和下降沿进行数据检测。每个mcbsp最多可支持128通道的发送和接收,串行字长可选,包括8、12、16、20、24和32位,还支持μ率和a率数据压缩扩展。stm #2, spsa0

  stm #0040h, spsd0 ; #0040h写入rcrc10,每字16位

  stm #3, spsa0

  stm #0040h, spsd0 ; #0040h写入rcr20,每帧一段,每段一字

  stm #6, spsa0

  stm #000fh, spsd0 ; #0009h写入srgr10,时钟周期clkg=6.4mhz

  stm #7, spsa0

  stm #300fh, spsd0 ; #3010h写入srgr20,帧周期为16个clkg

  stm #0eh,spsa0

  stm #0a04h, spsd0 ; #0a04h写入pcr0,fsx, clkx输出,fsr,clkr输入

  ;=====初始化串口1=====

  串口1的初始化程序参见串口0

  ;=====启动接收=======

  stm #0,spsa0

  stm #0001h, spsd0 ;启动串口0接收

  stm #1,spsa0

  stm #00c0h, spsd0 ;内部产生时钟产生fsg

  stm #0,spsa1

  stm #0001h, spsd1 ;启动串口1接收

  stm #1,spsa1

  stm #00c0h, spsd1 ;内部产生时钟产生fsg

  ;==串口0接收中断子程序===

  .sect "brint0"

  host_brint0:

  rsbx intm ;关中断

  ldm drr0,a

  stl a,*ar4+ ; 接收

  ……

  其他处理程序

  rete


  结束语

  本文介绍了两片串行a/d与c5402组成的数据采集系统,该系统硬件连接简单,a/d的采样率可以通过串口时钟灵活设置,通用性强。该数据采集系统已经成功应用到实验室的信号处理系统中,显示出设计灵活、高速、可靠等优点。
返回列表