#include "stdio.h"
#include "string.h"
/*****************************************************************************
函 数 名 : spiInit
功能描述 :
输入参数 : 无
输出参数 : 无
返 回 值 :
修改历史 :
1.日 期 : 2008年8月13日
作 者 : huangxb
修改内容 : 新生成函数
*****************************************************************************/
void spiInit()
{
rGPGCON &= 0xf03fffff;
rGPECON = (2<<26)|(2<<24)|(2<<22); /* 选择端口GPE11-13为MOSI0、MISO0、CLK0 */
rGPEUP &= (~0x3800);
rGPEUP |= (1<<13)|(0<<12)|(0<<11); /* GPEUP-11,12=0;GPEUP-13=1 */
rGPGCON &= 0xffffffcf;
rGPGCON |= (3<<4); /* 设置GPG2为nSS0 */
rGPGUP |= (1<<2); /* 设置GPGUP-2 = 1 */
rSPPRE0 = PCLK/2/ucSpiBaud-1; /* 设置波特率 */
/* 设置SPI控制器为 polling mode,enable ENSCK,master,CPOL=0,CPHA=0,normal mode */
rSPCON0 = (0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);
rSPPIN0 = (0<<2)|(1<<1)|(0<<0); /* Multi Master error detect disable,reserved,release */
}
/*****************************************************************************
函 数 名 : spiSend
功能描述 :
输入参数 : 无
输出参数 : 无
返 回 值 :
修改历史 :
1.日 期 : 2008年8月13日
作 者 : huangxb
修改内容 : 新生成函数
*****************************************************************************/
void spiSend(unsigned char txData)
{
/* 等待发送就绪 */
while (!(rSPSTA0&0x01))
;
rSPTDAT0 = txData;
}
/*****************************************************************************
函 数 名 : spiRecv
功能描述 :
输入参数 : 无
输出参数 : 无
返 回 值 :
修改历史 :
1.日 期 : 2008年8月13日
作 者 : huangxb
修改内容 : 新生成函数
*****************************************************************************/
unsigned char spiRecv()
{
unsigned char rxData;
/* 等待接收就绪 */
while (!(rSPSTA0&0x01));
rxData = rSPRDAT0;
return rxData;
}
/*****************************************************************************
函 数 名 : spiTest
功能描述 :
输入参数 : 无
输出参数 : 无
返 回 值 :
修改历史 :
1.日 期 : 2008年8月13日
作 者 : huangxb
修改内容 : 新生成函数
*****************************************************************************/
void spiTest()
{
unsigned char sendBuf[8];
unsigned char recvBuf[8];
int i;
memset(sendBuf, 0, sizeof(sendBuf));
memset(recvBuf, 0, sizeof(recvBuf));
printf("begin spiTest\n\n");
for (i = 0; i < 8; i++)
printf("send data %x\n", sendBuf[i]);
for (i = 0; i < 8; i++)
spiSend(sendBuf[i]);
for (i = 0; i < 8; i++)
recvBuf[i] = spiRecv();
for (i = 0; i < 8; i++)
printf("recv data %x\n", recvBuf[i]);
printf("\nend spiTest\n");
}
阅读(2093) | 评论(0) | 转发(0) |