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

📄 ssp.c

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

#define		SCK0	(1 << 15)	// SCK0  与 P0.15复用
#define		SSEL0	(1 << 16)	// SSEL0 与 P0.16复用
#define		MISO0	(1 << 17)	// MISO0 与 P0.17复用
#define		MOSI0	(1 << 18)	// MOSI0 与 P0.18复用

/*********************************************************************************************************
**函数名称:SSP_Init
**函数功能:初始化SSP控制器
**入口参数:Type	通信格式
**					0--SPI
**					1--SSI
**					2--Microwire
**			MODE	模式位
**					0		从机
**					非0		主机
**			F_ssp	SSP通信速率
**			INT_En	SSP中断使能控制字节,按位来操作
**					bit0--接收溢出中断
**					bit1--超时中断
**					bit2--Rx FIFO至少有一半为满时,产生中断
**					bit3--Tx FIFO至少有一半为空时,产生中断
**出口参数:无
**说明:在SPI模式下,默认CPHA=0,CPOL=1,数据位数默认为8位
**		通信速率限制在Fpclk/(254*256)~Fpclk/2
**		如果通信格式参数错误,则默认为SPI格式。
********************************************************************************************************/
#define SSPCR1_SSE	1 << 1			// SSP使能
void  SSP_Init(void)
{
	PCONP |= (1 << 21);			    		// 在外设功率控制寄存器里使能SSP外设,默认情况下,该外设已被使能
	/* 初始化P1.20、P1.21、P1.23、P1.24为SSP接口引脚,不用另外的IO口作从机选择线,直接用SSEL1完成片选595的功能*/
	
	PINSEL3 |= (0x03 << 8)|(0x03 << 10)|(0x03 << 14)|(0x03 << 16);    
	/* 设置数据长度为8位,帧格式SPI,总线空闲时时钟线为高电平,第一个时钟沿采样,位速率为默认值。 */
    SSP0CR0  = 0x00000047;
    SSP0CPSR = 0x02;			    		// 设置SSP从Pclk获得的分频值,主模式下有效, 最小值为0x02
    SSP0CR1  = SSPCR1_SSE;		   			// 设置SSP为主机模式,不使用回写模式,并使能
}
/*********************************************************************************************************
**函数名称:uint8	SSP_SendByte(uint8	data)
**函数功能:SSP接口向总线发送1字节数据
**入口参数:data	待发送的数据
**出口参数:接收到的数据
********************************************************************************************************/
uint8	SSP_SendByte(uint8	data)
{
	while ( (SSP0SR & 0x02) == 0 );		// 等待发送FIFO留出空间  
	SSPDR = data;	
	while((SSPSR & 0x01) == 0);			//等待TFE置位,即发送FIFO空
	return(SSPDR);
}
/*********************************************************************************************************
**函数名称:uint8	SSP_RcvByte(void)
**函数功能:SSP接口从总线接收1字节数据
**入口参数:无
**出口参数:接收到的数据
********************************************************************************************************/
uint8	SSP_RcvByte(void)
{
	while((SSPSR & 0x04) == 0);			//等待RFF置位,即接收FIFO不为空
	return(SSPDR);
}

⌨️ 快捷键说明

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