#include #include #include "spi.h" #include "spi_cfg.h" #include "spi_port.h" AL_INLINE void CS_HIGH(void) { GPIO_WriteHigh(GPIO_SPI, PORT___SS); //SHOW_FUNC(); } AL_INLINE void CS_LOW(void) { GPIO_WriteLow (GPIO_SPI, PORT___SS); //SHOW_FUNC(); } /* #define GPIO_SPI GPIOA #define PORT___SS PIN12 #define PORT_SCLK PIN15 #define PORT_MISO PIN13 #define PORT_MOSI PIN14 */ unsigned char spiReadWrite(unsigned char ByteIn ) { unsigned char Byte = ByteIn; unsigned char Byte1 = 0; //SPI POL 0 //SPI PHASE 1 unsigned char i; unsigned char cMISO; Disable(); //SCLK=0; //Bus ready GPIO_WriteLow (GPIO_SPI, PORT_SCLK); Delay10us(); for (i = 0; i < 8; i++) { //-------------------------------------------- if(Byte & 0x80) { GPIO_WriteHigh(GPIO_SPI, PORT_MOSI); } else { GPIO_WriteLow(GPIO_SPI, PORT_MOSI); } GPIO_WriteHigh (GPIO_SPI, PORT_SCLK); Delay10us(); //-------------------------------------------- GPIO_WriteLow(GPIO_SPI, PORT_SCLK); Byte <<= 1; Byte1 <<= 1; Delay10us(); cMISO = GPIO_ReadPin(GPIO_SPI, PORT_MISO); Byte1 |= cMISO; } GPIO_WriteLow (GPIO_SPI, PORT_SCLK); Delay10us(); Enable(); return (Byte1); } void InitSPI(void) { GPIO_Init(GPIO_SPI,PORT___SS,GPIO_MODE_OUT_PP,0,0,0); GPIO_Init(GPIO_SPI,PORT_SCLK,GPIO_MODE_OUT_PP,0,0,0); GPIO_Init(GPIO_SPI,PORT_MISO,GPIO_MODE_IN_PU ,1,0,1); GPIO_Init(GPIO_SPI,PORT_MOSI,GPIO_MODE_OUT_PP,0,0,0); _nop_(); GPIO_WriteHigh(GPIO_SPI, PORT___SS); GPIO_WriteLow (GPIO_SPI, PORT_SCLK); GPIO_WriteHigh(GPIO_SPI, PORT_MISO); GPIO_WriteHigh(GPIO_SPI, PORT_MOSI); _nop_(); Delay10us(); } extern void delay_us(int32_t nUs); void Delay10us(void) { _nop_(); }