📄 cc1000const.h
字号:
// $Id: CC1000Const.h,v 1.19 2004/04/14 20:46:50 jpolastre Exp $
/* -*- Mode: C; c-basic-indent: 2; indent-tabs-mode: nil -*- */
/* tab:4
* IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. By
* downloading, copying, installing or using the software you agree to
* this license. If you do not agree to this license, do not download,
* install, copy or use the software.
*
* Intel Open Source License
*
* Copyright (c) 2002 Intel Corporation
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR ITS
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
*/
/*
*
* Authors: Phil Buonadonna
* Date last modified: 1/10/03
*
*/
/**
* @author Phil Buonadonna
*/
#ifndef _CC1KCONST_H
#define _CC1KCONST_H
#include <avr/pgmspace.h>
/* Constants defined for CC1K */
/* Register addresses */
#define CC1K_MAIN 0x00
#define CC1K_FREQ_2A 0x01
#define CC1K_FREQ_1A 0x02
#define CC1K_FREQ_0A 0x03
#define CC1K_FREQ_2B 0x04
#define CC1K_FREQ_1B 0x05
#define CC1K_FREQ_0B 0x06
#define CC1K_FSEP1 0x07
#define CC1K_FSEP0 0x08
#define CC1K_CURRENT 0x09
#define CC1K_FRONT_END 0x0A //10
#define CC1K_PA_POW 0x0B //11
#define CC1K_PLL 0x0C //12
#define CC1K_LOCK 0x0D //13
#define CC1K_CAL 0x0E //14
#define CC1K_MODEM2 0x0F //15
#define CC1K_MODEM1 0x10 //16
#define CC1K_MODEM0 0x11 //17
#define CC1K_MATCH 0x12 //18
#define CC1K_FSCTRL 0x13 //19
#define CC1K_FSHAPE7 0x14 //20
#define CC1K_FSHAPE6 0x15 //21
#define CC1K_FSHAPE5 0x16 //22
#define CC1K_FSHAPE4 0x17 //23
#define CC1K_FSHAPE3 0x18 //24
#define CC1K_FSHAPE2 0x19 //25
#define CC1K_FSHAPE1 0x1A //26
#define CC1K_FSDELAY 0x1B //27
#define CC1K_PRESCALER 0x1C //28
#define CC1K_TEST6 0x40 //64
#define CC1K_TEST5 0x41 //66
#define CC1K_TEST4 0x42 //67
#define CC1K_TEST3 0x43 //68
#define CC1K_TEST2 0x44 //69
#define CC1K_TEST1 0x45 //70
#define CC1K_TEST0 0x46 //71
// MAIN Register Bit Posititions
#define CC1K_RXTX 7
#define CC1K_F_REG 6
#define CC1K_RX_PD 5
#define CC1K_TX_PD 4
#define CC1K_FS_PD 3
#define CC1K_CORE_PD 2
#define CC1K_BIAS_PD 1
#define CC1K_RESET_N 0
// CURRENT Register Bit Positions
#define CC1K_VCO_CURRENT 4
#define CC1K_LO_DRIVE 2
#define CC1K_PA_DRIVE 0
// FRONT_END Register Bit Positions
#define CC1K_BUF_CURRENT 5
#define CC1K_LNA_CURRENT 3
#define CC1K_IF_RSSI 1
#define CC1K_XOSC_BYPASS 0
// PA_POW Register Bit Positions
#define CC1K_PA_HIGHPOWER 4
#define CC1K_PA_LOWPOWER 0
// PLL Register Bit Positions
#define CC1K_EXT_FILTER 7
#define CC1K_REFDIV 3
#define CC1K_ALARM_DISABLE 2
#define CC1K_ALARM_H 1
#define CC1K_ALARM_L 0
// LOCK Register Bit Positions
#define CC1K_LOCK_SELECT 4
#define CC1K_PLL_LOCK_ACCURACY 3
#define CC1K_PLL_LOCK_LENGTH 2
#define CC1K_LOCK_INSTANT 1
#define CC1K_LOCK_CONTINUOUS 0
// CAL Register Bit Positions
#define CC1K_CAL_START 7
#define CC1K_CAL_DUAL 6
#define CC1K_CAL_WAIT 5
#define CC1K_CAL_CURRENT 4
#define CC1K_CAL_COMPLETE 3
#define CC1K_CAL_ITERATE 0
// MODEM2 Register Bit Positions
#define CC1K_PEAKDETECT 7
#define CC1K_PEAK_LEVEL_OFFSET 0
// MODEM1 Register Bit Positions
#define CC1K_MLIMIT 5
#define CC1K_LOCK_AVG_IN 4
#define CC1K_LOCK_AVG_MODE 3
#define CC1K_SETTLING 1
#define CC1K_MODEM_RESET_N 0
// MODEM0 Register Bit Positions
#define CC1K_BAUDRATE 4
#define CC1K_DATA_FORMAT 2
#define CC1K_XOSC_FREQ 0
// MATCH Register Bit Positions
#define CC1K_RX_MATCH 4
#define CC1K_TX_MATCH 0
// FSCTLR Register Bit Positions
#define CC1K_DITHER1 3
#define CC1K_DITHER0 2
#define CC1K_SHAPE 1
#define CC1K_FS_RESET_N 0
// PRESCALER Register Bit Positions
#define CC1K_PRE_SWING 6
#define CC1K_PRE_CURRENT 4
#define CC1K_IF_INPUT 3
#define CC1K_IF_FRONT 2
// TEST6 Register Bit Positions
#define CC1K_LOOPFILTER_TP1 7
#define CC1K_LOOPFILTER_TP2 6
#define CC1K_CHP_OVERRIDE 5
#define CC1K_CHP_CO 0
// TEST5 Register Bit Positions
#define CC1K_CHP_DISABLE 5
#define CC1K_VCO_OVERRIDE 4
#define CC1K_VCO_AO 0
// TEST3 Register Bit Positions
#define CC1K_BREAK_LOOP 4
#define CC1K_CAL_DAC_OPEN 0
/*
* CC1K Register Parameters Table
*
* This table follows the same format order as the CC1K register
* set EXCEPT for the last entry in the table which is the
* CURRENT register value for TX mode.
*
* NOTE: To save RAM space, this table resides in program memory (flash).
* This has two important implications:
* 1) You can't write to it (duh!)
* 2) You must read it using the PRG_RDB(addr) macro. IT CANNOT BE ACCESSED AS AN ORDINARY C ARRAY.
*
* Add/remove individual entries below to suit your RF tastes.
*
*/
#define CC1K_433_002_MHZ 0x00
#define CC1K_915_998_MHZ 0x01
#define CC1K_434_845_MHZ 0x02
#define CC1K_914_077_MHZ 0x03
#define CC1K_315_178_MHZ 0x04
#ifdef CC1K_DEFAULT_FREQ
#define CC1K_DEF_PRESET (CC1K_DEFAULT_FREQ)
#endif
#ifdef CC1K_MANUAL_FREQ
#define CC1K_DEF_FREQ (CC1K_MANUAL_FREQ)
#endif
#ifndef CC1K_DEF_PRESET
#define CC1K_DEF_PRESET (CC1K_433_002_MHZ)
#endif
//#define CC1K_SquelchInit 0x02F8 // 0.90V using the bandgap reference
#define CC1K_SquelchInit 0x138
#define CC1K_SquelchTableSize 9
#define CC1K_MaxRSSISamples 5
#define CC1K_Settling 1
#define CC1K_ValidPrecursor 2
#define CC1K_SquelchIntervalFast 128
#define CC1K_SquelchIntervalSlow 2560
#define CC1K_SquelchCount 30
#define CC1K_SquelchBuffer 0
#define CC1K_LPL_STATES 7
#define CC1K_LPL_PACKET_TIME 16
// duty cycle max packets effective throughput
// ----------------- ----------------- -----------------
// 100% duty cycle 42.93 packets/sec 12.364kbps
// 35.5% duty cycle 19.69 packets/sec 5.671kbps
// 11.5% duty cycle 8.64 packets/sec 2.488kbps
// 7.53% duty cycle 6.03 packets/sec 1.737kbps
// 5.61% duty cycle 4.64 packets/sec 1.336kbps
// 2.22% duty cycle 1.94 packets/sec 0.559kbps
// 1.00% duty cycle 0.89 packets/sec 0.258kbps
static const prog_uchar CC1K_LPL_PreambleLength[CC1K_LPL_STATES*2] = {
0, 8, //28
0, 94, //94
0, 250, //250
0x01, 0x73, //371,
0x01, 0xEA, //490,
0x04, 0xBC, //1212
0x0A, 0x5E //2654
};
static const prog_uchar CC1K_LPL_SleepTime[CC1K_LPL_STATES*2] = {
0, 0, //0
0, 20, //20
0, 85, //85
0, 135, //135
0, 185, //185
0x01, 0xE5, //485
0x04, 0x3D //1085
};
static const prog_uchar CC1K_LPL_SleepPreamble[CC1K_LPL_STATES] = {
0,
8,
8,
8,
8,
8,
8
};
static const prog_uchar CC1K_Params[6][31] = {
// (0) 433.002 MHz channel, 19.2 Kbps data, Manchester Encoding, High Side LO
{ // MAIN 0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -