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

📄 spi.c

📁 博创时s3c2410试验箱的ad转换实验 值得下载
💻 C
字号:
/***************************************************************************\
	Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
	by threewter	2005.2.26
\***************************************************************************/
/***************************************************************************\
    #说明: spi接口驱动程序
	----------------------------------  Bug  --------------------------------------

	----------------------------------  TODO list  --------------------------------------

	----------------------------------修正--------------------------------------

	2005-2-26	创建

\***************************************************************************/

//#include "../ucos-ii/includes.h"
#include "../inc/spi.h"
#include "../inc/reg2410.h"
#include "../inc/lib.h"
#include "../inc/bitfield.h"

#define GPIO_TC_SPIMISO		(GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E11)
#define GPIO_TC_SPIMOSI		(GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E12)
#define GPIO_TC_SPICLK		(GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E13)

void SPISend ( unsigned char val, int channel )
{


	if ( channel == 0 ){
		rSPTDAT0 = val;
		while (!(rSPSTA0 & 1));
	}else if ( channel == 1 ){
		rSPTDAT1 = val;
		while (!(rSPSTA1 & 1));
	}
	
	
}

unsigned char SPIRecv ( int channel )
{
	if (channel == 0){
		return rSPRDAT0;
	}else if (channel == 1) {
		return rSPRDAT1;
	}else
		return 0xff;
}

void Set_SIO_mode(int channel, int nSPCON, int nSPPRE, int SPPIN,
		int *poldnSPCON, int *poldnSPPRE, int *poldSPPIN)
{	
	if(channel==0){
		if(poldnSPCON){
			*poldnSPCON=rSPCON0;
		}
		rSPCON0=nSPCON;

		if(poldnSPPRE){
			*poldnSPPRE=rSPPRE0;
		}
		rSPPRE0=nSPPRE;

		if(poldSPPIN){
			*poldSPPIN=rSPPIN0;
		}
		rSPPIN0=SPPIN;
	}else if(channel == 1){
		if(poldnSPCON){
			*poldnSPCON=rSPCON1;
		}
		rSPCON1=nSPCON;

		if(poldnSPPRE){
			*poldnSPPRE=rSPPRE1;
		}
		rSPPRE1=nSPPRE;

		if(poldSPPIN){
			*poldSPPIN=rSPPIN1;
		}
		rSPPIN1=SPPIN;
	}else 
		return;

	hudelay(1);
}

void SPI_initIO(int channel)
{
	if (channel == 0){
		set_gpio_ctrl (GPIO_TC_SPIMISO);
		set_gpio_ctrl (GPIO_TC_SPIMOSI);
		set_gpio_ctrl (GPIO_TC_SPICLK);
	}else if (channel == 1) {

	}
}

void SPI_init(void)
{SPI_initIO(0);
	Set_SIO_mode(0, SPCON_SMOD_POLL | 
		SPCON_ENSCK | SPCON_MSTR |SPCON_CPOL_HIGH | 
		SPCON_CPHA_FMTA, 33, 2, NULL, NULL, NULL);
}

⌨️ 快捷键说明

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