void Rfchip_Spi_Init(void)
{
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_5);
LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_7);
RFChip_Disable;
}
void Rf_Spi_Write_Byte(uint8_t dat)
{
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_5);
LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_7,LL_GPIO_MODE_OUTPUT);
for (uint8_t i = 0; i < 8; i++)
{
if ((dat & 0x80) == 0x80)
LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7);
else
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_7);
LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_5);
dat <<= 1;
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_5);
}
}
uint8_t Rf_Spi_Read_Byte(void)
{
uint8_t dat=0;
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_5);
LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_7,LL_GPIO_MODE_INPUT);
for (uint8_t i = 0; i < 8; i++)
{
dat <<= 1;
LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_5);
if (LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_7))
dat |= 0x01;
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_5);
}
return dat;
}
这篇博客详细介绍了如何使用LL_GPIO库初始化SPI通信,并实现了SPI写入字节和读取字节的函数。通过设置GPIO引脚模式,进行数据位传输,实现了与RF芯片的SPI通信交互。
1万+

被折叠的 条评论
为什么被折叠?



