/********************************************/
/* IIS.c : IIS module test sources .*/
/* Author : YZ */
/* Time : 2006-9-13 */
/********************************************/
#include "iis.h"
#include <stdlib.h>
#include <stdio.h>
#include "common.h"
#include "cfIdedma.h"
#define nodma
//#define open_file
// A 48 point, 20 bit sine table
const int sinewave[] = { 0x00000, 0x10B51, 0x2120F, 0x30FBB, 0x3FFFF, 0x4DEBD, 0x5A826, 0x658C8, 0x6ED9D, 0x7641A,
0x7BA36, 0x7EE79, 0x7FFFE, 0x7EE79, 0x7BA36, 0x7641A, 0x6ED9D, 0x658C8, 0x5A826, 0x4DEBD,
0x3FFFF, 0x30FBB, 0x2120F, 0x10B51, 0x00000, 0xEF4AF, 0xDEDF1, 0xCF045, 0xC0001, 0xB2143,
0xA57DA, 0x9A738, 0x91263, 0x89BE6, 0x845CA, 0x81187, 0x80002, 0x81187, 0x845CA, 0x89BE6,
0x91263, 0x9A738, 0xA57DA, 0xB2143, 0xC0001, 0xCF045, 0xDEDF1, 0xEF4AF };
//this function is used to delay several ms
void apSleep(unsigned int msec)
{
unsigned int utimer, etimer, ttimer;
utimer = 0;
etimer = 0xFFFF - 1000;
ttimer = SLEEP_TIMEOUT;
*TIMER0_CTRL = 0x00;
*TIMER0_LOAD = 0xFFFF;
// Wait for timer to be loaded
while((*TIMER0_LOAD != 0xFFFF) && ttimer)
ttimer--;
// Wait for timer to count down
*TIMER0_CTRL = 0x80;
do
{
if((*TIMER0_VALUE & 0xFFFF) < etimer)
{
*TIMER0_LOAD = 0xFFFF;
utimer++;
}
}while(utimer<msec);
}
void playback()
{
unsigned short temp;
int loop,i, time,t;
FILE *fp;
//static unsigned long play_buffer[90000];
unsigned short *play_buffer;
*PIN = 0x80;
*IIS_CR0=0x032f;
*IIS_CR1=0x0002;
*IIS_IMSC=0x000f;
#ifndef nodma
*IIS_DMACR=0x0003;
#endif
*IIS_CPSR=0x0004;
#ifdef open_file
if ((fp = fopen("C:\\play.pcm","rb"))==NULL)
{
printf("error for fopen play\n");
return;
}
play_buffer=(unsigned short *)malloc(0x200000*(sizeof(char)));
if (play_buffer==NULL)
{
printf(" error for alloc play_buffer\n");
return ;
}
for (i=0;i<0x100000;i++)
fread(&play_buffer[i],2,1,fp);
fclose(fp);
#else
play_buffer=(unsigned short *)malloc(0x1000*(sizeof(char)));
if (play_buffer==NULL)
{
printf(" error for alloc play_buffer\n");
return ;
}
for( i = 0; i<4096; i++)
{
if(t<48)
{
play_buffer[i] = sinewave[t]>>4;
t++;
}
else
{
t=0;
play_buffer[i] =sinewave[t]>>4;
}
}
#endif
printf("begin for play\n");
#ifdef nodma
// Generate a 1kHz 1 second tone (sinewave) on each channel
// Frequency is defined by CODEC (48kHz).
// while(0){
for (time = 0; time < 8000; time++)
{
for (loop = 0; loop < 48; loop++)
{
// Wait for TX FIFO not to be full then write left and right channels
temp = (sinewave[loop] >> 4);
//apSleep(1);
// while((!(*IIS_SSR & 0x0002)) && time < 4000);
// *IIS_SDR = (time < 4000) ? 0 : 0;
*IIS_SDR = 0;
// apSleep(1);
//while((!(*IIS_SSR & 0x0002)) && time < 4000);
// *IIS_SDR = (time < 4000) ? temp : temp;
*IIS_SDR = temp;
}
}
// }
for(temp=0;temp<1000;temp++)
{
for (i=0;i<0x100000;i++)
{
// while(!(*IIS_SSR & 0x1));
while(!(*IIS_MIS & 0x8));
*IIS_SDR = *(play_buffer+i);
}
}
#else
while(1)
{
SetDMA(0, (unsigned long)play_buffer, (unsigned long)IIS_SDR ,0x1000);
WaitDMA();
*IIS_SDR = 0;
}
#endif
}
void record()
{
int loop;
FILE *fp;
FILE *fp2;
static unsigned short data1[90000];
static unsigned short data2[90000];
unsigned short temp1;
*PIN = 0x80;
*IIS_CR0=0x011f;
*IIS_CPSR=0x0008;
*IIS_IMSC=0x0004;
*IIS_CR1=0x0002;
fp = fopen("C:\\recordl.pcm","wb");
fp2 = fopen("C:\\recordr.pcm","wb");
for (loop = 0; loop < 90000; loop++)
{
// Wait for TX FIFO not to be full then write left and right channels
while(!(*IIS_MIS & 0x4));
data2[loop] = *IIS_SDR;
data1[loop] = *IIS_SDR;
}
fwrite(data1, sizeof(short), 90000, fp);
fwrite(data2, sizeof(short), 90000, fp2);
fclose(fp);
fclose(fp2);
}
TLV320AIC31_test.rar_TLV320AIC31_TLV320AIC31_test_TLV320AIC31_te
版权申诉
5星 · 超过95%的资源 93 浏览量
2022-09-21
03:58:50
上传
评论
收藏 85KB RAR 举报
四散
- 粉丝: 49
- 资源: 1万+
最新资源
- 基于matlab实现电力系统仿真计算软件包,包括潮流计算,最优潮流计算等.rar
- 基于matlab实现电力系统各种故障波形仿真,单相接地故障,两相间短路,两相接地短路,三相短路等.rar
- 基于matlab实现电动汽车动力性,爬坡性,续驶里程等性能仿真.rar
- Python动态烟花代码.pdf
- 基于matlab实现串口发送接收数据 可配置端口,波特率等 发送可选择ASCII方式或HEX方式
- matlab基于BP神经网络手写字母识别(单一).zip代码9
- 基于matlab实现编写的串口调试工具,数据接收部分采用中断方式,保证了实时的数据显示
- 基于matlab实现39节点电力系统合闸角调控过程中的机组和负荷的灵敏度计算.rar
- HBase数据库性能调优
- 原生微信小程序源码 - -首字母排序选择
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