You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.5 KiB
73 lines
1.5 KiB
/*
|
|
* ch592_board.c
|
|
*
|
|
* Created on: 2024年6月21日
|
|
* Author: tang
|
|
*/
|
|
#include "ch592_board.h"
|
|
#include "sx1280-hal.h"
|
|
|
|
|
|
static DioIrqHandler* dio1IrqCallback = NULL; // 记录DIO1的回调函数句柄
|
|
uint8_t HALSpi0InOut(uint8_t data)
|
|
{
|
|
R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
|
|
R8_SPI0_BUFFER = data;
|
|
while (!(R8_SPI0_INT_FLAG & RB_SPI_FREE));
|
|
return (R8_SPI0_BUFFER);
|
|
}
|
|
|
|
/*
|
|
* spi传输一字节数据
|
|
*/
|
|
uint8_t sx1280SpiInOut(uint8_t data)
|
|
{
|
|
return HALSpi0InOut(data);
|
|
}
|
|
// sx1280 手册 决定
|
|
void sx1280Io_DEInit(void)
|
|
{
|
|
/*NSS不管
|
|
//SCK
|
|
//MOSI
|
|
//MISO
|
|
//BUSY
|
|
//DIO
|
|
//REST 不管*/
|
|
GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);
|
|
GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);
|
|
GPIOA_ModeCfg(RADIO_SCK_PIN, GPIO_ModeIN_PD);
|
|
GPIOB_ModeCfg(RADIO_DIO1_PIN, GPIO_ModeIN_PD);
|
|
|
|
}
|
|
|
|
void spi_Close(void)
|
|
{
|
|
R8_SPI0_CTRL_MOD=RB_SPI_MISO_OE|RB_SPI_MOSI_OE|RB_SPI_SCK_OE;
|
|
|
|
}
|
|
|
|
void sx1280IoInit(void)
|
|
{
|
|
//RESET
|
|
GPIOB_SetBits(RADIO_nRESET_PIN);
|
|
GPIOB_ModeCfg(RADIO_nRESET_PIN , GPIO_ModeOut_PP_5mA);
|
|
//BUSY
|
|
GPIOB_ModeCfg(RADIO_BUSY_PIN, GPIO_ModeIN_PD);
|
|
//DIO1
|
|
GPIOB_SetBits(RADIO_DIO1_PIN);
|
|
GPIOB_ModeCfg(RADIO_DIO1_PIN, GPIO_ModeIN_PD);
|
|
GPIOB_ITModeCfg(RADIO_DIO1_PIN, GPIO_ITMode_RiseEdge);
|
|
PFIC_EnableIRQ(GPIO_B_IRQn);
|
|
//SPI
|
|
GPIOA_SetBits(RADIO_NSS_PIN);
|
|
GPIOA_ModeCfg(RADIO_NSS_PIN | RADIO_SCK_PIN | RADIO_MOSI_PIN, GPIO_ModeOut_PP_5mA); // 12:cs,13:clk,14:mosi,15:miso
|
|
SPI0_MasterDefInit();
|
|
}
|
|
|
|
|
|
|
|
void sx1280IoIrqInit(DioIrqHandler dioIrq)
|
|
{
|
|
dio1IrqCallback = dioIrq;
|
|
}
|
|
|