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