LL库-使用SPI
- Fang XS.
- 1452512966@qq.com
- 如果有错误,希望被指出
前言
- 使用STM32CubeMX生成的代码,通常不能直接使用。
SPI
- 以SPI2为例。在STM32CubeMX自动生成代码之后:
- 在
MX_SPI2_Init
最后添加:
c
/* 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);
}