| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 | #include "myRadio_gpio.h"#include "radio.h"#include "sx126x.h"#include "sx126x-board.h"void HAL_Delay_nMS(uint32_t time_ms){    delay1ms(time_ms);}void SX126xReset( void ){    HAL_Delay_nMS( 10 );    RF_SX126x_RST_L();    HAL_Delay_nMS( 20 );    RF_SX126x_RST_H();    HAL_Delay_nMS( 10 );}void SX126xWaitOnBusy( void ){   while(READ_RF_SX126x_BUSY());}void SX126xWakeup( void ){    BOARD_SPI_NSS_L();        SpiReadWrite(RADIO_GET_STATUS);    SpiReadWrite(0);        BOARD_SPI_NSS_H();    // Wait for chip to be ready.    SX126xWaitOnBusy( );}void SX126xWriteCommand( RadioCommands_t command, uint8_t *buffer, uint16_t size ){    SX126xCheckDeviceReady( );    BOARD_SPI_NSS_L();    SpiReadWrite(command );    SpiWriteData(buffer, size);    BOARD_SPI_NSS_H();        if( command != RADIO_SET_SLEEP )    {        SX126xWaitOnBusy( );    }}void SX126xReadCommand( RadioCommands_t command, uint8_t *buffer, uint16_t size ){    SX126xCheckDeviceReady( );    BOARD_SPI_NSS_L();    SpiReadWrite(command );    SpiReadWrite(0x00);    SpiReadData(buffer, size);    BOARD_SPI_NSS_H();    SX126xWaitOnBusy( );}void SX126xWriteRegisters( uint16_t address, uint8_t *buffer, uint16_t size ){    SX126xCheckDeviceReady( );    BOARD_SPI_NSS_L();    SpiReadWrite(RADIO_WRITE_REGISTER);    SpiReadWrite(( address & 0xFF00 ) >> 8);    SpiReadWrite(address & 0x00FF);    SpiWriteData(buffer, size);    BOARD_SPI_NSS_H();    SX126xWaitOnBusy( );}void SX126xWriteRegister( uint16_t address, uint8_t value ){    SX126xWriteRegisters( address, &value, 1 );}void SX126xReadRegisters( uint16_t address, uint8_t *buffer, uint16_t size ){    SX126xCheckDeviceReady( );    BOARD_SPI_NSS_L();    SpiReadWrite(RADIO_READ_REGISTER);    SpiReadWrite(( address & 0xFF00 ) >> 8);    SpiReadWrite(address & 0x00FF);    SpiReadWrite(0);    SpiReadData(buffer, size);    BOARD_SPI_NSS_H();    SX126xWaitOnBusy( );}uint8_t SX126xReadRegister( uint16_t address ){    uint8_t data;    SX126xReadRegisters( address, &data, 1 );    return data;}void SX126xWriteBuffer( uint8_t offset, uint8_t *buffer, uint8_t size ){    SX126xCheckDeviceReady( );    BOARD_SPI_NSS_L();    SpiReadWrite(RADIO_WRITE_BUFFER);    SpiReadWrite(offset);    SpiWriteData(buffer, size);    BOARD_SPI_NSS_H();    SX126xWaitOnBusy( );}void SX126xReadBuffer( uint8_t offset, uint8_t *buffer, uint8_t size ){    SX126xCheckDeviceReady( );    BOARD_SPI_NSS_L();    SpiReadWrite(RADIO_READ_BUFFER);    SpiReadWrite(offset);    SpiReadWrite(0);    SpiReadData(buffer, size);    BOARD_SPI_NSS_H();        SX126xWaitOnBusy( );}void SX126xSetRfTxPower( int8_t power ){    SX126xSetTxParams( power, RADIO_RAMP_200_US );}uint8_t SX126xGetPaSelect( uint32_t channel ){//    if( GpioRead( &DeviceSel ) == 1 )//    {//        return SX1261;//    }//    else//    {//        return SX1262;//    }    return SX1262;}void SX126xAntSwOn( void ){    //GpioInit( &AntPow, ANT_SWITCH_POWER, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 1 );}void SX126xAntSwOff( void ){   // GpioInit( &AntPow, ANT_SWITCH_POWER, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 );}bool SX126xCheckRfFrequency( uint32_t frequency ){    // Implement check. Currently all frequencies are supported    return true;}
 |