⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evmlogic.c

📁 个人所写TMS320VC5509外部接口源程序。包含有EMIF.C,EVMLOGIC.C,INTELFLASH.C,SDRAD.C,TIMER.C
💻 C
📖 第 1 页 / 共 5 页
字号:
/*
 *  Copyright (C) 2001, Spectrum Digital, Inc.  All Rights Reserved.
 */
 
#include "5509.h"
#include "util.h"

#define LATCH_ADDR     ((volatile unsigned *)0x401000)

#define FLASH_BASE     0x200000

#define  N  256

extern  short   receive_channel_m1[N];
extern  short   receive_channel_m2[N];
extern  short   receive_channel_m3[N];
extern  short   transmit_channel_m[N];
extern  short   transmit_channel_p[N];
extern  short   plut_buffer[N];
extern  short   sin_buffer[N];
extern  short   cos_buffer[N];


void Logic_SetPage(unsigned int highaddr)
{
    *LATCH_ADDR = highaddr;
}

void Logic_ReadFlash(unsigned long addr)
{
    
    /*
    *LATCH_ADDR = (addr >> 12 & 0xff);
    return *((unsigned short *)(FLASH_BASE + (addr & 0x0fff)));
    */
    
    asm(" AMAR *(#401000h),XAR3 ");
    asm(" SFTL AC0,#-12,AC0 ");
    asm(" AND #255,AC0,AC0 ");
    asm(" MOV AC0,*AR3 ");
    
    asm(" AMAR *(#200000h),XAR3 ");
    asm(" MOV dbl(*sp(#00h)),AC0 ");
    asm(" AND #4095,AC0,AC1 ");
    asm(" MOV AR3,AC0 ");
    asm(" ADD AC1,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV *AR3,T0 ");
    
}

void Logic_WriteFlash(unsigned long addr, unsigned int data)
{
    /*
    *LATCH_ADDR = (addr >> 12 & 0xff);
    *((unsigned short *)(FLASH_BASE + (addr & 0x0fff))) = data;  
    */
    
    asm(" AMAR *(#401000h),XAR3 ");
    asm(" SFTL AC0,#-12,AC0 ");
    asm(" AND #255,AC0,AC0 ");
    asm(" MOV AC0,*AR3 ");
    
    asm(" AMAR *(#200000h),XAR3 ");
    asm(" MOV dbl(*sp(#00h)),AC0 ");
    asm(" AND #4095,AC0,AC1 ");
    asm(" MOV AR3,AC0 ");
    asm(" ADD AC1,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV *sp(#02h),AR1 ");
    asm(" MOV AR1,*AR3 ");
        
}

void Sin_load(void)
{   
  unsigned long addr;
  unsigned long i; 
 
  addr = 0x00080000;
    
  for(i = 0; i < 65536; i++)
  {
              
    asm(" MOV #255,T0 ");
    
    Logic_WriteFlash(addr, 0x00ff);
      
    Logic_ReadFlash(addr);
    
    asm(" AMAR *(#040000h),XAR3 ");
    asm(" MOV #4<<16,AC0 ");
    asm(" ADD dbl(*sp(#02h)),AC0,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV T0,*AR3 ");
        
    addr++;
          
  }
   
  asm(" AMAR *(#000000h),XAR3 ");
  
}
void Cos_load(void)
{
  unsigned long addr;
  unsigned long i; 
 
  addr = 0x00090000;
    
  for(i = 0; i < 65536; i++)
  {
              
    asm(" MOV #255,T0 ");
    
    Logic_WriteFlash(addr, 0x00ff);
      
    Logic_ReadFlash(addr);
    
    asm(" AMAR *(#050000h),XAR3 ");
    asm(" MOV #5<<16,AC0 ");
    asm(" ADD dbl(*sp(#02h)),AC0,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV T0,*AR3 ");
        
    addr++;
          
  }
  
  asm(" AMAR *(#000000h),XAR3 "); 
}

void MLUT_load(void)
{
  unsigned long addr;
  unsigned long i; 
 
  addr = 0x000a0000;
    
  for(i = 0; i < 32768; i++)
  {
              
    asm(" MOV #255,T0 ");
    
    Logic_WriteFlash(addr, 0x00ff);
      
    Logic_ReadFlash(addr);
    
    asm(" AMAR *(#060000h),XAR3 ");
    asm(" MOV #6<<16,AC0 ");
    asm(" ADD dbl(*sp(#02h)),AC0,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV T0,*AR3 ");
    
    asm(" AMAR *(#080000h),XAR3 ");
    asm(" MOV #8<<16,AC0 ");
    asm(" ADD dbl(*sp(#02h)),AC0,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV T0,*AR3 ");
        
    addr++;
          
  } 
  
  asm(" AMAR *(#000000h),XAR3 ");
  
}

