main.c
来自「F2812实现电机控制源程序.rar」· C语言 代码 · 共 112 行
C
112 行
/*********************************************************************
** Module Name: AUDIO **
** Author: Cbq **
** Version: 1.0 **
** CreateDate: 2008-05-22 **
** Description: **
** Remark: Huozq **
** Revision History: 2008-11-10 **
**********************************************************************/
/*********************************************************************
** 实验目的:通过学习音频实验,了解DSP的MCBSP的应用 **
** 实验说明:我们从原理图可看到,TLV320AIC23的9,10脚分别用做PHONE的 **
** 左右声道输出端,17,18脚用做MIC的输入端,21脚用做了片选. **
** 23,24分别用SPI的2线制作为控制信号的输入端.3,4,5,6,7是 **
** 做为AUDIO数据的基准时钟,串行数据输出,串行数据输入,帧同 **
** 步输入,帧同步输出端,这些都是由DSP的MCBSP引出的.这里大 **
** 家可以翻开我们提供的手册,来查看具体的管脚说明. **
** 实验结果:运行程序,可以听到警报声。 **
**********************************************************************/
#include "DSP28_Device.h"
Uint16 volume;
int ADbuf[500];
int DA_wptr,DA_rptr,y;
int play_mode; //模式选择,录音还是放音。为0是连续放音,警报声;选1是边录音边放。
//MCLK=12M,BCLK=2M,FSOUT/FSIN=44.1K
unsigned int * SIAdd = (unsigned int *) 0x4600;
//bit0->CS bit1->Data bit2->SCLK
void main(void)
{
Uint16 temp,i;
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE矢量表*/
InitPieVectTable();
InitPeripherals();
InitAic23();
delay(5000);
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.MRINTA = &ISRMcbspSend;
EDIS; // This is needed to disable write to EALLOW protected registers
IER |= M_INT6;
PieCtrl.PIEIER6.bit.INTx5 = 1;//McBSP接收中断
// Enable global Interrupts and higher priority real-time debug events:
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
play_mode = 0;
* SIAdd=0x0001;
while(1)
{
for(temp=30000;temp>0;temp-=100)
{
for(i=0;i<2;i++)
{
y=20000;
delay(temp);
y=-20000;
delay(temp);
}
}
}
}
interrupt void ISRMcbspSend(void)
{
int temp;
PieCtrl.PIEACK.all = 0xFFFF;
PieCtrl.PIEIFR6.bit.INTx5 = 0;
ERTM;
temp=McbspRegs.DRR1.all;
DA_rptr++;
if(DA_rptr>=500)
DA_rptr=0;
ADbuf[DA_rptr]=temp; //保存录音数据
if(play_mode==0)
McbspRegs.DXR1.all = y; //警报声的幅值
else
McbspRegs.DXR1.all = temp; //放音
}
//========================== NO MORE ===========================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?