/******************************************************************************
;  *   	@MCU				 : MC51F003A4
;  *   	@Create Date         : 2021.10.11
;  *   	@Author/Corporation  : Martin/SinoMCU
;  *   	@晟矽微技术支持QQ 	 : 2048615934
;  *    @晟矽微官网		     : http://www.sinomcu.com/
;  *   	@Copyright           : 2020 SINOMCU Corporation,All Rights Reserved.
;  *----------------------Abstract Description---------------------------------
;  *			          SPI配置                             		
******************************************************************************/

#include "SPI.h"

/************************************************
;  *    @Function Name       : SPI_User_Init
;  *    @Description         : SPI配置
;  *    @IN_Parameter      	 :
;  *    @Return parameter    :
;  ***********************************************/
void SPI_User_Init(void)
{
	SPI_InitTypeDef SPI_initstructure;

//	P27_PUSHPULL_MODE; //MOSI输出
//	P26_INPUTHIZ_MODE; //SCK输入
//	P21_INPUTHIZ_MODE; //片选输入
//	P10_INPUTHIZ_MODE; //MISO输入
//	P10_INPUT_PULLUPZ; //MISO上拉

	SPI_initstructure.SPI_mode = SPI_MODE_SLAVE; //设置SPI工作模式:设置为从SPI
	SPI_initstructure.SPI_CPOL = SPI_CPOL_HIGH;  //串行同步时钟的空闲状态为高电平
	SPI_initstructure.SPI_CPHA = SPI_CPHA_2EDGE; //串行同步时钟的第二个跳变沿（上升或下降）数据被采样
	SPI_initstructure.SPI_NSS = SPI_NSS_ENABLE;  //使能SS引脚
	//SPI_initstructure.SPI_clock_division = SPI_CLK_DIV_32;  //时钟分频：32分频
	SPI_initstructure.SPI_first_bit = SPI_FIRST_BIT_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
	SPI_initstructure.SPI_interrupt = DISABLE;			 //关闭中断
	//SPI_initstructure.SPI_interrupt_priority = DISABLE;	//优先级
	SPI_Init(&SPI_initstructure); //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器

	SPI_Cmd(ENABLE); //使能SPI
}
/************************************************
;  *    @Function Name       : SPI1_ReadWriteByte
;  *    @Description         : SPI1 读写一个字节
;  *    @IN_Parameter        :TxData:要写入的字节
;  *    @Return parameter    :返回值:读取到的字节
;  ***********************************************/
uint8_t SPI1_ReadWriteByte(uint8_t TxData)
{
	SPI_Send_Data(TxData);
	while (SPI_Get_FlagStatus(SPI_FLAG_IF) == RESET);
	SPI_Clear_FlagStatus(SPI_FLAG_IF);
	return SPI_Receive_Data();
}

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