📄 bspi.h
字号:
;** 返 回 值: 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 + -