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

📄 iis_down.c

📁 深圳优龙科技LPC2468开发板
💻 C
字号:
/********************************************
 *       HELLO WORLD for JADE-Z228
 *            2006-8-29 LIQM
 *******************************************/

#include "def.h"
#include "LPC24xx.h"                        /* LPC24xx definitions */
#include "i2s.h"

Wave * FoundWave(DWORD addr)
{
	Wave * wave = (Wave *)addr;
	if(wave->friff == 0x46464952 && wave->fwave == 0x45564157 && wave->fdata==0x61746164)
	{
		return wave;
	}
	return 0;
}
#pragma arm section code = "MainEntry"
int main(PUTILS utils)
{
    Wave * wave = FoundWave(0x40005000);
	utils->printf("  IIS test\n");
    if(wave)
    {
    	utils->printf("  length %d\n",wave->len);
    	utils->printf("  format %d\n",wave->format);
    	utils->printf("  channel %d\n",wave->channel);
    	utils->printf("  samplerate %d\n",wave->samplerate);
    	utils->printf("  byterate %d\n",wave->byterate);
    	utils->printf("  tunenum %d\n",wave->tunenum);
    	utils->printf("  bps %d\n",wave->bps);
    }
    else 
    {
    	utils->printf("  use comload 0x40005000 to download wav file first\n");
    	return 0;
    }
    if(wave->bps != 8 && wave->bps != 16)
    {
		utils->printf("  WAV format not support\n");
    }
    else if ( I2SInit(2-wave->channel,wave->samplerate,wave->bps) == FALSE )	
    {
		utils->printf("  Init IIS error\n");
    }
    else
    {
    	DWORD len = (wave->len - 32) >> 2;
    	DWORD * buf = wave->pdata;
    	int shift = wave->bps == 16;
    	while(len--)
    	{
			while (((I2S_STATE >> 16) & 0xFF) == TXFIFO_FULL);
			
			if(shift)
			{
				unsigned short * sbuf = (unsigned short *)buf;
				DWORD value = (*sbuf + 0x8000) +((sbuf[1]+0x8000)<<16);
				I2S_TX_FIFO = value & 0xFFFEFFFE;
				buf++;
			}
			else 
				I2S_TX_FIFO = *buf++;
		}
    }
}

#pragma arm section code 

⌨️ 快捷键说明

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