#include "SWM341.h" #include "CH392SPI_HW_HAL.h" #include "delay.h" SPI_TypeDef *_pSPIx = SPI1; #if(USE_SPI0==1) #define SPI0_CS_Low() GPIO_ClrBit(GPIO_SPI0_CS, PORT_SPI0_CS) #define SPI0_CS_High() GPIO_SetBit(GPIO_SPI0_CS, PORT_SPI0_CS) void SPI0Init(void) { SPI_InitStructure SPI_initStruct; GPIO_Init(GPIO_SPI0_INT, PORT_SPI0_INT, 0, 1, 0, 0); GPIO_Init(GPIO_SPI0_RST, PORT_SPI0_RST, 1, 0, 0, 0); GPIO_ClrBit(GPIO_SPI0_RST, PORT_SPI0_RST); delay_ms(300); GPIO_SetBit(GPIO_SPI0_RST, PORT_SPI0_RST); SPI0_CS_High(); GPIO_Init(GPIO_SPI0_CS, PORT_SPI0_CS, 1, 0, 0, 0); SPI0_CS_High(); PORT_Init(GPIO_SPI0, PORT_SPI0_SCLK, PORTM_PIN2_SPI0_SCLK, 0); PORT_Init(GPIO_SPI0, PORT_SPI0_MISO, PORTM_PIN4_SPI0_MISO, 1); PORT_Init(GPIO_SPI0, PORT_SPI0_MOSI, PORTM_PIN5_SPI0_MOSI, 0); SPI_initStruct.clkDiv = SPI_CLKDIV_32; SPI_initStruct.FrameFormat = SPI_FORMAT_SPI; //SPI_initStruct.SampleEdge = SPI_FIRST_EDGE; //SPI_initStruct.IdleLevel = SPI_LOW_LEVEL; SPI_initStruct.SampleEdge = SPI_SECOND_EDGE; SPI_initStruct.IdleLevel = SPI_HIGH_LEVEL; SPI_initStruct.WordSize = 8; SPI_initStruct.Master = 1; SPI_initStruct.RXThreshold = 0; SPI_initStruct.RXThresholdIEn = 0; SPI_initStruct.TXThreshold = 0; SPI_initStruct.TXThresholdIEn = 0; SPI_initStruct.TXCompleteIEn = 0; SPI_Init(SPI0, &SPI_initStruct); SPI_Open(SPI0); /* while(1) { SPI0_CS_Low(); SPI_ReadWrite(SPI0,0xAA); delay_ms(1); SPI0_CS_High(); delay_ms(1); } */ } #endif #if(USE_SPI1==1) #define SPI1_CS_Low() GPIO_ClrBit(GPIO_SPI1_CS, PORT_SPI1_CS) #define SPI1_CS_High() GPIO_SetBit(GPIO_SPI1_CS, PORT_SPI1_CS) void SPI1Init(void) { GPIO_Init(GPIO_SPI1_INT, PORT_SPI1_INT, 0, 1, 0, 0); //复位 GPIO_Init(GPIO_SPI1_RST, PORT_SPI1_RST, 1, 0, 0, 0); GPIO_ClrBit(GPIO_SPI1_RST, PORT_SPI1_RST); delay_ms(300); GPIO_SetBit(GPIO_SPI1_RST, PORT_SPI1_RST); SPI_InitStructure SPI_initStruct; SPI1_CS_High(); GPIO_Init(GPIO_SPI1_CS, PORT_SPI1_CS, 1, 0, 0, 0); SPI1_CS_High(); PORT_Init(GPIO_SPI1, PORT_SPI1_SCLK, PORTM_PIN2_SPI0_SCLK, 0); PORT_Init(GPIO_SPI1, PORT_SPI1_MISO, PORTM_PIN4_SPI0_MISO, 1); PORT_Init(GPIO_SPI1, PORT_SPI1_MOSI, PORTM_PIN5_SPI0_MOSI, 0); SPI_initStruct.clkDiv = SPI_CLKDIV_32; SPI_initStruct.FrameFormat = SPI_FORMAT_SPI; //SPI_initStruct.SampleEdge = SPI_FIRST_EDGE; //SPI_initStruct.IdleLevel = SPI_LOW_LEVEL; SPI_initStruct.SampleEdge = SPI_SECOND_EDGE; SPI_initStruct.IdleLevel = SPI_HIGH_LEVEL; SPI_initStruct.WordSize = 8; SPI_initStruct.Master = 1; SPI_initStruct.RXThreshold = 0; SPI_initStruct.RXThresholdIEn = 0; SPI_initStruct.TXThreshold = 0; SPI_initStruct.TXThresholdIEn = 0; SPI_initStruct.TXCompleteIEn = 0; SPI_Init(SPI1, &SPI_initStruct); SPI_Open(SPI1); /* while(1) { SPI1_CS_Low(); SPI_ReadWrite(SPI1,0xAA); delay_ms(1); SPI1_CS_High(); delay_ms(1); } */ } /******************************************************************************* * Function Name : CH392_Port_Init * Description : Initializes the port * Input : None * Return : None *******************************************************************************/ void CH392_Port_Init(SPI_TypeDef *SPI_PORT ) { UINT8 i = 0; #if(USE_SPI1==1) if(SPI_PORT == SPI1) { _pSPIx = SPI_PORT; SPI1Init(); } #endif #if(USE_SPI0==1) if(SPI_PORT == SPI0) { _pSPIx = SPI_PORT; SPI0Init(); } #endif i = QUERY_SPI_INT(); (void)i; } /******************************************************************************* * Function Name : SPI1_WriteRead * Description : spi 读写一个字节 * Input : UINT8 Data * Return : None *******************************************************************************/ UINT8 SPI_WriteRead(UINT8 data) { return SPI_ReadWrite(_pSPIx, data); } void SPI_MasterTransByte( UINT8 data) { UINT8 i = SPI_ReadWrite(_pSPIx, data); (void)i; } UINT8 SPI_MasterRecvByte(void) { return SPI_ReadWrite(_pSPIx, 0x0); } //CSH void xCH392CmdEnd(void) { if(_pSPIx == SPI1) { #if(USE_SPI1==1) SPI1_CS_High(); #endif } if(_pSPIx == SPI0) { #if(USE_SPI0==1) SPI0_CS_High(); #endif } } //CS 拉低 void xCH392CmdStart(void) //CSL { if(_pSPIx == SPI1) { #if(USE_SPI1==1) SPI1_CS_Low(); #endif } if(_pSPIx == SPI0) { #if(USE_SPI0==1) SPI0_CS_Low(); #endif } } UINT8 QUERY_SPI_INT(void) { UINT8 iRead = 0; if(_pSPIx == SPI1) { #if(USE_SPI1==1) iRead = GPIO_GetBit(GPIO_SPI1_INT, PORT_SPI1_INT); #endif } if(_pSPIx == SPI0) { #if(USE_SPI0==1) iRead = GPIO_GetBit(GPIO_SPI0_INT, PORT_SPI0_INT); #endif } return iRead; } #endif