Files
@ e8e5873934fa
Branch filter:
Location: windsonde/Libraries/Si446x/si446x.h - annotation
e8e5873934fa
4.7 KiB
text/plain
Move power to config.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 851511077b87 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be 0f04af7169be | #ifndef SI446X_H
#define SI446X_H
#include "stm32f0xx_hal.h"
// Hardware Options ///////////////////
// Timeout for blocking writes
#define SI446x_TIMEOUT 50
// Crystal/oscillator frequency
#define SI446x_VCXO_FREQ 26000000UL
#define SI446x_SPI SPI1
// GPIO assignments
#define SI446x_CS_PORT GPIOA
#define SI446x_CS_PIN GPIO_PIN_15
#define SI446x_GPIO_PORT GPIOA
#define SI446x_GPIO_PIN GPIO_PIN_10
#define SI446x_SHUTDOWN_PORT GPIOA
#define SI446x_SHUTDOWN_PIN GPIO_PIN_9
#define SI446x_MOSI_PORT GPIOB
#define SI446x_MOSI_PIN GPIO_PIN_5
#define SI446x_MISO_PORT GPIOB
#define SI446x_MISO_PIN GPIO_PIN_4
#define SI446x_SCK_PORT GPIOB
#define SI446x_SCK_PIN GPIO_PIN_3
#define SI446x_TCXO_EN_PORT GPIOA
#define SI446x_TCXO_EN_PIN GPIO_PIN_8
///////////////////////////////////////
// Registers /////////////////////////
#define SI446x_CMD_POWER_UP 0x02
#define SI446x_CMD_NOP 0x00
#define SI446x_CMD_PART_INFO 0x01
#define SI446x_CMD_FUNC_INFO 0x10
#define SI446x_CMD_SET_PROPERTY 0x11
#define SI446x_CMD_GET_PROPERTY 0x12
#define SI446x_CMD_GPIO_PIN_CFG 0x13
#define SI446x_CMD_GET_ADC_READING 0x14
#define SI446x_CMD_FIFO_INFO 0x15
#define SI446x_CMD_PACKET_INFO 0x16
#define SI446x_CMD_IRCAL 0x17
#define SI446x_CMD_PROTOCOL_CFG 0x18
#define SI446x_CMD_GET_INT_STATUS 0x20
#define SI446x_CMD_GET_PH_STATUS 0x21
#define SI446x_CMD_GET_MODEM_STATUS 0x22
#define SI446x_CMD_GET_CHIP_STATUS 0x23
#define SI446x_CMD_START_TX 0x31
#define SI446x_CMD_START_RX 0x32
#define SI446x_CMD_REQUEST_DEVICE_STATE 0x33
#define SI446x_CMD_CHANGE_STATE 0x34
#define SI446x_CMD_READ_CMD_BUFF 0x44
#define SI446x_CMD_FRR_A_READ 0x50
#define SI446x_CMD_FRR_B_READ 0x51
#define SI446x_CMD_FRR_C_READ 0x53
#define SI446x_CMD_FRR_D_READ 0x57
#define SI446x_CMD_WRITE_TX_FIFO 0x66
#define SI446x_CMD_READ_RX_FIFO 0x77
#define SI446x_CMD_RX_HOP 0x36
// GPIO pin configuration options
#define SI446x_GPIO_NOCHANGE 0
#define SI446x_GPIO_LOW 2
#define SI446x_GPIO_HIGH 3
#define SI446x_GPIO_INPUT 4
#define SI446x_GPIO_TXFIFO_LOW 35
#define SI446x_GPIO_TXENABLED 32
// GPIO pin definitions
#define SI446x_GPIO0 0
#define SI446x_GPIO1 1
#define SI446x_GPIO2 2
#define SI446x_GPIO3 3
// Property MOD_TYPE parameters
#define SI446x_MOD_TYPE_REGISTER_GROUP 0x20
#define SI446x_MOD_TYPE_REGISTER_PROP 0x00
#define SI446x_MOD_TYPE_CW 0
#define SI446x_MOD_TYPE_OOK 1
#define SI446x_MOD_TYPE_2FSK 2
#define SI446x_MOD_TYPE_2GFSK 3
#define SI446x_MOD_TYPE_4FSK 4
#define SI446x_MOD_TYPE_4GFSK 5
#define SI446x_MOD_TYPE_SOURCE_PACKETHANDLER (0<<3)
#define SI446x_MOD_TYPE_SOURCE_DIRECTMODE (1<<3)
#define SI446x_MOD_TYPE_SOURCE_PSEUDORANDOM (2<<3)
#define SI446x_MOD_TYPE_DIRECT_SYNCH (0<<7)
#define SI446x_MOD_TYPE_DIRECT_ASYNCH (1<<7)
#define SI446x_MOD_TYPE_DIRECT_SOURCE_GPIO0 (0<<5)
#define SI446x_MOD_TYPE_DIRECT_SOURCE_GPIO1 (1<<5)
#define SI446x_MOD_TYPE_DIRECT_SOURCE_GPIO2 (2<<5)
#define SI446x_MOD_TYPE_DIRECT_SOURCE_GPIO3 (3<<5)
// XO Tune
#define SI446x_XO_TUNE_REGISTER_GROUP 0x00
#define SI446x_XO_TUNE_REGISTER_PROP 0x00
#define SI446x_XO_TUNE_MAX 0x7F
// Modem bit mapping
#define SI446x_MODEM_MAP_GROUP 0x20
#define SI446x_MODEM_MAP_PROP 0x01
// Preamble
#define SI446x_PREAMBLE_TX_LENGTH_GROUP 0x10
#define SI446x_PREAMBLE_TX_LENGTH_PROP 0x00
// Sync
#define SI446x_SYNC_LENGTH_GROUP 0x11
#define SI446x_SYNC_LENGTH_PROP 0x00
// Power amp control DAC options
#define AD56XX_NORMAL_OPERATION 0b00000000
#define AD56XX_1K_TO_GROUND 0b01000000
#define AD56XX_100K_TO_GROUND 0b10000000
#define AD56XX_TRI_STATE 0b11000000
// Internal definitions
#define SI446x_CS SI446x_CS_PORT, SI446x_CS_PIN
#define SI446x_MOSI SI446x_MOSI_PORT, SI446x_MOSI_PIN
#define SI446x_MISO SI446x_MISO_PORT, SI446x_MISO_PIN
#define SI446x_SCK SI446x_SCK_PORT, SI446x_SCK_PIN
#define SI446x_GPIO SI446x_GPIO_PORT, SI446x_GPIO_PIN
#define SI446x_SHUTDOWN SI446x_SHUTDOWN_PORT , SI446x_SHUTDOWN_PIN
// Communication options
#define SI446x_IGNORE_ACK 0
#define SI446x_CHECK_ACK 1
// Helper macros
#define SI446x_SELECT HAL_GPIO_WritePin(SI446x_CS, GPIO_PIN_RESET)
#define SI446x_DESELECT HAL_GPIO_WritePin(SI446x_CS, GPIO_PIN_SET)
void si446x_init(void);
void si446x_reset(void);
void si446x_gpio(uint8_t gpio, uint8_t state, uint8_t doack);
void si446x_setdatarate(void);
void si446x_senddata(uint8_t* data, uint8_t len);
void si446x_sendcmd(uint8_t tx_len, uint8_t* data, uint8_t doack);
void si446x_setchannel(uint32_t frequency);
void si446x_cw_on(void);
void si446x_cw_off(void);
uint8_t si446x_tx_status(void);
SPI_HandleTypeDef* spi1_get(void);
void si446x_shutdown(void);
void si446x_wakeup(void);
#endif
|