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

📄 bspi.h

📁 用于arm(STR710系列)对sd卡的操作
💻 H
📖 第 1 页 / 共 2 页
字号:
;** 返 回 值: None
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void BSPI_ClkActiveHigh(BSPI_TYPES_T bspi, CONFIG_STATUS_T new_state)
{
	if(new_state == ENABLE) 
		BSPIx_CSR1(bspi) |= BSPI_CPOL_MASK;
  	else 
  		BSPIx_CSR1(bspi) &= ~BSPI_CPOL_MASK;
}

/*********************************************************************************************************
;** 函数名称: BSPI_FifoDisable
;** 功能描述: 配置BSPI FIFO
;** 
;** 参    数: bspi: 指定的SPI类型(BSPI0, BSPI1)
;**          
;** 返 回 值: None
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void BSPI_FifoDisable(BSPI_TYPES_T bspi)
{
  	BSPIx_CSR2(bspi) |= 0x0001;
}

inline void BSPI_FifoEnable(BSPI_TYPES_T bspi)
{
  	BSPIx_CSR2(bspi) &= ~0x0001;
}


/*********************************************************************************************************
;** 函数名称: BSPI_ClockDividerConfig
;** 功能描述: 配置BSPI时钟分频系数
;** 
;** 参    数: bspi:   指定的SPI类型(BSPI0, BSPI1)
;**           divider:分频值
;**          
;** 返 回 值: None
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void BSPI_ClockDividerConfig(BSPI_TYPES_T bspi, UWORD8 divider)
{
  	BSPIx_CLK(bspi) = divider;
}
/*********************************************************************************************************
;** 函数名称: BSPI_FlagStatusObtain
;** 功能描述: 检查并获得BSPI指定标志的状态
;** 
;** 参    数: bspi:指定的SPI类型(BSPI0, BSPI1)
;**           flag:指定标志类型
;**          
;** 返 回 值: 指定标志的状态
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline FLAG_STATUS_T BSPI_FlagStatusObtain(BSPI_TYPES_T bspi, BSPI_FLAGS_T flag)
{
  	return (BSPIx_CSR2(bspi) &= flag) != 0 ? SET : RESET;
}

/*********************************************************************************************************
;** 函数名称: BSPI_MasterSendByte
;** 功能描述: SPI作为主设备发送一个字的数据
;** 
;** 参    数: bspi:指定的SPI类型(BSPI0, BSPI1)
;**          
;** 返 回 值: 接收到的数据
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void BSPI_MasterSendByte(BSPI_TYPES_T bspi,UWORD8 byte)
{
	UWORD8 temp = 0xFF;
	
	while(BSPIx_CSR2(bspi)&BSPI_RFNE)
  		temp = BSPIx_RXR(bspi);
  		
	while(!(BSPIx_CSR2(bspi)&BSPI_TFE));    
  	BSPIx_TXR (bspi)= byte<<8;  
  	            
  	while(!(BSPIx_CSR2(bspi)&BSPI_RFF));    
  	temp = BSPIx_RXR(bspi)>>8;    	   
}

/*********************************************************************************************************
;** 函数名称: BSPI_MasterRecByte
;** 功能描述: SPI作为主设备接收一个字的数据
;** 
;** 参    数: bspi:指定的SPI类型(BSPI0, BSPI1)
;**          
;** 返 回 值: 接收到的数据
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline UWORD8 BSPI_MasterRecByte(BSPI_TYPES_T bspi)
{
	UWORD8 temp = 0xaa;
	UWORD8 data = 0xFF;
	
	while(BSPIx_CSR2(bspi)&BSPI_RFNE)
  		temp = BSPIx_RXR(bspi);
  		
	while(!(BSPIx_CSR2(bspi)&BSPI_TFE));    
  	BSPIx_TXR (bspi)= data<<8; 
  	            
  	while(!(BSPIx_CSR2(bspi)&BSPI_RFF));    
  	temp = BSPIx_RXR(bspi)>>8;         
	
  	    
	return(temp); 							/* 读取收到的字节 read the byte received */
}

/*********************************************************************************************************
;** 函数名称: BSPI_SalveWordSend
;** 功能描述: SLAVE设备时发送一个字
;** 
;** 参    数: bspi:指定的SPI类型(BSPI0, BSPI1)
;**           data:发送数据
;**          
;** 返 回 值: None
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void BSPI_SalveWordSend(BSPI_TYPES_T bspi, UWORD16 data)
{
	if((BSPIx_CSR1(bspi) & 0x0400) == 0) 
		data <<= 8;
  	BSPIx_TXR(bspi) = data;
}
/*********************************************************************************************************
;** 函数名称: BSPI_SalveWordReceive
;** 功能描述: SLAVE设备接收一个字的数据
;** 
;** 参    数: bspi:指定的SPI类型(BSPI0, BSPI1)
;**          
;** 返 回 值: 接收到的数据
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline UWORD16 BSPI_SalveWordReceive(BSPI_TYPES_T bspi)
{
  return (BSPIx_CSR1(bspi) & 0x0400) == 0 ? BSPIx_RXR(bspi) >> 8 : BSPIx_RXR(bspi);
}

/*********************************************************************************************************
;** 函数名称: BSPI_ItEnable
;** 功能描述: 允许或者禁止指定的BSPI中断
;** 
;** 参    数: bspi:     指定的SPI类型(BSPI0, BSPI1)
;**           bspi_it:  BSPI中断类型
;**           new_state:允许(ENABLE),禁止(DISABLE)
;**
;** 返 回 值: None
;**         
;** 作   者: lhl
;** 日   期: 2006年5月23日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void BSPI_ItEnable(BSPI_TYPES_T bspi, BSPI_ITS_T bspi_it, CONFIG_STATUS_T new_state)
{
  	if(new_state == ENABLE) 
  		BSPIx_CSR1(bspi) |= bspi_it; 
  	else 
  		BSPIx_CSR1(bspi) &= ~bspi_it;
}


#endif /* EN_ARM_BSPI > 0  */


    #ifdef __cplusplus
    }
    #endif


#endif /* __BSPI_H */

/******************************************** end of file ***********************************************/

⌨️ 快捷键说明

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