void PLUT_load(void)
{
  
  unsigned long addr;
  unsigned long i; 
 
  addr = 0x000a8000;
    
  for(i = 0; i < 32768; i++)
  {
              
    asm(" MOV #255,T0 ");
    
    Logic_WriteFlash(addr, 0x00ff);
      
    Logic_ReadFlash(addr);
    
    asm(" AMAR *(#070000h),XAR3 ");
    asm(" MOV #7<<16,AC0 ");
    asm(" ADD dbl(*sp(#02h)),AC0,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV T0,*AR3 ");
    
    asm(" AMAR *(#090000h),XAR3 ");
    asm(" MOV #9<<16,AC0 ");
    asm(" ADD dbl(*sp(#02h)),AC0,AC0 ");
    asm(" MOV AC0,AR3 ");
    asm(" MOV T0,*AR3 ");
        
    addr++;         
  } 
  
  asm(" AMAR *(#000000h),XAR3 ");
}
void Hsp50215_init(void)
{
   
   asm(" AMAR *(#400014h),XAR3 ");
   asm(" MOV #0,*AR3+ ");           /* pucdata[20] = 0;*/
   asm(" MOV #0,*AR3 ");            /* pucdata[21] = 0;*/ 
   asm(" AMAR *(#400002h),XAR3 ");  
   asm(" MOV #020h,*AR3+ ");        /* pucdata[2] = 0x0020;*/
   asm(" MOV #0h,*AR3 ");           /* pucdata[3] = 0;*/
   asm(" MOV #0h,*AR3+ ");          /* pucdata[3] = 0;*/
   asm(" MOV #01d70h,*AR3+ ");      /* pucdata[4] = 0x1d70;*/
   asm(" MOV #0a3d7h,*AR3 ");       /* pucdata[5] = 0xa3d7;*/
   asm(" AMAR *(#400010h),XAR3 ");
   asm(" MOV #00ch,*AR3+ ");        /* pucdata[16] = 0x000c;*/
   asm(" MOV #0ffh,*AR3+ ");        /* pucdata[17] = 0x00ff;*/
   asm(" MOV #006h,*AR3+ ");		/* pucdata[18] = 0x0006;*/				
   asm(" MOV #03fh,*AR3 ");         /* pucdata[19] = 0x003F;*/
   asm(" AMAR *(#400016h),XAR3 ");   		
   asm(" MOV #0h,*AR3+ ");          /* pucdata[22] = 0;*/
   asm(" MOV #0h,*AR3 ");  	        /* pucdata[23] = 0;*/
   
   asm(" AMAR *(#400200h),XAR3 ");
   asm(" AMAR *(#400300h),XAR4 ");
   
   asm(" MOV #1h,*AR3+ ");          /* pucdata[512]= 1;*/ 
   asm(" MOV #1h,*AR4+ ");          /* pucdata[768]= 1;*/
   
   asm(" MOV #16,*AR3+ ");          /* pucdata[513]= 16;*/ 
   asm(" MOV #16,*AR4+ ");          /* pucdata[769]= 16;*/
   
   asm(" MOV #14,*AR3+ ");          /* pucdata[514]= 14;*/ 
   asm(" MOV #14,*AR4+ ");          /* pucdata[770]= 14;*/
   
   asm(" MOV #20,*AR3+ ");          /* pucdata[515]= 20;*/ 
   asm(" MOV #20,*AR4+ ");          /* pucdata[771]= 20;*/
   
   asm(" MOV #27,*AR3+ ");          /* pucdata[516]= 27;*/ 
   asm(" MOV #27,*AR4+ ");          /* pucdata[772]= 27;*/
   
   asm(" MOV #34,*AR3+ ");          /* pucdata[517]= 34;*/ 
   asm(" MOV #34,*AR4+ ");          /* pucdata[773]= 34;*/
   
   asm(" MOV #43,*AR3+ ");          /* pucdata[518]= 43;*/ 
   asm(" MOV #43,*AR4+ ");          /* pucdata[774]= 43;*/
   
   asm(" MOV #52,*AR3+ ");          /* pucdata[519]= 52;*/ 
   asm(" MOV #52,*AR4+ ");          /* pucdata[775]= 52;*/
   
   asm(" MOV #62,*AR3+ ");          /* pucdata[520]= 62;*/ 
   asm(" MOV #62,*AR4+ ");          /* pucdata[776]= 62;*/
   
   asm(" MOV #72,*AR3+ ");          /* pucdata[521]= 72;*/ 
   asm(" MOV #72,*AR4+ ");          /* pucdata[777]= 72;*/
   
   asm(" MOV #82,*AR3+ ");          /* pucdata[522]= 82;*/ 
   asm(" MOV #82,*AR4+ ");          /* pucdata[778]= 82;*/
      
   asm(" MOV #91,*AR3+ ");          /* pucdata[523]= 91;*/ 
   asm(" MOV #91,*AR4+ ");          /* pucdata[779]= 91;*/
   
   asm(" MOV #99,*AR3+ ");          /* pucdata[524]= 99;*/ 
   asm(" MOV #99,*AR4+ ");          /* pucdata[780]= 99;*/
   
   asm(" MOV #106,*AR3+ ");         /* pucdata[525]= 106;*/ 
   asm(" MOV #106,*AR4+ ");         /* pucdata[781]= 106;*/
   
   asm(" MOV #110,*AR3+ ");         /* pucdata[526]= 110;*/ 
   asm(" MOV #110,*AR4+ ");         /* pucdata[782]= 110;*/
   
   asm(" MOV #112,*AR3+ ");         /* pucdata[527]= 112;*/ 
   asm(" MOV #112,*AR4+ ");         /* pucdata[783]= 112;*/
   
   asm(" MOV #110,*AR3+ ");         /* pucdata[512+1*16]= 110;*/ 
   asm(" MOV #110,*AR4+ ");         /* pucdata[768+1*16]= 110;*/
   
   asm(" MOV #106,*AR3+ ");         /* pucdata[513+1*16]= 106;*/ 
   asm(" MOV #106,*AR4+ ");         /* pucdata[769+1*16]= 106;*/
   
   asm(" MOV #96,*AR3+ ");          /* pucdata[514+1*16]= 110;*/ 
   asm(" MOV #96,*AR4+ ");          /* pucdata[770+1*16]= 110;*/
   
   asm(" MOV #83,*AR3+ ");          /* pucdata[515+1*16]= 83;*/ 
   asm(" MOV #83,*AR4+ ");          /* pucdata[771+1*16]= 83;*/
   
   asm(" MOV #65,*AR3+ ");          /* pucdata[516+1*16]= 65;*/ 
   asm(" MOV #65,*AR4+ ");          /* pucdata[772+1*16]= 65;*/
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -