📄 fuction.h
字号:
#include "dsk5416.h"
#include "5416.h"
typedef float f32;
typedef long s32;
typedef int s16;
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
s16 m;
void init_board(void)
{
*(volatile u16*)CLKMD=0x0000;
while(*(volatile u16*)CLKMD&0x0001){};
*(volatile u16*)CLKMD=0x9807; //定义pll时钟模块中的时钟配置
//PLL MODE,PLLCOUNT=1111 1110,PLLMUL=9
//DSP_CLK=16*2.25=36M
asm(" nop");
asm(" nop");
*(volatile u16*)PMST=0x00A0;//0X00A0; //DROM=0,OVLY=1,MP/MC=0,中断向量表定位在0x0001
*(volatile u16*)SWWSR=0x7fff;//0X8FFF; //0x7fff
*(volatile u16*)SWCR=0x0001; //0x0001
*(volatile u16*)BSCR=0xC002;//0x8006;//0X8802;
//DIVFCT=10,CLKOUT=DSPCLK/3=12M
}
void init_mcbsp(void)
{
//**************McBSP2 initialise**************//
*(volatile u16*)SPSA_ADDR2=SPCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x2000;
*(volatile u16*)SPSA_ADDR2=SPCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x0200;
*(volatile u16*)SPSA_ADDR2=RCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x0340;
*(volatile u16*)SPSA_ADDR2=RCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x0340;
*(volatile u16*)SPSA_ADDR2=XCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x00340;//340
*(volatile u16*)SPSA_ADDR2=XCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x00340;//340
*(volatile u16*)SPSA_ADDR2=MCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x0001;
*(volatile u16*)SPSA_ADDR2=MCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x0001;
*(volatile u16*)SPSA_ADDR2=PCR_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x0003;
*(volatile u16*)SPSA_ADDR2=RCERA_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x0005;
*(volatile u16*)SPSA_ADDR2=XCERA_SUBADDR;
*(volatile u16*)SPSD_ADDR2=0x000A;
;//************McBSP1(SPI mode) initialise********//
*(volatile u16*)SPSA_ADDR1=SPCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x1821;//1021
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR1=SPCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x0061;//0x0061;
asm(" rpt #6");
asm(" nop");
//-------------------------------------
*(volatile u16*)SPSA_ADDR1=RCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x0040;//0x0340;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR1=RCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x0041;//0x0340;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR1=XCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x0040;//0x0040;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR1=XCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x0041;//0x0040;41
asm(" rpt #6");
asm(" nop");
//------------------------------------
*(volatile u16*)SPSA_ADDR1=SRGR1_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x0003;//0x1F00;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR1=SRGR2_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x2000;
asm(" rpt #6");
asm(" nop");
//----------------------------------------
*(volatile u16*)SPSA_ADDR1=PCR_SUBADDR;
*(volatile u16*)SPSD_ADDR1=0x0b08;//FSXM,CLKX均由内部时钟源获得?0x1F00;00ae
asm(" rpt #6");
asm(" nop");
;//************McBSP0(I2C mode) initialise*********//
*(volatile u16*)SPSA_ADDR0=SPCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR0=0x0080;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR0=XCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR0=0x0140;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR0=XCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR0=0x0140; //0140
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR0=PCR_SUBADDR;
*(volatile u16*)SPSD_ADDR0=0x0007;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR0=SPCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR0=0x00c0;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR0=RCR1_SUBADDR;
*(volatile u16*)SPSD_ADDR0=0x0140;
asm(" rpt #6");
asm(" nop");
*(volatile u16*)SPSA_ADDR0=RCR2_SUBADDR;
*(volatile u16*)SPSD_ADDR0=0x0140;//0140
asm(" rpt #6");
asm(" nop");
}
void init_aic23(void)
{
unsigned int codec_buf[11]={0x1E00,0x0117,0x0317,0x05F9,0x07F9,0x0812,0x0A00,0x0C00,0x0E53,0x108D,0x1201};
//0x0ea3:AIC23设 为从 模式? ?dsp格式0e23 083a:bypass(enable,D3),sidetone(enable,D5)
//1080:clkout=6M,clkin=12M,fs=48k;;108d:8k;;10af:8.021k;;1099:32k;;10a3:44.1k;;109d:96k;
*(volatile u16*)SPSA_ADDR1=SPCR2_SUBADDR; //enable mcbsp1 send
*(volatile u16*)SPSD_ADDR1|=0x0001;
asm(" nop");
*(volatile u16*)SPSA_ADDR1=SPCR2_SUBADDR;
for(m=0;m<11;m++)
{
while(!((*(volatile u16*)SPSD_ADDR1)&0X0002)){};//bit1(XRDY) of SPCR2 equals equals 1?
*(volatile u16*)DXR1_ADDR1=codec_buf[m]; //
asm(" nop");
//*(volatile u16*)SPSA_ADDR1=SPCR2_SUBADDR;
//while((*(volatile u16*)SPSD_ADDR1)&0X0004){};//bit4(XEMPTY) of SPCR2 equals equals 0?
}
asm(" nop");
}
void init_pcm3002(void)
{
DSK5416_CODEC_CLK=0x09; //set the sample rate at 44.1KHz: 0x00
asm(" nop"); //12KHz :0x09
asm(" nop");
DSK5416_MISC=0x00;
asm(" nop");
asm(" nop");
DSK5416_PCM3002_L=0x28; //register0
DSK5416_PCM3002_H=0x01;
while(!(DSK5416_MISC&0x80)){};
DSK5416_PCM3002_L=0x28; //register1
DSK5416_PCM3002_H=0x03;
while(!(DSK5416_MISC&0x80)){};
DSK5416_PCM3002_L=0xA0; //register2
DSK5416_PCM3002_H=0x04;
while(!(DSK5416_MISC&0x80)){};
DSK5416_PCM3002_L=0x00; //register3
DSK5416_PCM3002_H=0x06;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -