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

📄 spi.c

📁 这是一个在ADS下编译通过的源码
💻 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"

#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;//向SPI channel 0 发送数据寄存器写数据
		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;         //设置SPI通道0控制寄存器

		if(poldnSPPRE){
			*poldnSPPRE=rSPPRE0;
		}
		rSPPRE0=nSPPRE;			//设置SPI通道0波特率

		if(poldSPPIN){
			*poldSPPIN=rSPPIN0;
		}
		rSPPIN0=SPPIN;			//设置SPI通道0管脚控制寄存器

	}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){
	    /*端口GPE11配置成SPIMISO0*/
		set_gpio_ctrl (GPIO_TC_SPIMISO);
		/*端口GPE12配置成SPIMOSI0*/
		set_gpio_ctrl (GPIO_TC_SPIMOSI);
		/*端口GPE13配置成SPICLK0*/
		set_gpio_ctrl (GPIO_TC_SPICLK);
	}else if (channel == 1) {

	}
}

⌨️ 快捷键说明

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