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

📄 frequency.c

📁 学校自己使用的DSP课件
💻 C
📖 第 1 页 / 共 3 页
字号:
/*
;*-------------------------文件信息 ----------------------------                                      
;*
;* 文件名称 : Frequency_show.C	
;* 文件功能 : 该文件为语音频谱图形显示程序,CPU=TMS320VC5402
;*            MCLK = 12.288 MHz,TLV320AIC23=MASTER,液晶屏=LCM12864ZK
;* 接口说明:MCBSP0配置成SPI方式,设置TLV320AIC23的寄存器,
;*           MCBSP1配置成32位方式,和TLV320AIC23交换数据
;*           Port8002=向液晶写入指令的I/O口
;*           Port8003=向液晶写入数据的I/O口
;*-------------------------------------------- 最新版本信息 ------------
;* 文件作者 : 耿文慧,王自宇
;* 创建日期 : 2005/05/25
;*-----------------------------------------------------------------------
*/
//------------------头文件--------------------------------------


#include "DspRegDefine.h"
#include "math.h"
#include "TMS320.H"


//---------------------------------------------------------------
/*
************************************************************
         ****************** 宏定义 ***************
************************************************************
*/
       	 


#define UCHAR  		unsigned char
#define UINT16 		unsigned int

#define Length      256              //FFT变换的长度设定

/*
************************************************************
	****************** 全局变量*******************
************************************************************
*/

    ioport short port8002;                  //写lcd指令地址
    ioport short port8003;                  //写lcd数据地址
	UINT16  read_data2,read_data1;    //MCBSP1 接收数据变量
	UINT16  write_data2,write_data1;  //MCBSP1 发送数据变量
	UCHAR   flag;
	UINT16  readaudio1[Length],readaudio2[Length];//MCBSP1 接收数据变量数组

	double col[Length],pr[Length],pi[Length],fr[Length],fi[Length],mo[128];
           //FFT子函数调用的变量
	int n,k,l,il;
	double xavg;
	int i=0;
	int label=1;
/* 
**********************************************************************
          *************** 所使用的函数原型 *****************
**********************************************************************
*/

void cpu_init(void); //初始化CPU

void aic23_init(void);//初始化TLV320AIC23,设置内部寄存器

void mcbsp0_write_rdy(UINT16 out_data);//MCBSP0发送一个数据

void mcbsp0_init_SPI(void);//MCBSP0设置为SPI模式

void mcbsp0_close(void);//MCBSP0关闭

void mcbsp1_init(void);//MCBSP1初始化

void mcbsp1_write_rdy(UINT16 out_data1,UINT16 out_data2);//MCBSP1发送一个数据32位

void mcbsp1_read_rdy(void);////MCBSP1接收一个数据32位

void mcbsp1_open(void);//MCBSP1打开

void mcbsp1_close(void);//MCBSP1关闭

interrupt void mcbsp1_read(void);//MCBSP1中断接收数据

interrupt void mcbsp1_write(void); //MCBSP1中断发送数据

void Delay(int numbers);       //延迟


void kfft(double pr[Length],double pi[Length],int n,int k,double fr[Length],double fi[Length],int l,int il);

/*
************************************************************************
			*********************** 函数定义 ******************
************************************************************************
*/

//--------------------------------------------------------------------
// 函数名称 : void cpu_init(void)
// 函数说明 : 初始化CPU
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------
void cpu_init(void)

{

	asm(" nop ");
	asm(" nop ");
	asm(" nop ");
//-------------------------------------------------------------------	
//CLKMD DEFINITIONS:	
//    PLLMUL (bit 15-12) - 0000             PLL multiplier = 0 (mult by 1)
//    PLLDIV (bit 11)    -     0            PLL divider = 0 (div by 1)
//    PLLCOUNT (bit 10-3)-      11111111    PLL counter set to max
//    PLLONOFF (bit 2)   -              1   PLL on
//    PLLNDIV (bit 1)    -               1  Select PLL mode
//    PLLSTATUS (bit 1)  -                x PLL Status (read only)
//    ------------------
//                          0000011111111111 = 0x07ff CLKMD=1 X CLKIN
//--------------------------------------------------------------------	
   *(unsigned int*)CLKMD=0x0;         //switch to DIV mode clkout= 1/2 clkin
     while(((*(unsigned int*)CLKMD)&01)!=0);
   *(unsigned int*)CLKMD=0x07ff;      //switch to PLL X 1 mode
//--------------------------------------------------------------------
// ST0  DEFINITIONS:
//  ARP  (bit 15-13) - 000              Auxiliary register pointer
//  TC   (bit 12)    -    1             Test/control flag
//  C    (bit 11)    -     1            Carry is set to 1 if the result of an addition generates a carry; it is cleared to 0 if the
//                                     result of a subtraction generates a borrow.
//  OVA  (bit 10)    -      0           Overflow flag for accumulator A
//  OVB  (bit 9)     -       0          Overflow flag for accumulator B
//  DP   (bit 8-0)   -        00000000  Data-memory page pointer
//    --------------------
//                          0001 1000 0000 0000 =0x1800 Reset value
//--------------------------------------------------------------------
//   *(unsigned int*)ST0=0x1800; 
//--------------------------------------------------------------------
// ST1  DEFINITIONS:
//  BRAF  (bit 15)  - 0                 Block-repeat active flag     
//  CPL   (bit 14)  -  1                Compiler mode   CPL=0 DP;CPL=1 SP
//  XF    (bit 13)  -   1               XF status
//  HM    (bit 12)  -    0              Hold mode
//  INTM  (bit 11)  -     1             Interrupt mode INTM=0,All unmasked interrupts are enabled
//  Reser (bit 10)  -      0            Always read as 0
//  OVM   (bit 9)   -       0           Overflow mode
//  SXM   (bit 8)   -        1          Sign-extension mode
//  C16   (bit 7)   -         0         Dual 16-Bit/double-precision arithmetic mode
//  FRCT  (bit 6)   -          0        Fractional mode
//  CMPT  (bit 5)   -           0       Compatibility mode
//  ASM   (bit 4-0) -            00000  Accumulator shift mode
//    --------------------
//                          0110 1001 0000 0000 =0x2900 Reset value
//--------------------------------------------------------------------
//   *(unsigned int*)ST1=0x6900;
//--------------------------------------------------------------------   
//IPTR DEFINITIONS?
//    IPTR (bit 15-7) -  001111111          Run-time Interrupt vector location = 0x3f80 (for now)
//    MP/~MC (bit 6)  -           1         Turn off internal Instruction ROM (use RAM)
//    OVLY   (bit 5)  -            1        Turn on internal RAM
//    AVIS   (bit 4)  -             1       Address visibility on
//    DROM   (bit 3)  -              0      Data ROM of FF00~FFFF is external 
//    CLKOFF (bit 2)  -               0     Clockout  enabled,only for use clkout=cpu clock
//    SMUL   (bit 1)  -                1    Saturate before multiply on MAC
//    SST    (bit 0)  -                 0   Do not saturate before store
//                      -----------------
//                       0011 1111 1111 0010 = 0x3ff2
//---------------------------------------------------------------------
	
	*(unsigned int*)PMST=0x3FF2;
	
//---------------------------------------------------------------------	
// SWWSR DEFINITIONS?
//    XPA   (bit 15)     - 0                Extended program address control bit. XPA is used in conjunction with the program space fields
//                                          (bits 0 through 5) to select the address range for program space wait states
//    I/O   (bits 14-12) -  111             set to max wait states for seven
//    Data1 (bits 11-9)  -     111          Seven Wait state for Upper data space(0x8000-0xFFFF) 
//    Data2 (bits 8-6)   -        111       Seven Wait states for Lower data space (0x0000 - 0x7FFF)
//    Prog1 (bits 5-3)   -           111    Seven Wait state for Upper program space. (xx8000-xxFFFF)
//    Prog2 (bits 2-0)   -              111 Seven Wait states for Program space. (xx0000-xx7FFF)
//                        -----------------
//                         1 111 111 111 111 111 - 0x7fff
//--------------------------------------------------------------------	
	*(unsigned int*)SWWSR=0x7fff;
//--------------------------------------------------------------------
//SWCR DEFINITIONS?

⌨️ 快捷键说明

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