21ic问答首页 - GD32F103VC替换ST32F103VC后,SPI读出的数全是0xff
GD32F103VC替换ST32F103VC后,SPI读出的数全是0xff
win12345688992021-06-03
用ST芯片,SPI读取正常。换成GD芯片后,按照官方提供的GD和ST差异表,修改了程序,u8 SPI_FLASH_SendByte(u8 byte) 返回值全是0xff,有人遇到过这种情况吗?
u8 SPI_FLASH_SendByte(u8 byte) //
{
/* Loop while DR register in not emplty */
while ((SPI1->SR & SPI_I2S_FLAG_TXE) == 0);
/* Send byte through the SPI1 peripheral */
SPI1->DR =byte;
/* Wait to receive a byte */
while ((SPI1->SR & SPI_I2S_FLAG_RXNE) == 0);
/* Return the byte read from the SPI bus */
return SPI1->DR;
}
u8 SPI_FLASH_SendByte(u8 byte) //
{
/* Loop while DR register in not emplty */
while ((SPI1->SR & SPI_I2S_FLAG_TXE) == 0);
/* Send byte through the SPI1 peripheral */
SPI1->DR =byte;
/* Wait to receive a byte */
while ((SPI1->SR & SPI_I2S_FLAG_RXNE) == 0);
/* Return the byte read from the SPI bus */
return SPI1->DR;
}
赞0
{
//Select the FLASH: Chip Select low
//GPIOA->BRR = FLASH_CS;
SPI_FLASH_CS_LOW();
/* Send "Read from Memory " instruction */
SPI_FLASH_SendByte(READ);
/* Send ReadAddr high nibble address byte to read from */
SPI_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16);
/* Send ReadAddr medium nibble address byte to read from */
SPI_FLASH_SendByte((ReadAddr& 0xFF00) >> 8);
/* Send ReadAddr low nibble address byte to read from */
SPI_FLASH_SendByte(ReadAddr & 0xFF);
while(NumByteToRead--) /* while there is data to be read */
{
/* Read a byte from the FLASH */
*pBuffer = SPI_FLASH_SendByte(Dummy_Byte);
/* Point to the next location where the byte read will be saved */
pBuffer++;
}
//Deselect the FLASH: Chip Select high
// GPIOA->BSRR = FLASH_CS;
SPI_FLASH_CS_HIGH();
}
SPI_FLASH_SendByte(Dummy_Byte)读到的全是0xff
评论
2021-06-03
您需要登录后才可以回复 登录 | 注册