SPI 接口一般使用 4 条线通信:
// MX_GPIO_Init();
// MX_SPI5_Init();
void spi_readid(void){
uint16_t temp = 0;
uint8_t rxdata = 0;//接收数据
uint8_t txdata = 0;//发送数据
//开启数据发送 PF6
HAL_GPIO_WritePin(F_CS_GPIO_Port,F_CS_Pin,GPIO_PIN_RESET);
txdata = 0x90;
HAL_SPI_Transmit(&hspi5,&txdata,1,999);
txdata = 0x00;//可以任意数据
HAL_SPI_Transmit(&hspi5,&txdata,1,999);
HAL_SPI_Transmit(&hspi5,&txdata,1,999);
HAL_SPI_Transmit(&hspi5,&txdata,1,999);
//HAL_SPI_Transmit(&hspi5,(unit8_t *)"0x90",1,1000);//不能这样写
txdata = 0xff;//这个也可以任意数据
HAL_SPI_TransmitReceive(&hspi5,&txdata,&rxdata,1,999);
u1_printf("%x\r\n",rxdata);
temp |= rxdata<<8;
HAL_SPI_TransmitReceive(&hspi5,&txdata,&rxdata,1,999);
u1_printf("%x\r\n",rxdata);
temp |= rxdata;
//关闭数据发送
HAL_GPIO_WritePin(F_CS_GPIO_Port,F_CS_Pin,GPIO_PIN_SET);
// W25Q256 id 为 0xef18
if(temp == 0xEF18){
u1_printf("spi ok\r\n");
}
else{
u1_printf("spi error\r\n");
u1_printf("%hx\r\n",temp);
}
}