?? scu2spi.c
字號:
#include <string.h>
#include "board.h"
#include "bspcomm.h"
#include "bspspec.h"
#include "bspspi.h"
#include "scu2spi.h"
#include "sdev.h"
static void Delaynns(ULONG ns)
{
volatile int p=0;
ns/=100;
while(ns-- > 0)p++;
}
static int ScuSpiRead(void *pDataBuf,void *pBuf, int MaxLen)
{
return BDRead(pDataBuf,(char *)pBuf,MaxLen);
}
static int ScuSpiWrite(void *pDataBuf,void *pBuf, int MaxLen)
{
int ret=BDWrite(pDataBuf,(char *)pBuf,MaxLen);
if(ret>=0)S_SPICommandReg = BIT7;
return ret;
}
static int ScuSpiCntrl(void *pDataBuf, int cmd, void *pParam, int maxlen)
{
int i;
ULONG temp_ulong;
/*PDA *pda= (PDA *)(GetIMMR() & IO_MAP_MASK); */
DataBufStruct *pData=(DataBufStruct *)pDataBuf;
SpiCfgStruct* pCfg =(SpiCfgStruct *)(pData+1);
int ret=SpiCntrl(pDataBuf, cmd, pParam, maxlen);
if(ret!=SDE_UNKNOW_CMD)return ret;
switch(cmd)
{
case SDC_SEL_SLAVE:
if(maxlen!=sizeof(int))return SDE_INVALID_ARG;
if(*(int *)pParam!=0 && *(int *)pParam != 1 && *(int *)pParam != 2)
return SDE_INVALID_ARG;
SET_PD_BIT(7, 1)
SET_PD_BIT(13, 1)
pCfg->ch=*(int *)pParam;
if(pCfg->ch ==0) SET_PD_BIT(7, 0)
else if(pCfg->ch==1) SET_PD_BIT(13, 0)
else return SDE_INVALID_ARG;
break;
case SDC_CLOSE:
if(pCfg->ch==0) SET_PD_BIT(7, 1)
else if(pCfg->ch==1) SET_PD_BIT(13, 1)
else return SDE_INVALID_SLAVE;
break;
case SDC_PROGRAM_MODE:
case SDC_RESET:
if(pCfg->ch==0) SET_PD_BIT(14, 1)
else if(pCfg->ch==1) SET_PD_BIT(15, 1)
else return SDE_INVALID_SLAVE;
break;
case SDC_RUN:
if(pCfg->ch ==0) SET_PD_BIT(14, 0)
else if(pCfg->ch==1) SET_PD_BIT(15, 0)
else return SDE_INVALID_ARG;
break;
default:
return SDE_UNKNOW_CMD;
}/* end of switch(cmd) */
return SDE_OK;
}
char *ScuSpiBspInit(int DEV, char *FreeMemPtr, SpiCfgStruct *cfg)
{
cfg->UncachedBuffer
=AllocUncachedBuffer((cfg->MaxRecvBD+cfg->MaxSendBD)*cfg->MaxBufLen,4);
InstallSD(DEV,ScuSpiRead,ScuSpiWrite,ScuSpiCntrl,FreeMemPtr);
SpiInit(FreeMemPtr, cfg);
FreeMemPtr += sizeof(DataBufStruct)+sizeof(SpiCfgStruct);
memcpy(FreeMemPtr,"**ScuSpi",8);
FreeMemPtr += 8;
return FreeMemPtr;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -