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

📄 spi.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)*****************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: SSP.c
**创   建   人: 
**最后修改日期: 
**描        述: LPC2400硬件SSP软件包,包含主机和从机的操作
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 	zhangbin
** 版  本: 	v1.00
** 日 期: 	2007-3-30
** 描 述: 	LPC2400硬件SSP软件包,包含主机和从机的操作
** 说明:	只对SSP0进行了设置
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 	Li Baihua
** 版  本: 	v1.01
** 日 期: 	2008-07-01
** 描 述: 	LPC2400硬件SPI软件包,包含主机和从机的操作
** 说明:	只对SPI进行了设置
**------------------------------------------------------------------------------------------------------
**********************************************************************************************************/

#include  	"config.h" 

#define 	SPI_CS       	(1 << 16) 									/* P0.16口为片选脚				 */
#define		CE_Low()		(IO0CLR |=  SPI_CS)							/* 选中从器件					 */
#define     CE_High()		(IO0SET |=  SPI_CS)			

const uint32 LED_TBL[] = 
{
	0xFF, 0x00,															/* 全部熄灭后,再全部点亮		 */
	0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,						/* 依次逐个点亮					 */
	0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF,						/* 依次逐个叠加					 */
	0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01,						/* 依次逐个递减					 */
	0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81,						/* 两个靠拢后分开				 */
	0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81						/* 从两边叠加后递减				 */ 
};

/**********************************************************************************************************
** 函数名称:  Delay
** 函数功能:  长软件延时
** 入口参数:  dly	延时参数,值越大,延时越久
** 出口参数:  无
**********************************************************************************************************/
void  Delay(uint32  dly)
{  
    uint32  i = 0;
    for (; dly > 0; dly--) 
        for (i = 0; i < 5000; i++);
}

/**********************************************************************************************************
** 函数名称:  SPIInit															
** 功能说明:  初始化LPC2400系列ARM的SPI引脚及寄存器				
** 入口参数:  无																
** 出口参数:  无																
**********************************************************************************************************/
void  SPIInit(void)
{  
	/* 初始化SPI引脚 */
	PINSEL0  =	0;		
   	IO0DIR 	|=  SPI_CS;													/* 设置SPI的片选引脚			 */
   	PINSEL0	|= 	0xc0000000;												/* 设置P0.15脚为SCK脚			 */
   	PINSEL1	&=	(~(0x03));												/* 设置P0.16引脚为SPI引脚		 */
   	PINSEL1	 =	(0x03 << 2) | (0x03 << 4);								/* 设置P0.17、P0.18引脚为SPI引脚 */
		
	/* 初始化SPI寄存器 */		               
   	S0SPCCR  =	0x48;													/* 设置SPI时钟分频				 */	
 	S0SPCR   = 	(0 << 2) |												/* SPI控制器每次传输8位数据		 */
 				(0 << 3) |												/* CPHA = 0, SCK第一个时钟沿采样 */
 				(0 << 4) |												/* CPOL = 0, SCK 为高有效		 */
 				(1 << 5) |												/* MSTR = 1, SPI 处于主模式		 */
 				(1 << 6) |												/* LSBF = 0, SPI 数据传输MSB在先 */
 				(0 << 7);												/* SPIE = 0, SPI 中断被禁止		 */
}

/**********************************************************************************************************
** 函数名称:  SPISndByte													
** 函数功能:  通过硬件SPI接口发送一个字节					
** 入口参数:  data															
** 出口参数:  无																
**********************************************************************************************************/
void SPISndByte(uint8 data)
{
   	volatile unsigned long temp = 0;
    CE_Low();
    S0SPDR = data;
    while (0 == (S0SPSR & 0x80));										/* 等待SPIF置位,数据发送完毕	 */
	temp   = S0SPSR;													/* 通过读S0SPSR,清除SPIF标志	 */
	CE_High();
}

⌨️ 快捷键说明

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