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

📄 boot.c

📁 双CPU BOOTLOADER 综合实验,不用烧写工具 将.out文件转换成.hex文件烧写到flash里
💻 C
字号:
/*
;***********************************************************************
;*				  						 北京达盛科技有限公司
;*                                     	    研    发    部
;*
;*                                 	http://www.techshine.com
;*
;*--------------------------------------------- 文件信息 ---------------                                      
;*
;* 文件名称 : boot.C	
;* 文件功能 : 该文件为专家4实验系统的综合程序,CPU=TMS320VC5402
;*            拨码开关SW2 : 
;             1-ON、2-ON、3-ON、4-ON:ADCLK=250KHZ,LCD 串行
*/
//---------------------------------------------------------------------
//--------------CPU1\CPU2通讯说明
//---------------------------------------------------------------------
//CPU1         1F80 = 0000H  空循环
//                  = 1111H  IO实验  ,CPU2发送过来的数据在1400H的低8位
//                  = 2222H  DTMF实验,CPU2发送过来的数据从1400H的开始的102个单元
//                  = 3333H  语音回放
//                  = 4444H  语音低通
//             IF90 = 5555    CPU1准备好,CPU2可以传输数据给CPU1
//                  = AAAA    CPU1没准备好,CPU2不可以传输数据给CPU1
//
//             1FA0 = 5555    CPU2已经完成数据传输
//                  = AAAA    CPU2正在数据传输
//---------------------------------------------------------------------
 
//------------------头文件--------------------------------------
#include "DspRegDefine.h"   //VC5402 寄存器定义
#include "math.h"           //数学计算定义
#include "stdio.h"          //标准输入输出借口定义

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

#define UCHAR               unsigned char
#define UINT16 				unsigned int
#define UINT32 				unsigned long

#define TRUE     			1
#define FALSE    			0

#define OUTH                0x0000    //LED输出亮
#define OUTL                0xffff    //LED输出灭

#define pi 3.1415927
#define Length 102
#define Len 8

//---------------------------------------------------------
/*   端口定义 */
//---------------------------------------------------------

//--------------IO------------------------------

ioport UINT16 port8008;       //IO输出地址,LED

//---------------------------------------------------------
/*   全局变量定义 */
//---------------------------------------------------------

//---------------------TIMER0----------------------------
UINT16  TIMER=0,TIMER1=0;       //TIMER中断次数计数器 
UCHAR   TFLAG = 1;              //初始化TIMER中断标志TFLAG =1
UINT16  show = 0;              
//---------------------HPI------------------------------

int  *DAT = (int *)0x1400; //CPU2传送到CPU1的数据的开始地址

UINT16  *COM = (UINT16 *)0x1F80; //CPU2传送给CPU1的命令

UINT16  *RDY1 = (UINT16 *)0x1F90;//CPU1准备好信号

UINT16  *RDY2 = (UINT16 *)0x1FA0;//CPU2准备好信号

//--------------------------------------------------------
UINT16  TCOM,TRDY1,TRDY2,TDAT;
//---------------------DTMF-------------------------------
double indtmf[Length];
double vk[Len][Length],vs1[Len],vs2[Len],v[3],s[Len],z[Len];
double fr0,fr1,fr2,fr3,fc0,fc1,fc2,fc3,fs,fr,fc;
double m1,m0,max1,max2;
char outkey;
//---------------------AIC23-------------------------------  
	int   read_data2,read_data1;    //MCBSP1 接收数据变量
	int   write_data2,write_data1;  //MCBSP1 发送数据变量
	UINT16  readaudio1[256],readaudio2[256];//MCBSP1 接收数据变量数组
	UCHAR   flag;
	
    int in[256], out[256];            //输入原始数据、输出处理后的数据
    double fs = 8000;                 //采样频率
    double nlpass = 0.028;            //通带截止频率
    double nlstop = 0.228;            //阻带起始频率
    double a[3],b[3],x,y;             //滤波器参数
    int in[256],out[256];
/*
**********************************************************************
          *************** 所使用的函数原型 *****************
**********************************************************************
*/

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

void Delay(UINT16 numbers);       //延迟

//--------------T0-----------------------------------------------
void set_t0();      //设置T0的寄存器 
interrupt void Tint0();//T0中断程序
//----------------------------------------------------------------

//---------------AIC23--------------------------------------------
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 biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[]);
//巴特沃斯低通滤波器参数计算程序
//--------------------------------DTMF--------------------------
void dtmf(void);  //DTMF解码程序


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

//--------------------------------------------------------------------
// 函数名称 : 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

⌨️ 快捷键说明

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