📄 iis_down.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 + -