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

/*
* 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;
}