小磷光一

BF533SPI接口配置

0
阅读(2694)

 

/****************************************************************************
* 名称 :SPIenable
* 功能 :使能SPI接口
* 入口参数 :无
* 出口参数 :无
****************************************************************************/

void SPIenable(void)
{
	*pSPI_CTL=*pSPI_CTL|SPI_EN;
	asm("ssync;");
}

/****************************************************************************
* 名称 :SPIdisable
* 功能 :关闭SPI接口
* 入口参数 :无
* 出口参数 :无
****************************************************************************/ 

void SPIdisable(void)
{
	*pSPI_CTL &=~SPI_EN;
	asm("ssync;");
}

/****************************************************************************
* 名称 :SPIsend
* 功能 :发送SPI数据
* 入口参数 :dat:发送的数据
* 出口参数 :无
****************************************************************************/ 
void SPIsend(uint8_t dat)
{
	*pSPI_TDBR = dat;
	asm("ssync;");
	while(*pSPI_STAT&TXS);
}

/****************************************************************************
* 名称 :SPIReadByte
* 功能 :读SPI数据
* 入口参数 :无
* 出口参数 :*pSPI_RDBR:返回读取的值
****************************************************************************/ 
uint8_t SPIReadByte(void)
{	
	*pSPI_RDBR = 0xff;
	asm("ssync;");
	while(!(*pSPI_STAT&RXS));	
	return (*pSPI_RDBR);
}

/****************************************************************************
* 名称 :SPIinit
* 功能 :初始化SPI控制器 波特率为1M 数据8位 先输出MSB
* 入口参数 :无
* 出口参数 :无
****************************************************************************/ 

void SPIinit(void)
{	
	*pSPI_BAUD=1000; 
	*pSPI_FLG=0x0004;  
	*pSPI_CTL = 0x0400;
	// CPOL =0 high active ;CPHA=1; MSB  fist ; size =8 ;MISO=enable;
	*pSPI_CTL|=MSTR|CPOL|EMISO;
}

/****************************************************************************
* 名称 :SPIMODE_TX
* 功能 :设置SPI 为发送模式
* 入口参数 :无
* 出口参数 :无
****************************************************************************/ 

void SPIMODE_TX(void)
{
	*pSPI_CTL = *pSPI_CTL|TIMOD_TX;
	asm("ssync;");	
	udelay(0x3ff);
}

/****************************************************************************
* 名称 :SPIMODE_RX
* 功能 :设置SPI 为接收模式
* 入口参数 :无
* 出口参数 :无
****************************************************************************/ 

void SPIMODE_RX(void)
{
	*pSPI_CTL = *pSPI_CTL&TIMOD_RX;
	asm("ssync;");
	udelay(0x3ff);
}

/****************************************************************************
* 名称 :SPIMenable
* 功能 :设置SPI 主器件模式允许
* 入口参数 :无
* 出口参数 :无
****************************************************************************/ 

void SPIMenable(void)
{
	*pSPI_CTL=*pSPI_CTL|SPI_EN ;  
}

/****************************************************************************
* 名称 :Drv_SPI_write
* 功能 :SPI写数据函数
* 入口参数 :val :数据
* 出口参数 :无
****************************************************************************/ 
void Drv_SPI_write(int val)
{
	*pFIO_FLAG_S = PF2;
	while(*pSPI_STAT & TXS);
	*pSPI_FLG = FLG2;
	*pSPI_TDBR = val;
	*pSPI_FLG = FLS2;
}