⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi0.c

📁 ARM7 SPI RC531驱动程序,数据手册
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                                   
**                                    
**                                        
**
**                                 
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: SPI0.c
**创   建   人: 李功周
**最后修改日期: 2008年12月18日
**描        述: SPI0 API 函数 
**              
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 李功周
** 版  本: v1.0
** 日 期: 2008年12月18日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
*/

#include <LPC2103.H>



/*******************************************************************
** 函数名称: void SPI_SendByte()				
** 功能描述: 通过SPI接口发送一个字节			
** 输   入: INT8U byte: 发送的字节				
** 输   出: 无									
**********************************************************************/
void SPI_SendByte(unsigned char byte)
{

	S0SPDR = byte;							/* 发送数据放入SPI数据寄存器 */
   
	while(0 == (S0SPSR & 0x80));				/* 等待SPIF置位,即等待数据发送完毕 */
												/* wait for SPIF being set, that is, wait for finishing of data being send */
 	byte = S0SPDR;
	
}



/**********************************************************************
** 函数名称: INT8U SPI_RecByte()				
** 功能描述: 从SPI接口接收一个字节				
** 输   入: 无									
** 输   出: 收到的字节							
*************************************************************************/
unsigned char SPI_RecByte(void)
{
	S0SPDR = 0xfF;
   
 	while(0 == (S0SPSR & 0x80));				/* 等待SPIF置位,即等待收到数据 */
												/* wait for SPIF being set, that is, wait for being received data */
	return(S0SPDR); 							/* 读取收到的字节 read the byte received */
}



/************************************************************************
函数名称: void SD_SPIDelay()						
** 功能描述: SPI总线延时							 
** 输   入: INT8U value: 延时值,不超过255		    
** 输   出: 无										
*************************************************************************/
void SD_SPIDelay(int value)
{
    int i;

    for (i = 0; i < value; i++)
        SPI_SendByte(0xFF);						 	/* 发送0xFF clock out 0xFF */
}




/****************************************************************************
* 名    称:SPI0Init
* 功    能:SPI初始化。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void SPI0Init(void)
{
	PINSEL0 &= ~((0x03 << 8) + (0x03 << 10) + (0x03 << 12) + (0x03 << 14));
	PINSEL0 |= (0x01 << 8) + (0x01 << 10) + (0x01 << 12) + (0x01 << 14);
	
	S0SPCCR = 128;    						/* 设置SPI时钟分频值为128 */
	
	S0SPCR  = (0 << 3) |				// CPHA = 0, 数据在SCK 的第一个时钟沿采样
 			 (1 << 4) |				// CPOL = 1, SCK 为低有效
 			 (1 << 5) |				// MSTR = 1, SPI 处于主模式
 			 (0 << 6) |				// LSBF = 0, SPI 数据传输MSB (位7)在先
 			 (0 << 7);				// SPIE = 0, SPI 中断被禁止
			 
	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -