/* USER CODE BEGIN SPI2_Init 2 */
LL_SPI_Enable(SPI2);
// LL_SPI_TransmitData8(0xff); // 有的设备加这句 读不到正确的ID
/* USER CODE END SPI2_Init 2 */
在MX_SPI2_Init外添加:
c复制代码
uint8_t SPI2_ReadWriteByte(uint8_t TxData)
{
uint8_t retry = 0;
/* Check if Tx buffer is empty */
while (!LL_SPI_IsActiveFlag_TXE(SPI2))
{
retry++;
if(retry > 200) return 0;
}
/* Write character in Data register.
TXE flag is cleared by reading data in DR register */
LL_SPI_TransmitData8(SPI2, TxData);
retry = 0;
/* Check if Rx buffer is not empty */
while (!LL_SPI_IsActiveFlag_RXNE(SPI2))
{
retry++;
if(retry > 200) return 0;
}
/* received byte from SPI lines. */
return LL_SPI_ReceiveData8(SPI2);
}