spi
Embed:
(wiki syntax)
Show/hide line numbers
spi.c
00001 #include "spi.h" 00002 00003 SPI device(SPI_MOSI, SPI_MISO, SPI_SCK); 00004 00005 //SPI Init Code,visit SD Card/W25Q64/NRF24L01 00006 //SPI PIN Init 00007 void SPI_Init(void) 00008 { 00009 00010 //SPI2 clock frequence less than 36Mhz 00011 SPI.frequency(36000000/256); 00012 SPI_ReadWriteByte(0xff);//start transfer 00013 } 00014 00015 00016 //SPI Speed Setting 00017 //SpeedSet:0~7 00018 //SPI Speed = fAPB1/2^(SpeedSet+1) 00019 //APB1 clock usually is 36Mhz 00020 void SPI_SetSpeed(uint8_t SpeedSet) 00021 { 00022 SpeedSet&=0X07; //limit 00023 SPI->CR1&=0XFFC7; 00024 SPI->CR1|=SpeedSet<<3; //setting SPI speed 00025 SPI->CR1|=1<<6; //SPI device enabled 00026 } 00027 00028 00029 //SPI readWrite a Byte 00030 //TxData:the data to write 00031 //return:the data read back 00032 u8 SPI_ReadWriteByte(uint8_t TxData) 00033 { 00034 u16 retry=0; 00035 while((SPI->SR&1<<1)==0) //waiting sending array is empty 00036 { 00037 retry++; 00038 if(retry>=0XFFFE)return 0; //out of time quit 00039 } 00040 SPI->DR=TxData; //send one byte 00041 retry=0; 00042 while((SPI->SR&1<<0)==0) //waiting received a byte 00043 { 00044 retry++; 00045 if(retry>=0XFFFE)return 0; //out of time quit 00046 } 00047 return SPI->DR; //return the data read 00048 } 00049 00050 00051 00052 00053 00054 00055 00056
Generated on Sun Jul 31 2022 11:11:50 by 1.7.2