?? uda1341ts.c
字號:
#include "vxWorks.h"
#include "iv.h"
#include "stdlib.h"
#include "sysLib.h"
#include "intLib.h"
#include "errno.h"
#include "ioLib.h"
#include "stdio.h"
#include "logLib.h"
#include "wrSbcArm9.h"
#include "UDA1341TS.h"
#ifndef BSP_44B0_LITTLE_ENDIAN
#define BSP_44B0_LITTLE_ENDIAN
#endif
#undef _TEST_CODEC_DMA_
#define IIS_RECORD 1
#define IIS_PLAY 0
#define U32 unsigned int
#define L3BUS_MODE_CFG (0x56000020)
#define L3BUS_CLK_CFG (0x56000020)
#define L3BUS_DATA_CFG (0x56000030)
#define L3BUS_MODE_DATA (0x56000024)
#define L3BUS_CLK_DATA (0x56000024)
#define L3BUS_DATA_DATA (0x56000034)
#define L3BUS_MODE_PLUP (0x56000028)
#define L3BUS_DATA_PLUP (0x56000038)
#define rL3CFG_MODE (*(volatile unsigned *)0x56000020)
#define rL3CFG_CLK (*(volatile unsigned *)0x56000020)
#define rL3CFG_DATA (*(volatile unsigned *)0x56000030)
#define rL3DATA_MODE (*(volatile unsigned *)0x56000024)
#define rL3DATA_CLK (*(volatile unsigned *)0x56000024)
#define rL3DATA_DATA (*(volatile unsigned *)0x56000034)
#define rL3_MODE_PLUP (*(volatile unsigned *)0x56000028)
#define rL3_DATA_PLUP (*(volatile unsigned *)0x56000038)
#define L3MODE_CLR 0xfffcffff
#define L3MODE_OUT 0x00010000
#define L3CLK_CLR 0xcfffffff
#define L3CLK_OUT 0x10000000
#define L3DATA_CLR 0xffffffcf
#define L3DATA_OUT 0x00000010
#define L3DATA_IN 0x00000000
#define L3MODE_LOW 0xfeff
#define L3MODE_HIGH 0x0100
#define L3CLK_LOW 0xbfff
#define L3CLK_HIGH 0x4000
#define L3DATA_LOW 0xfffb
#define L3DATA_HIGH 0x0004
#define UDA1314_IISCON (0x55000000)
#define UDA1314_IISMOD (0x55000004)
#define UDA1314_IISPSR (0x55000008)
#define UDA1314_IISFCON (0x5500000c)
#ifdef BSP_44B0_LITTLE_ENDIAN
#define UDA1314_IISFIFO (0x55000010)
#else
#define UDA1314_IISFIFO (0x55000012)
#endif
#define rIIS_GPEC (*(volatile unsigned *)0x55000040)
#define rIIS_GPED (*(volatile unsigned *)0x55000044)
#define rIIS_GPEU (*(volatile unsigned *)0x55000048)
#define rIIS_CONFREG (*(volatile unsigned *)0x55000000)
#define rIIS_MODREG (*(volatile unsigned *)0x55000004)
#define rIIS_PSRREG (*(volatile unsigned *)0x55000008)
#define rIIS_FCONREG (*(volatile unsigned *)0x5500000c)
#ifdef BSP_44B0_LITTLE_ENDIAN
#define rIIS_FIFREG (*(volatile unsigned short *)0x55000010)
#else
#define rIIS_FIFREG (*(volatile unsigned short *)0x55000012)
#endif
#ifdef BSP_44B0_LITTLE_ENDIAN
#define IIS_FIFREG ((volatile unsigned short *)0x55000010)
#else
#define IIS_FIFREG ((volatile unsigned short *)0x55000012)
#endif
#define IIS_INTER_ENABLE (0x001)
#define IIS_PRES_ENABLE (0x002)
#define IIS_TR_LRCLK_GEN (0x1f7)
#define IIS_RC_LRCLK_GEN (0x1fb)
#define IIS_TR_DMA_ENABLE (0x020)
#define IIS_RC_DMA_ENABLE (0x010)
#define IIS_INTER_DISABLE (0x1fe)
#define IIS_PRES_DISABLE (0x1fd)
#define IIS_TR_LRCLK_NGEN (0x008)
#define IIS_RC_LRCLK_NGEN (0x004)
#define IIS_TR_DMA_DISABLE (0x1ef)
#define IIS_RC_DMA_DISABLE (0x1df)
#define IIS_CLK_CLR (0x1fc)
#define IIS_CLK_16 (0x1fc)
#define IIS_CLK_32 (0x001)
#define IIS_CLK_48 (0x002)
#define IIS_MCLK_256 (0x1fb)
#define IIS_MCLK_384 (0x004)
#define IIS_SDB_8 (0x1f7)
#define IIS_SDB_16 (0x008)
#define IIS_LOW_LEFT (0x1df)
#define IIS_HIGH_LEFT (0x020)
#define IIS_TR_MODE_CLR (0x13f)
#define IIS_NTR_MODE (0x13f)
#define IIS_RECV_MODE (0x040)
#define IIS_TR_MODE (0x080)
#define IIS_TR_RECV_MODE (0x0c0)
#define IIS_MASTER_MODE (0x0ff)
#define IIS_SLAVE_MODE (0x100)
#define IIS_TR_FIFO_EN (0x2000)
#define IIS_TR_FIFO_DIS (0xdfff)
#define IIS_RC_FIFO_EN (0x1000)
#define IIS_RC_FIFO_DIS (0xefff)
#define IIS_TR_FIFO_NOR_MODE (0x7fff)
#define IIS_TR_FIFO_DMA_MODE (0x8000)
#define IIS_RC_FIFO_NOR_MODE (0xbfff)
#define IIS_RC_FIFO_DMA_MODE (0x4000)
#define rIIS_DISRC1 (*(volatile unsigned *)0x4b000040)
#define rIIS_DISRCC1 (*(volatile unsigned *)0x4b000044)
#define rIIS_DIDST1 (*(volatile unsigned *)0x4b000048)
#define rIIS_DIDSTC1 (*(volatile unsigned *)0x4b00004c)
#define rIIS_DCON1 (*(volatile unsigned *)0x4b000050)
#define rIIS_DSTAT1 (*(volatile unsigned *)0x4b000054)
#define rIIS_DCSRC1 (*(volatile unsigned *)0x4b000058)
#define rIIS_DCDST1 (*(volatile unsigned *)0x4b00005c)
#define rIIS_DMASKTRIG1 (*(volatile unsigned *)0x4b000060)
#define rIIS_DISRC2 (*(volatile unsigned *)0x4b000080)
#define rIIS_DISRCC2 (*(volatile unsigned *)0x4b000084)
#define rIIS_DIDST2 (*(volatile unsigned *)0x4b000088)
#define rIIS_DIDSTC2 (*(volatile unsigned *)0x4b00008c)
#define rIIS_DCON2 (*(volatile unsigned *)0x4b000090)
#define rIIS_DSTAT2 (*(volatile unsigned *)0x4b000094)
#define rIIS_DCSRC2 (*(volatile unsigned *)0x4b000098)
#define rIIS_DCDST2 (*(volatile unsigned *)0x4b00009c)
#define rIIS_DMASKTRIG2 (*(volatile unsigned *)0x4b0000a0)
typedef struct tagIISDeviceST
{
int recvCount;
int sndCount;
int iisTaskId;
int semCount;
}IIS_DEVICE_ST;
IIS_DEVICE_ST gIISDevice;
void UDA1341Delay(char count)
{
int i=1000;
int n;
for(n=0;n<count;n++)
{
i--;
}
}
#if 1
void L3busInit();
void IISbusInit();
void Uda1341Init(char mode);
void Uda1341SndData();
void Uda1341RecvData();
void L3busAddrTran(char addrVal);
void L3busDataTran(char dataVal , int halt);
void IISDmaInit();
void Uda1341DmaSndData();
void Uda1341DmaRecvData();
void IISDmaRecvIntProc(IIS_DEVICE_ST *iisDev);
void IISDmaSndIntProc(IIS_DEVICE_ST *iisDev);
int LoadFiletoAddr(char *pFileName, char *pAddr);
#endif
char dmaRecvBuf[10][1024];
char dmaSndBuf[1024];
void IISTaskProc()
{
int i=0;
int j=0;
while(1)
{
if(gIISDevice.semCount>0)
{
printf("\r\nr%ds%d" ,gIISDevice.recvCount,gIISDevice.sndCount);
#if 0
if(gIISDevice.bufCount == 0)
{
for(i=0 ; i<2 ;i++)
{
printf("\r\n");
for(j=0;j<10;j++)
{
printf("%02x ",dmaRecvBuf[9][i*10+j]);
}
}
printf("\r\n");
}
else
{
for(i=0 ; i<2 ;i++)
{
printf("\r\n");
for(j=0;j<10;j++)
{
printf("%02x ",dmaRecvBuf[gIISDevice.bufCount-1][i*10+j]);
}
}
printf("\r\n");
}
#endif
gIISDevice.semCount--;
}
}
}
void CodecModInit()
{
gIISDevice.recvCount= 0;
gIISDevice.sndCount =5;
gIISDevice.semCount = 0;
/*
if (usrTffsConfig (0, 0, "/tffs0/vxworks") == ERROR)
{
printf ("usrTffsConfig failed.\n");
return;
}
else
ioDefPathSet("/tffs0/");
*/
L3busInit();
IISbusInit();
Uda1341Init(IIS_RECORD);
IISDmaInit();
#ifdef _TEST_CODEC_DMA_
gIISDevice.iisTaskId =taskSpawn("iisTask" , 120 , 0 , 0x4000,
(FUNCPTR) IISTaskProc, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0);
if(gIISDevice.iisTaskId <= 0)
{
logMsg("\r\n Start iis task failure\n" , 0 , 0,0,0,0,0);
return;
}
#endif
logMsg("\r\n CodecModInit\n" , 0 , 0,0,0,0,0);
}
void L3busInit()
{
rL3CFG_MODE &= L3MODE_CLR;
rL3CFG_MODE |= L3MODE_OUT;
rL3CFG_CLK &= L3CLK_CLR;
rL3CFG_CLK |= L3CLK_OUT;
rL3CFG_DATA &=L3DATA_CLR;
rL3CFG_DATA |= L3DATA_OUT;
rL3DATA_MODE |= L3MODE_HIGH;
rL3DATA_CLK |= L3CLK_HIGH;
rL3_MODE_PLUP |= 0x0100;
rL3_MODE_PLUP |= 0x4000;
rL3_DATA_PLUP |= 0x0004;
}
void IISbusInit()
{
rIIS_GPEC &= 0xfffffc00;
rIIS_GPEC |= 0x000002aa;
rIIS_GPEU |= 0x1f;
rIIS_CONFREG |=IIS_PRES_ENABLE;
rIIS_CONFREG &=IIS_INTER_DISABLE;
rIIS_CONFREG &=IIS_TR_LRCLK_GEN&IIS_RC_LRCLK_GEN;
rIIS_CONFREG &= IIS_TR_DMA_DISABLE &IIS_RC_DMA_DISABLE;
rIIS_MODREG &=IIS_CLK_CLR&IIS_TR_MODE_CLR&IIS_MCLK_256&IIS_LOW_LEFT\
&IIS_MASTER_MODE;
rIIS_MODREG |=IIS_CLK_32|IIS_SDB_16|IIS_TR_MODE;
rIIS_PSRREG = (0x17<<5) +0x17;
rIIS_FCONREG &=IIS_TR_FIFO_NOR_MODE&IIS_RC_FIFO_NOR_MODE;
rIIS_FCONREG &=IIS_TR_FIFO_DIS|IIS_RC_FIFO_DIS;
}
void Uda1341Init(char mode)
{
rL3DATA_MODE |= L3MODE_HIGH;
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_DATA &= L3DATA_LOW;
L3busAddrTran(0x14+2);
L3busDataTran(0x60 , 0);
L3busAddrTran(0x14+2);
L3busDataTran(0x20 , 0);
L3busAddrTran(0x14+2);
L3busDataTran(0x83 , 0);
}
void L3busAddrTran(char addrVal)
{
int i = 0;
rL3DATA_MODE &= L3MODE_LOW;
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_DATA &= L3DATA_LOW;
UDA1341Delay(6);
for(i =0 ; i< 8 ; i++)
{
if(addrVal&0x01)
{
rL3DATA_CLK &= L3CLK_LOW;
rL3DATA_DATA |= L3DATA_HIGH;
UDA1341Delay(3);
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_DATA |= L3DATA_HIGH;
UDA1341Delay(3);
}
else
{
rL3DATA_CLK &= L3CLK_LOW;
rL3DATA_DATA &= L3DATA_LOW;
UDA1341Delay(3);
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_DATA &= L3DATA_LOW;
UDA1341Delay(3);
}
addrVal >>=1;
}
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_MODE |= L3MODE_HIGH;
rL3DATA_DATA &= L3DATA_LOW;
}
void L3busDataTran(char dataVal , int halt)
{
int i = 0;
int j = 0;
if(halt)
{
rL3DATA_MODE &= L3MODE_LOW;
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_DATA &= L3DATA_LOW;
UDA1341Delay(3);
}
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_MODE |= L3MODE_HIGH;
UDA1341Delay(3);
for(i =0 ; i< 8 ; i++)
{
if(dataVal&0x01)
{
rL3DATA_CLK &= L3CLK_LOW;
rL3DATA_DATA |= L3DATA_HIGH;
UDA1341Delay(3);
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_DATA |= L3DATA_HIGH;
UDA1341Delay(3);
}
else
{
rL3DATA_CLK &= L3CLK_LOW;
rL3DATA_DATA &= L3DATA_LOW;
UDA1341Delay(3);
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_DATA &= L3DATA_LOW;
UDA1341Delay(3);
}
dataVal>>=1;
}
rL3DATA_CLK |= L3CLK_HIGH;
rL3DATA_MODE |= L3MODE_HIGH;
rL3DATA_DATA &= L3DATA_LOW;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -