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.
125 lines
4.1 KiB
125 lines
4.1 KiB
/*
|
|
* Project: Si4463 Radio Library for AVR and Arduino
|
|
* Author: Zak Kemble, contact@zakkemble.co.uk
|
|
* Copyright: (C) 2017 by Zak Kemble
|
|
* License: GNU GPL v3 (see License.txt)
|
|
* Web: http://blog.zakkemble.co.uk/si4463-radio-library-avr-arduino/
|
|
*/
|
|
|
|
#ifndef SI446X_DEFS_H_
|
|
#define SI446X_DEFS_H_
|
|
|
|
#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_FIFO_INFO 0x15
|
|
#define SI446X_CMD_GET_INT_STATUS 0x20
|
|
#define SI446X_CMD_REQUEST_DEVICE_STATE 0x33
|
|
#define SI446X_CMD_CHANGE_STATE 0x34
|
|
#define SI446X_CMD_READ_CMD_BUFF 0x44
|
|
#define SI446X_CMD_READ_FRR_A 0x50
|
|
#define SI446X_CMD_READ_FRR_B 0x51
|
|
#define SI446X_CMD_READ_FRR_C 0x53
|
|
#define SI446X_CMD_READ_FRR_D 0x57
|
|
#define SI446X_CMD_IRCAL 0x17
|
|
#define SI446X_CMD_IRCAL_MANUAL 0x1a
|
|
#define SI446X_CMD_START_TX 0x31
|
|
#define SI446X_CMD_TX_HOP 0x37
|
|
#define SI446X_CMD_WRITE_TX_FIFO 0x66
|
|
#define SI446X_CMD_PACKET_INFO 0x16
|
|
#define SI446X_CMD_GET_MODEM_STATUS 0x22
|
|
#define SI446X_CMD_START_RX 0x32
|
|
#define SI446X_CMD_RX_HOP 0x36
|
|
#define SI446X_CMD_READ_RX_FIFO 0x77
|
|
#define SI446X_CMD_GET_ADC_READING 0x14
|
|
#define SI446X_CMD_GET_PH_STATUS 0x21
|
|
#define SI446X_CMD_GET_CHIP_STATUS 0x23
|
|
|
|
#define SI446X_INT_CTL_CHIP_LOW_BATT_EN 1
|
|
#define SI446X_INT_CTL_CHIP_WUT_EN 0
|
|
|
|
typedef enum
|
|
{
|
|
SI446X_ADC_CONV_TEMP = 16,
|
|
SI446X_ADC_CONV_BATT = 8,
|
|
SI446X_ADC_CONV_GPIO = 4
|
|
} si446x_adc_conv_t;
|
|
|
|
typedef enum
|
|
{
|
|
SI446X_ADC_RANGE_0P8 = 0,
|
|
SI446X_ADC_RANGE_1P6 = 4,
|
|
SI446X_ADC_RANGE_3P2 = 5,
|
|
SI446X_ADC_RANGE_2P4 = 8,
|
|
SI446X_ADC_RANGE_3P6 = 9
|
|
} si446x_adc_range_t;
|
|
|
|
#define SI446X_FIFO_CLEAR_RX 0x02
|
|
#define SI446X_FIFO_CLEAR_TX 0x01
|
|
|
|
#define GLOBAL_PROP(prop) ((SI446X_PROP_GROUP_GLOBAL<<8) | prop)
|
|
#define INT_PROP(prop) ((SI446X_PROP_GROUP_INT<<8) | prop)
|
|
#define PKT_PROP(prop) ((SI446X_PROP_GROUP_PKT<<8) | prop)
|
|
#define PA_PROP(prop) ((SI446X_PROP_GROUP_PA<<8) | prop)
|
|
#define MATCH_PROP(prop) ((SI446X_PROP_GROUP_MATCH<<8) | prop)
|
|
|
|
#define SI446X_GLOBAL_CONFIG GLOBAL_PROP(0x03)
|
|
#define SI446X_FIFO_MODE_HALF_DUPLEX 0x10
|
|
|
|
#define SI446X_GLOBAL_CLK_CFG GLOBAL_PROP(0x01)
|
|
#define SI446X_DIVIDED_CLK_DIS 0x00
|
|
#define SI446X_DIVIDED_CLK_EN 0x40
|
|
#define SI446X_DIVIDED_CLK_SEL_DIV_1 0<<5
|
|
#define SI446X_DIVIDED_CLK_SEL_DIV_2 1<<5
|
|
#define SI446X_DIVIDED_CLK_SEL_DIV_3 2<<5
|
|
#define SI446X_DIVIDED_CLK_SEL_DIV_7_5 3<<5
|
|
#define SI446X_DIVIDED_CLK_SEL_DIV_10 4<<5
|
|
#define SI446X_DIVIDED_CLK_SEL_DIV_15 5<<5
|
|
#define SI446X_DIVIDED_CLK_SEL_DIV_30 6<<5
|
|
#define SI446X_DIVIDED_CLK_32K_SEL_OFF 0x00
|
|
#define SI446X_DIVIDED_CLK_32K_SEL_RC 0x01
|
|
#define SI446X_DIVIDED_CLK_32K_SEL_XTAL 0x02
|
|
|
|
#define SI446X_GLOBAL_LOW_BATT_THRESH GLOBAL_PROP(0x02)
|
|
#define SI446X_GLOBAL_WUT_CONFIG GLOBAL_PROP(0x04)
|
|
#define SI446X_GLOBAL_WUT_M GLOBAL_PROP(0x05)
|
|
#define SI446X_GLOBAL_WUT_R GLOBAL_PROP(0x07)
|
|
#define SI446X_GLOBAL_WUT_LDC GLOBAL_PROP(0x08)
|
|
#define SI446X_WUT_SLEEP 5
|
|
#define SI446X_LDC_MAX_PERIODS_FOREVER 0<<6
|
|
#define SI446X_LDC_MAX_PERIODS_TWO 1<<6
|
|
#define SI446X_LDC_MAX_PERIODS_FOUR 2<<6
|
|
#define SI446X_LDC_MAX_PERIODS_EIGHT 3<<6
|
|
#define SI446X_GLOBAL_WUT_CONFIG_WUT_LDC_EN_RX 1<<6
|
|
#define SI446X_GLOBAL_WUT_CONFIG_WUT_EN 1
|
|
#define SI446X_GLOBAL_WUT_CONFIG_WUT_LBD_EN 2
|
|
|
|
#define SI446X_INT_CTL_ENABLE INT_PROP(0x00)
|
|
#define SI446X_INT_CTL_PH_ENABLE INT_PROP(0x01)
|
|
#define SI446X_INT_CTL_MODEM_ENABLE INT_PROP(0x02)
|
|
#define SI446X_INT_CTL_CHIP_ENABLE INT_PROP(0x03)
|
|
#define SI446X_FILTER_MATCH_PEND 7
|
|
#define SI446X_FILTER_MISS_PEND 6
|
|
#define SI446X_PACKET_SENT_PEND 5
|
|
#define SI446X_PACKET_RX_PEND 4
|
|
#define SI446X_CRC_ERROR_PEND 3
|
|
#define SI446X_INVALID_SYNC_PEND 5
|
|
#define SI446X_SYNC_DETECT_PEND 0
|
|
#define SI446X_LOW_BATT_PEND 1
|
|
#define SI446X_WUT_PEND 0
|
|
|
|
#define SI446X_MATCH_VALUE_1 MATCH_PROP(0x00)
|
|
#define SI446X_MATCH_EN 0x40
|
|
|
|
#define SI446X_PA_PWR_LVL PA_PROP(0x01)
|
|
|
|
#define SI446X_PKT_FIELD_1_LENGTH PKT_PROP(0x0D)
|
|
#define SI446X_PKT_FIELD_2_LENGTH PKT_PROP(0x11)
|
|
#define SI446X_PKT_FIELD_2_LENGTH_LOW PKT_PROP(0x12)
|
|
|
|
#endif /* SI446X_DEFS_H_ */
|