MR16/sx1281-driver-c/sx1281_driver_spi.c
2025-11-27 20:43:32 +08:00

39 lines
1.0 KiB
C

#include "bsp/spi.h"
/* Private variables ---------------------------------------------------------*/
#define SX1281_SPI_DMA 0
static volatile bool spi_done = false;
/* -------------- 局部回调 -------------- */
static void txrx_cplt_cb(void) { spi_done = false; }
static void tx_cplt_cb (void) { spi_done = false; }
void SpiInit( void )
{
BSP_SPI_RegisterCallback(BSP_SPI_SX1281, BSP_SPI_TX_RX_CPLT_CB, txrx_cplt_cb);
BSP_SPI_RegisterCallback(BSP_SPI_SX1281, BSP_SPI_TX_CPLT_CB, tx_cplt_cb);
}
void SpiInOut( uint8_t *txBuffer, uint8_t *rxBuffer, uint16_t size )
{
spi_done = true;
BSP_SPI_TransmitReceive(BSP_SPI_SX1281, txBuffer, rxBuffer, size, SX1281_SPI_DMA); // true = DMA
// wait_done();
}
void SpiIn( uint8_t *txBuffer, uint16_t size )
{
spi_done = true;
BSP_SPI_Transmit(BSP_SPI_SX1281, txBuffer, size, SX1281_SPI_DMA);
// wait_done();
}
static void wait_done(void)
{
while (spi_done) { /* 空转,或者换成 OS 延时/信号量 */ }
}
void SpiDeInit( void )
{
/* 注销回调或直接留空 */
}