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

📄 serial.c

📁 在S3C44B0X ARM处理器上用C语言实现的IIS接口驱动程序
💻 C
字号:
/*************************************************************************
* File Name:Serial.c
* Description:主文件。该程序实现了延时播放录音的功能。
*			   S3C44B0x工作频率为20.5MHz,IIS总线CODECLK为2.048MHz,
*			   CODECLK为256fs(采样频率)。
*			   对IISFIF寄存器必须以Sizeof(int)为单位操作。因此,缓
*              冲区是int类型。
* Date:2008-6-07
*************************************************************************/
#include "ISR.h"
#include "Uart.h"
#include "I2S.h"
#include "DMA.h"

#define buflen 0x8000		//单个缓冲区长度为32k*sizeof(int)字节

//缓冲区有两个,共64k*sizeof(int)字节
int iisbuf1[buflen]; 
int iisbuf2[buflen];

char flag;  	//用于标志当前被处理的缓冲区
char flag1;		//标志BDMA0中断是否发生
int count;

/*
*************************************************************************************************************
- 函数名称 : int main(void)
- 函数说明 : 主程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
int main()
{
	uart_init( );		// Uart初始化
	isr_init( );		// 中断控制器初始化

	dma_init( );		//DMA初始化
	UDA1341_init( );	//UDA1341芯片初始化
    i2s_init( );		//I2S总线初始化

	count = 0;flag = 0;flag1 = 0;

	while(1)			// 循环,等待标志置位并播放
	{
		if ((flag==0) && (flag1 == 1))//处理iisbuf2的数据
		{
			if ((IISFIFCON & (0xF<<4))<=(0x3<<4))
			{
				IISFIF = iisbuf2[count];
				count += 1;
				if (count >= buflen) {count = 0;flag1 = 0;}
			}
		}
		else//处理iisbuf2的数据
		if ((flag==1) && (flag1 == 1))
		{
			if ((IISFIFCON & (0xF<<4))<=(0x3<<4))
			{
				IISFIF = iisbuf1[count];
				count += 1;
				if (count >= buflen) {count = 0;flag1 = 0;}
			}
		}
	}
}

⌨️ 快捷键说明

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