Chinaunix首页 | 论坛 | 博客
  • 博客访问: 363835
  • 博文数量: 53
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 1143
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-14 11:53
文章分类

全部博文(53)

文章存档

2011年(1)

2008年(52)

我的朋友

分类:

2008-08-27 21:49:29

#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");
}
阅读(2059) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~