没辙了,把代码改成直接操作寄存器也不行,先不管了。
unsigned char spi_send (unsigned short outb) {
/* Write and Read a byte on SPI interface. */
SPI3->DR = outb;
while (!(SPI3->SR & 0x02)); /* Wait for transfer to finish */
// while (!(SPI3->SR & 0x01));
return (SPI3->DR); /* Return received value */
评分
查看全部评分
评分
查看全部评分
不管用 还是那样
HAL_SPI_Transmit(&hspi3, cmd, 4, W25Qx_TIMEOUT_VALUE);
HAL_SPI_Receive(&hspi3, odd, 3, W25Qx_TIMEOUT_VALUE);//先读不知道哪里来的3个0
HAL_SPI_Receive(&hspi3,ID, 2, W25Qx_TIMEOUT_VALUE);
评分
查看全部评分
读SPI Flash的ID也是这样,必须先读3个空数据
好的 谢谢版主
unsigned char spi_send (unsigned short outb) {
/* Write and Read a byte on SPI interface. */
SPI3->DR = outb;
while (!(SPI3->SR & 0x02)); /* Wait for transfer to finish */
// while (!(SPI3->SR & 0x01));
return (SPI3->DR); /* Return received value */
}