BF533SPI接口配置
0赞
发表于 3/3/2012 11:28:32 AM
阅读(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;
}
