diff options
| author | Keith Packard <keithp@keithp.com> | 2013-03-24 23:51:11 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-03-24 23:51:11 -0700 | 
| commit | 4ddfb3ea07c2073f8c4d79feaf262c9fb910cfce (patch) | |
| tree | b17383d305758d75bf90ad1e31c1ccccc897288d /src/drivers/ao_cc115l.h | |
| parent | 15bc83a0eaaa9a43d67fdc3e9f412d5b2c1f06dd (diff) | |
altos: Add cc115l driver (untested)
Includes support for sending telemetry, RDF and APRS tones
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/drivers/ao_cc115l.h')
| -rw-r--r-- | src/drivers/ao_cc115l.h | 225 | 
1 files changed, 225 insertions, 0 deletions
| diff --git a/src/drivers/ao_cc115l.h b/src/drivers/ao_cc115l.h new file mode 100644 index 00000000..34e3f0ba --- /dev/null +++ b/src/drivers/ao_cc115l.h @@ -0,0 +1,225 @@ +/* + * Copyright © 2013 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#ifndef _AO_CC115L_H_ +#define _AO_CC115L_H_ + +#define CC115L_BURST		6 +#define CC115L_READ		7 + +/* Register space */ +#define CC115L_IOCFG2 		0x00	/* GDO2 Output Pin Configuration */ +#define CC115L_IOCFG1 		0x01	/* GDO1 Output Pin Configuration */ +#define CC115L_IOCFG0 		0x02	/* GDO0 Output Pin Configuration */ + +#define  CC115L_IOCFG_GPIO1_DS		7 +#define  CC115L_IOCFG_GPIO_INV		6 + +#define  CC115L_IOCFG_GPIO_CFG		0 +#define  CC115L_IOCFG_GPIO_CFG_TXFIFO_THR	2 +#define  CC115L_IOCFG_GPIO_CFG_TXFIFO_THR_PKT	3 +#define  CC115L_IOCFG_GPIO_CFG_TXFIFO_UNDERFLOW	5 +#define  CC115L_IOCFG_GPIO_CFG_PKT_SYNC_TX	6 +#define  CC115L_IOCFG_GPIO_CFG_PLL_LOCKED	10 +#define  CC115L_IOCFG_GPIO_CFG_SERIAL_CLK	11 +#define  CC115L_IOCFG_GPIO_CFG_SYNC_DATA	12 +#define  CC115L_IOCFG_GPIO_CFG_ASYNC_DATA	13 +#define  CC115L_IOCFG_GPIO_CFG_PA_PD		27 +#define  CC115L_IOCFG_GPIO_CFG_CHIP_RDYn	41 +#define  CC115L_IOCFG_GPIO_CFG_XOSC_STABLE	43 +#define  CC115L_IOCFG_GPIO_CFG_HIGHZ		46 +#define  CC115L_IOCFG_GPIO_CFG_HW_0		47 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_1	48 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_1_5	49 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_2	50 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_3	51 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_4	52 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_6	53 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_8	54 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_12	55 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_16	56 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_24	57 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_32	58 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_48	59 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_64	60 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_96	61 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_128	62 +#define  CC115L_IOCFG_GPIO_CFG_CLK_XOSC_192	63 +#define  CC115L_IOCFG_GPIO_CFG_MASK	0x3f + +#define CC115L_FIFOTHR 		0x03	/* TX FIFO Thresholds */ +#define  CC115L_FIFOTHR_THR_MASK	0x0f +#define  CC115L_FIFOTHR_THR_61		0 +#define  CC115L_FIFOTHR_THR_57		1 +#define  CC115L_FIFOTHR_THR_53		2 +#define  CC115L_FIFOTHR_THR_49		3 +#define  CC115L_FIFOTHR_THR_45		4 +#define  CC115L_FIFOTHR_THR_41		5 +#define  CC115L_FIFOTHR_THR_37		6 +#define  CC115L_FIFOTHR_THR_33		7 +#define  CC115L_FIFOTHR_THR_29		8 +#define  CC115L_FIFOTHR_THR_25		9 +#define  CC115L_FIFOTHR_THR_21		10 +#define  CC115L_FIFOTHR_THR_17		11 +#define  CC115L_FIFOTHR_THR_13		12 +#define  CC115L_FIFOTHR_THR_9		13 +#define  CC115L_FIFOTHR_THR_5		14 +#define  CC115L_FIFOTHR_THR_1		15 + +#define CC115L_SYNC1		0x04	/* Sync Word, High Byte */ +#define CC115L_SYNC0		0x05	/* Sync Word, Low Byte */ +#define CC115L_PKTLEN		0x06	/* Packet Length */ +#define CC115L_PKTCTRL0		0x08	/* Packet Automation Control */ +#define  CC115L_PKTCTRL0_PKT_FORMAT		4 +#define  CC115L_PKTCTRL0_PKT_FORMAT_NORMAL		0 +#define  CC115L_PKTCTRL0_PKT_FORMAT_SYNC_SERIAL		1 +#define  CC115L_PKTCTRL0_PKT_FORMAT_RANDOM		2 +#define  CC115L_PKTCTRL0_PKT_FORMAT_ASYNC_SERIAL	3 +#define  CC115L_PKTCTRL0_PKT_FORMAT_MASK		3 +#define  CC115L_PKTCTRL0_PKT_CRC_EN		2 +#define  CC115L_PKTCTRL0_PKT_LENGTH_CONFIG	0 +#define  CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_FIXED	0 +#define  CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_VARIABLE	1 +#define  CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_INFINITE	2 +#define  CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_MASK		3 +#define CC115L_CHANNR		0x0a	/* Channel Number */ +#define CC115L_FSCTRL0		0x0c	/* Frequency Synthesizer Control */ +#define CC115L_FREQ2 		0x0d	/* Frequency Control Word, High Byte */ +#define CC115L_FREQ1 		0x0e	/* Frequency Control Word, Middle Byte */ +#define CC115L_FREQ0 		0x0f	/* Frequency Control Word, Low Byte */ +#define CC115L_MDMCFG4 		0x10	/* Modem Configuration */ +#define  CC115L_MDMCFG4_DRATE_E			0 +#define CC115L_MDMCFG3		0x11	/* Modem Configuration */ +#define CC115L_MDMCFG2		0x12	/* Modem Configuration */ +#define  CC115L_MDMCFG2_MOD_FORMAT		4 +#define  CC115L_MDMCFG2_MOD_FORMAT_2FSK			0 +#define  CC115L_MDMCFG2_MOD_FORMAT_GFSK			1 +#define  CC115L_MDMCFG2_MOD_FORMAT_OOK			3 +#define  CC115L_MDMCFG2_MOD_FORMAT_4FSK			4 +#define  CC115L_MDMCFG2_MOD_FORMAT_MASK			7 +#define  CC115L_MDMCFG2_MANCHESTER_EN		3 +#define  CC115L_MDMCFG2_SYNC_MODE		0 +#define  CC115L_MDMCFG2_SYNC_MODE_NONE			0 +#define  CC115L_MDMCFG2_SYNC_MODE_16BITS		1 +#define  CC115L_MDMCFG2_SYNC_MODE_32BITS		3 +#define  CC115L_MDMCFG2_SYNC_MODE_MASK			3 +#define CC115L_MDMCFG1		0x13	/* Modem Configuration */ +#define  CC115L_MDMCFG1_NUM_PREAMBLE		4 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_2			0 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_3			1 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_4			2 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_6			3 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_8			4 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_12			5 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_16			6 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_24			7 +#define  CC115L_MDMCFG1_NUM_PREAMBLE_MASK		7 +#define  CC115L_MDMCFG1_CHANSPC_E		0 +#define CC115L_MDMCFG0		0x14	/* Modem Configuration */ +#define CC115L_DEVIATN		0x15	/* Modem Deviation Setting */ +#define  CC115L_DEVIATN_DEVIATION_E		4 +#define  CC115L_DEVIATN_DEVIATION_E_MASK	7 +#define  CC115L_DEVIATN_DEVIATION_M		0 +#define  CC115L_DEVIATN_DEVIATION_M_MASK	7 +#define CC115L_MCSM1		0x17	/* Main Radio Control State Machine Configuration */ +#define  CC115L_MCSM1_TXOFF_MODE		0 +#define  CC115L_MCSM1_TXOFF_MODE_IDLE			0 +#define  CC115L_MCSM1_TXOFF_MODE_FSTXON			1 +#define  CC115L_MCSM1_TXOFF_MODE_TX			2 +#define  CC115L_MCSM1_TXOFF_MODE_MASK			3 +#define CC115L_MCSM0		0x18	/* Main Radio Control State Machine Configuration */ +#define  CC115L_MCSM0_FS_AUTOCAL		4 +#define  CC115L_MCSM0_FS_AUTOCAL_NEVER			0 +#define  CC115L_MCSM0_FS_AUTOCAL_IDLE_TO_TX		1 +#define  CC115L_MCSM0_FS_AUTOCAL_TX_TO_IDLE		2 +#define  CC115L_MCSM0_FS_AUTOCAL_4TH_TX_TO_IDLE		3 +#define  CC115L_MCSM0_FS_AUTOCAL_MASK			3 +#define  CC115L_MCSM0_PO_TIMEOUT		2 +#define  CC115L_MCSM0_PO_TIMEOUT_1			0 +#define  CC115L_MCSM0_PO_TIMEOUT_16			1 +#define  CC115L_MCSM0_PO_TIMEOUT_64			2 +#define  CC115L_MCSM0_PO_TIMEOUT_256			3 +#define  CC115L_MCSM0_PO_TIMEOUT_MASK			3 +#define  CC115L_MCSM0_XOSC_FORCE_ON		0 +#define CC115L_RESERVED_0X20	0x20	/* Use setting from SmartRF Studio */ +#define CC115L_FREND0		0x22	/* Front End TX Configuration */ +#define CC115L_FSCAL3		0x23	/* Frequency Synthesizer Calibration */ +#define CC115L_FSCAL2		0x24	/* Frequency Synthesizer Calibration */ +#define CC115L_FSCAL1		0x25	/* Frequency Synthesizer Calibration */ +#define CC115L_FSCAL0		0x26	/* Frequency Synthesizer Calibration */ +#define CC115L_RESERVED_0X29	0x29    /* Use setting from SmartRF Studio */ +#define CC115L_RESERVED_0X2A    0x2a   	/* Use setting from SmartRF Studio */ +#define CC115L_RESERVED_0X2B    0x2b    /* Use setting from SmartRF Studio */ +#define CC115L_TEST2		0x2c	/* Various Test Settings */ +#define CC115L_TEST1		0x2d	/* Various Test Settings */ +#define CC115L_TEST0		0x2e	/* Various Test Settings */ + +/* Status registers (use BURST bit to select these) */ +#define CC115L_PARTNUM		(0x30|(1<<CC115L_BURST))	/* Part number for CC115L */ +#define CC115L_VERSION		(0x31|(1<<CC115L_BURST))	/* Current version number */ +#define CC115L_MARCSTATE	(0x35|(1<<CC115L_BURST))	/* Control state machine state */ +#define  CC115L_MARCSTATE_MASK		0x1f +#define  CC115L_MARCSTATE_SLEEP		0x00 +#define  CC115L_MARCSTATE_IDLE		0x01 +#define  CC115L_MARCSTATE_XOFF		0x02 +#define  CC115L_MARCSTATE_VCOON_MC	0x03 +#define  CC115L_MARCSTATE_REGON_MC	0x04 +#define  CC115L_MARCSTATE_MANCAL	0x05 +#define  CC115L_MARCSTATE_VCOON		0x06 +#define  CC115L_MARCSTATE_REGON		0x07 +#define  CC115L_MARCSTATE_STARTCAL	0x08 +#define  CC115L_MARCSTATE_BWBOOST	0x09 +#define  CC115L_MARCSTATE_FS_LOCK	0x0a +#define  CC115L_MARCSTATE_ENDCAL	0x0c +#define  CC115L_MARCSTATE_FSTXON	0x12 +#define  CC115L_MARCSTATE_TX		0x13 +#define  CC115L_MARCSTATE_TX_END	0x14 +#define  CC115L_MARCSTATE_TX_UNDERFLOW	0x16 +#define CC115L_PKTSTATUS	(0x38|(1<<CC115L_BURST))	/* Current GDOx status and packet status */ +#define CC115L_TXBYTES		(0x3a|(1<<CC115L_BURST))	/* Underflow and number of bytes in the TX FIFO */ +#define  CC115L_TXBYTES_TXFIFO_UNDERFLOW	7 +#define  CC115L_TXBYTES_NUM_TX_BYTES		0 +#define  CC115L_TXBYTES_NUM_TX_BYTES_MASK		0x7f + +/* Command strobes (no BURST bit for these) */ +#define CC115L_SRES		0x30 +#define CC115L_SFSTXON		0x31 +#define CC115L_SXOFF		0x32 +#define CC115L_SCAL		0x33 +#define CC115L_STX		0x35 +#define CC115L_SIDLE		0x36 +#define CC115L_SPWD		0x39 +#define CC115L_SFTX		0x3b +#define CC115L_SNOP		0x3d + +#define CC115L_FIFO		0x3f + +#define CC115L_FIFO_SIZE	64 + +/* Status byte */ +#define CC115L_STATUS_CHIP_RDY	7 +#define CC115L_STATUS_STATE	4 +#define  CC115L_STATUS_STATE_IDLE		0 +#define  CC115L_STATUS_STATE_TX			2 +#define  CC115L_STATUS_STATE_FSTXON		3 +#define  CC115L_STATUS_STATE_CALIBRATE		4 +#define  CC115L_STATUS_STATE_SETTLING		5 +#define  CC115L_STATUS_STATE_TX_FIFO_UNDERFLOW	7 +#define  CC115L_STATUS_STATE_MASK		7 + +#define CC115L_STATUS_FIFO_BYTES_AVAILABLE	0 +#endif /* _AO_CC115L_H_ */ | 
