39 lines
1.0 KiB
C
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 )
|
|
{
|
|
/* 注销回调或直接留空 */
|
|
}
|
|
|