void SPI1_SetSpeed(uint32_t SPI_BaudRatePrescaler) { assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler)); LL_SPI_SetBaudRatePrescaler(SPI1, SPI_BaudRatePrescaler); //设置SPI1的速率 LL_SPI_Enable(SPI1); }

//SPIx 读写一个字节 //TxData:要写入的字节 //返回值:读取到的字节 uint8_t SPI1_ReadWriteByte(uint8_t TxData) { uint8_t retry=0; while (LL_SPI_IsActiveFlag_TXE(SPI1) == 0) //检查指定的SPI标志位是否设置:发送缓存空标志位 { retry++; if(retry>200) return 0; }
LL_SPI_TransmitData8(SPI1, TxData); //通过SPIx发送一个字节的数据 retry=0;

while (LL_SPI_IsActiveFlag_RXNE(SPI1) == 0) //检查指定的SPI标志位是否设置:接收缓存非空标志位
{
	retry++;
	if(retry>200) return 0;
}	  						    
return LL_SPI_ReceiveData8(SPI1); //返回通过SPIx接收到的数据

}

uint8_t Readreg(uint8_t address) { uint8_t reg1; // uint8_t reg2;

GPIO_ResetBits(GPIOA,GPIO_Pin_4);
delay_ms(1);   
SPI1_ReadWriteByte(0x40 | address);
delay_ms(1);
SPI1_ReadWriteByte(0x01);
delay_ms(1);
reg1 = SPI1_ReadWriteByte(0x00);			
delay_ms(1);
SPI1_ReadWriteByte(0x00);	
GPIO_SetBits(GPIOA,GPIO_Pin_4);

return reg1;

}

void Writereg(uint8_t address,uint8_t data) {

GPIO_ResetBits(GPIOA,GPIO_Pin_4);
delay_ms(1);
SPI1_ReadWriteByte(0x80 | address);
delay_ms(1);
SPI1_ReadWriteByte(0x00);
delay_ms(1);
SPI1_ReadWriteByte(data);	
delay_ms(1);	
GPIO_SetBits(GPIOA,GPIO_Pin_4);

}

void ReadData(uint8_t data[27]) { int i; for(i = 0; i < 27; i++) { data[i] = SPI1_ReadWriteByte(0x00); }

void SPI1_SetSpeedu8 SPI_BaudRatePrescaler assert_paramIS_SPI_BAUDRATE_PRESCALERSPI_BaudRatePrescaler;	SPI1-CR1&=0XFFC7;	SPI1-CR1=SPI_BaudRatePrescaler;	ÉèÖÃSPI1ËÙ¶È 	SPI_CmdSPI1ENABLE; SPIx ¶Áдһ¸ö

原文地址: https://www.cveoy.top/t/topic/dn95 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录