#ifndef __FU6812_SPI_H__
#define __FU6812_SPI_H__

#include <FU6812_MCU.h>

#define SPI_FREC FREC2
/*************************************************************************************///Defined CMD(Don't touch)
// SPI Mode
#define SPI_MODE_L4H        NSSMOD1 | NSSMOD0 // 四线单主模式，空闲电平为高
#define SPI_MODE_L4L        NSSMOD1               // 四线单主模式，空闲电平为低
#define SPI_MODE_L4         NSSMOD0               // 四线多主模式
#define SPI_MODE_L3         0x00                      // 三线模式

// SPI CLK Mode
#define SPI_CLK_HA1_OL1     CPHA | CPOL       // 上升沿接收，下降沿发送，空闲电平为高
#define SPI_CLK_HA0_OL1     CPOL                  // 上升沿发送，下降沿接收，空闲电平为低
#define SPI_CLK_HA1_OL0     CPHA                  // 上升沿发送，下降沿接收，空闲电平为高
#define SPI_CLK_HA0_OL0     0x00                      // 上升沿接收，下降沿发送，空闲电平为低

/*************************************************************************************///Config
// SPI模式选择(SPI Mode选项)
#define SPI_SET_MODE                SPI_MODE_L4H        
// SPI时钟速度
#define SPI_SET_SPEED               (12000000)
// SPI主从机模式选择(注释该句即为从机)
#define SPI_SET_MASTER
// SPI时钟信号和收发时机设置
#define SPI_CLK_MODE                SPI_CLK_HA1_OL1     

/*************************************************************************************///External Function
#define NssCtlH_SPI()           SetBit(SPI_CR0, NSSMOD0)
#define NssCtlL_SPI()           ClrBit(SPI_CR0, NSSMOD0)

extern void SPI_Config(void);
extern uint8_t SendReceive_SPI(uint8_t SendDat);
extern void SendReceives_SPI(uint8_t* SendDat, uint8_t* ReceiveDat, uint8_t len);

#endif