示例#1
0
文件: spi.c 项目: dozencrows/KiMony
uint8_t spiRead()
{
    while ((SPI_S_REG(SPI1) & SPI_S_SPTEF_MASK) == 0)
        ;
    SPI_DL_REG(SPI1) = 0;
    while ((SPI_S_REG(SPI1) & SPI_S_SPRF_MASK) == 0)
        ;
    return SPI_DL_REG(SPI1);
}
示例#2
0
文件: spi.c 项目: dozencrows/KiMony
void spiWrite(uint8_t byte)
{
    while (!(SPI_S_REG(SPI1) & SPI_S_SPTEF_MASK))
        ;
    SPI_DL_REG(SPI1) = byte;
    while ((SPI_S_REG(SPI1) & SPI_S_SPRF_MASK) == 0)
        ;
    SPI_DL_REG(SPI1);
}
示例#3
0
文件: SPI.c 项目: forbelief/KL25EM
//==============================================================================
//函数名称:SPI_sendonebyte.
//功能说明:SPI发送一字节数据。
//函数参数:SPI_No:串口号。
//       :ch:需要发送的一字节数据。
//函数返回:0:发送失败;1:发送成功。
//==============================================================================
uint_8 SPI_sendonebyte(uint_8 SPI_No,uint_8 ch)
{
	uint_32 i;
	SPI_MemMapPtr baseadd=SPI_baseadd(SPI_No);
	while(!SPI_S_REG(baseadd)&SPI_S_SPTEF_MASK);
	SPI_D_REG(baseadd)=ch;
	for(i=0;i<0xFFF0;i++)		//在一定时间内发送不能完成,则认为发送失败。
	{
		if(SPI_S_REG(baseadd)&SPI_S_SPTEF_MASK)
		{
			return(1);
		}
	}
	return(0);
}
示例#4
0
文件: SPI.c 项目: forbelief/KL25EM
//==============================================================================
//函数名称:SPI_sendstring.
//功能说明:SPI发送数据。
//函数参数:SPI_No:串口号。
//       :*p:所发数据的首地址。
//函数返回:无。
//==============================================================================
void SPI_sendstring(uint_8 SPI_No,uint_8 *p)
{
	SPI_MemMapPtr baseadd=SPI_baseadd(SPI_No);
	uint_32 k;
	for(k=0;p[k]!='\0';k++)
	{
		while(!SPI_S_REG(baseadd)&SPI_S_SPTEF_MASK);
			SPI_D_REG(baseadd)=p[k];
	}
}
示例#5
0
文件: SPI.c 项目: forbelief/KL25EM
//==============================================================================
//函数名称:SPI_receiveN.
//功能说明:SPI接收数据。当n=1时,就是接受一个字节的数据……
//函数参数:SPI_No:SPI口号。
//		 : n:要接收的字节个数。
//       :data[]:接收到的数据。
// 函数返回:1:接收成功,其他情况:失败。
//==============================================================================
uint_8 SPI_receiveN(uint_8 SPI_No,uint_32 n,uint_8 data[])
{
	SPI_MemMapPtr baseadd=SPI_baseadd(SPI_No);
	uint_32 m=0;
	while(m<n)
	{
		if(SPI_S_REG(baseadd)&SPI_S_SPRF_MASK)
		{
			data[m]=SPI_D_REG(baseadd);
			m++;
		}
	}
	return(1);
}
示例#6
0
文件: SPI.c 项目: forbelief/KL25EM
//==============================================================================
//函数名称:SPI_reonebyte.
//功能说明:SPI接收一个字节的数据
//函数参数:SPI_No:SPI口号。
//函数返回:接收到的数据。
//==============================================================================
uint_8 SPI_reonebyte(uint_8 SPI_No)
{
	SPI_MemMapPtr baseadd=SPI_baseadd(SPI_No);
	while(!(SPI_S_REG(baseadd)& SPI_S_SPRF_MASK));	//检测SPI1是否收到了数据。
	return SPI_D_REG(baseadd);				
}