各们大哥帮帮忙!关于tms320vc5402与tlv320aic23的接口设计,我有C的程序(程序如下),但我看不懂,有谁看得的,望能帮我解释一下,我在此感谢不尽!
#include "cpu_reg.h"
int ms,f=1; int DA_wptr,DA_rptr,y; int Flag = 0; int play_mode;
void main() {
unsigned int temp,i;
asm(" STM #0000h,CLKMD "); while(*CLKMD & 0x01 ); asm(" STM #40c7h,CLKMD "); /* 40C7h:5*clkin =100M 30c7h:4*clkin =80M 20c7h:3*clkin =60M 10C7h:2*clkin =40M */
asm(" stm #4240h, SWWSR "); //2 wait except for on-chip program 1 asm(" stm #00a0h, PMST "); //MP/MC = 0, IPTR = 001,ovly=1 asm(" stm #0802h, BSCR "); asm(" STM #0h,IMR "); asm(" STM #0010h,TCR "); //关定时器 asm(" STM #0186ah,PRD ");//1ms asm(" STM #0C2fh,TCR "); //TCR=最后四位 asm(" STM #0008h,IFR "); asm(" ORM #0008h,*(IMR) ");/*开时间中断*/ DA_wptr=0; DA_rptr=0; McBsp0_init(); //串口初始化 asm(" RSBX INTM "); /*开中断*/ play_mode=0; //发警报声 while(1) { for(temp=30000;temp>0;temp-=100) for(i=0;i<2;i++) { y=5000; delay(temp); y=-5000; delay(temp); } } }
interrupt void timer0() { ms++; }#include "cpu_reg.h"
int ADbuf[500]; extern int DA_wptr,DA_rptr,y; extern int play_mode;
void write_subreg0(unsigned int addr,unsigned int val); unsigned int read_subreg0(unsigned int addr);
unsigned int read_subreg0(unsigned int addr) { *(SPSA0)=addr; return(*SPSD0); } void write_subreg0(unsigned int addr,unsigned int val) { *(SPSA0)=addr; *(SPSD0)=val; }
void McBsp0_init() {
write_subreg0(SPCR1,0); write_subreg0(SPCR2,0);
write_subreg0(SPCR1,SPCR10_VAL); write_subreg0(SPCR2,SPCR20_VAL); write_subreg0(PCR,PCR0_VAL);
write_subreg0(RCR1,RCR10_VAL); write_subreg0(RCR2,RCR20_VAL); write_subreg0(XCR1,XCR10_VAL); write_subreg0(XCR2,XCR20_VAL); delay(10); *(DXR10)=0; /*now enable McBSP transmit and receive*/ write_subreg0(SPCR1,SPCR10_VAL|1); write_subreg0(SPCR2,SPCR20_VAL|1); delay(10); *(IMR)|=0x0010; //开接收0中断 }
void delay(int k) { while(k--); }
interrupt void codec_ch0_in() //接收0中断 { int temp; temp=*DRR10; DA_rptr++; if(DA_rptr>=500) DA_rptr=0;
ADbuf[DA_rptr]=temp; //保存录音数据 if(play_mode==0) *DXR10=y; //警报声的幅值 else *DXR10=temp; //放音
}
|