网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C5000 >> 文章正文
  中低速数据采集系统:数据滤波程序代码         ★★★ 【字体:
中低速数据采集系统:数据滤波程序代码
作者:61IC    文章来源:本站原创    点击数:    更新时间:2007-1-17    

 

*******************************************************************

基于TMS320C5409中低速数据采集系统:数据滤波程序代码

硬件组成:

DSP芯片:TMS320C5409

AD转换器:TLV1571

DA转换器:TLVTLC7528

Flash:SST29LE010

*******************************************************************

 

    .mmregs
             .ref     filter_start
K_DATA_SIZE       .set     256            ;输入数据个数
K_BUFFER_SIZE  .set     8    ;缓冲大小,必须是大于a和b并且是2的整数次幂
K_STACK_SIZE  .set     256   ;堆栈大小
K_A              .set     3               ;滤波器a参数的个数
K_B              .set     4               ;滤波器b参数的个数
K_CIR            .set    K_BUFFER_SIZE

STACK    .usect "stack",K_STACK_SIZE
SYSTEM_STACK   .set  K_STACK_SIZE+STACK

DATA_DP       .usect "filter_vars",0
filterdata     .usect "filter_vars",K_DATA_SIZE
bufferdatay   .usect "filter_vars",K_BUFFER_SIZE*2
bufferdatax   .usect "filter_vars",K_BUFFER_SIZE*2
         
           .data
           .global   inputdata

           .text
           .asg AR2,ORIGIN
           .asg AR3,INPUT
           .asg AR4,FILTER
           .asg AR5,OUTPUT
START:
           SSBX   FRCT
           SSBX   INTM
           LD     #DATA_DP,DP
           STM    #STACK,SP
           CALL   filter_start
           NOP
           NOP
           NOP
LOOP
           B       LOOP                      

          .def    b1,b2,b3,a1,a2
          .def    filter_start
b1        .set    1456H          ;b1=0.1589
b2        .set    3D07H          ;b2=0.4768 
b3        .set    3D07H          ;b3=0.4768
b4        .set    1456H          ;b4=0.1589
a1        .set    -103AH         ;a1=-0.1268
a2        .set    430FH          ;a2=0.5239
a3        .set    -1016H         ;a3=-0.1257
         
          .text
filter_start:
          STM    #K_CIR,BK
          STM    #1,AR0                   ;设置循环缓冲区大小和步长
          STM    #inputdata,ORIGIN
          STM    #bufferdatax,INPUT
          STM    #bufferdatay,FILTER
          STM    #filterdata,OUTPUT
                                                   ;初始化
       RPT    #K_A-1                             ;系数 a1,a2,a3 的个数
       MVDD  *ORIGIN+,*INPUT+0%          ;初始化头3 个Ys   
       STM    #bufferdatax,INPUT
                                           ;设置初始化滤波数据
       RPT     #K_A-1                        ;系数a1,a2,a3的个数
       MVDD  *INPUT+0%,*FILTER+0%              ;初始化3 个Ys   
   STM    #bufferdatay,FILTER
          STM    #bufferdatax,INPUT
                         ;滤波
          STM    #K_DATA_SIZE-3-1,BRC           ;设置块循环计数器
          RPTB   filter_end-1                      ;头3个值直接通过
          MVDD  *ORIGIN+,*INPUT        
       RPT    #K_B-1-1                         ;系数b1,b2,b3, b4的个数
       MAR   *INPUT-0%                    ;调整输入到相应位置
          MPY    *INPUT+0%,#b4,B             ;计算B=b4*x(i)
          LD     B,A
          MPY   *INPUT+0%,#b3,B                  ;计算B=b3*x(i+1)
          ADD    B,A
          MPY    *INPUT+0%,#b2,B                 ;计算B=b2*x(i+2)
          ADD     B,A
          MPY    *INPUT+0%,#b1,B                 ;计算B=b1*x(i+3)
          ADD    B,A                               ;计算y(x+3)=A
          MPY    *FILTER+0%,#a3,B                   ;计算B=y(i)*a3
          ADD    B,A                           ;计算A=A+B 
          MPY    *FILTER+0%,#a2,B          ;计算B=y(i+1)*a2
          ADD    B,A                               ;计算A=A+B 
          MPY    *FILTER+0%,#a1,B                   ;计算B=y(i+2)*a1
          ADD    B,A                              ;计算y(x+3)=A+B
          STH    A,*FILTER-0%                   ;为下一次滤波保存数据
          STH    A,*OUTPUT+             ;输出数据到OUTPUT的下一个单元
          MAR    *FILTER-0%            ;调整滤波器到相应位置
filter_end:  NOP    
          RET
          .end                            ;程序代码结束

*******************************

vectors.asm为以上程序需要的文件

*******************************

        .sect    ".DISPLAY1"
      .ref     start
     .def      reset

k_stack_size .set   200
k_stack  .usect  "stack_section",k_stack_size
system_stack .set   k_stack+k_stack_size

   .word   08aah  ;INDICATE 8BITS PARALLEL BOOT MODE
  .word   7fffh  ;VALUE FOR SWWSR
  .word   0f000h  ;VALUE FOR BSCR
  .word   0000h  ;xpc for entry point
  .word    0200h      ;pc for entry point
  .word   01e0h  ;size of first section
  .word   0000h  ;xpc for first section
  .word   0100h  ;pc for first section

reset:  b    start
          stm  #3000h,sp   
       
nmi:   rete
    nop
    nop
    nop

sint17          .space 4*16
sint18          .space 4*16
sint19          .space 4*16
sint20          .space 4*16
sint21          .space 4*16
sint22          .space 4*16
sint23          .space 4*16
sint24          .space 4*16
sint25          .space 4*16
sint26          .space 4*16
sint27          .space 4*16
sint28          .space 4*16
sint29          .space 4*16
sint30          .space 4*16

int0:    rete
         nop
  nop
  nop
int1: rete
  nop
  nop
  nop
int2: rete
  nop
  nop
  nop
tint0:    rete
         nop
  nop
  nop
brint0:  rete
  nop
  nop
  nop  
bxint0: rete
  nop
  nop
  nop  
dmac0:  rete
  nop
  nop
  nop
dmac1:  rete
  nop
  nop
  nop
int3: rete
  nop
  nop
  nop
hpint:   rete
  nop
  nop
  nop
dmac2:  rete
  nop
  nop
  nop
bxint1:  rete
  nop
  nop
  nop
dmac4:  rete
  nop
  nop
  nop
dmac5:  rete
  nop
  nop
  nop
RESERVED: .space 880H

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    中低速数据采集系统:AD/DA联…
    中低速数据采集系统:FLAS中…
    中低速数据采集系统:Flash程…
    中低速数据采集系统:DA测试…
    中低速数据采集系统:AD测试…
    中低速数据采集系统:AD测试…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号