217 lines
8.5 KiB
C
217 lines
8.5 KiB
C
/*
|
|
* Copyright (c) 2011, Swedish Institute of Computer Science
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. 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.
|
|
* 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE OR 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.
|
|
*
|
|
*/
|
|
|
|
#ifndef CC2520_CONST_H
|
|
#define CC2520_CONST_H
|
|
|
|
/*
|
|
* All constants are from the Chipcon cc2520 Data Sheet that at one
|
|
* point in time could be found at
|
|
* http://www.chipcon.com/files/cc2520_Data_Sheet_1_4.pdf
|
|
*
|
|
* The page numbers below refer to pages in this document.
|
|
*/
|
|
|
|
/* Page 27. */
|
|
enum cc2520_status_byte {
|
|
CC2520_XOSC16M_STABLE = 7,
|
|
CC2520_RSSI_VALID = 6,
|
|
CC2520_EXCEPTION_CHA = 5,
|
|
CC2520_EXCEPTION_CHB = 4,
|
|
CC2520_DPU_H = 3,
|
|
CC2520_DPU_L = 2,
|
|
CC2520_TX_ACTIVE = 1,
|
|
CC2520_RX_ACTIVE = 0,
|
|
|
|
};
|
|
#define TX_FRM_DONE 0x02
|
|
#define RX_FRM_DONE 0x01
|
|
#define RX_FRM_ABORTED 0x20
|
|
#define RX_FRM_UNDERFLOW 0x20
|
|
|
|
/* Page 27. */
|
|
enum cc2520_memory_size {
|
|
CC2520_RAM_SIZE = 640,
|
|
CC2520_FIFO_SIZE = 128,
|
|
};
|
|
|
|
/* Page 29. */
|
|
enum cc2520_address {
|
|
CC2520RAM_TXFIFO = 0x100,
|
|
CC2520RAM_RXFIFO = 0x180,
|
|
CC2520RAM_IEEEADDR = 0x3EA,
|
|
CC2520RAM_PANID = 0x3F2,
|
|
CC2520RAM_SHORTADDR = 0x3F4,
|
|
};
|
|
|
|
// IEEE 802.15.4 defined constants (2.4 GHz logical channels)
|
|
#define MIN_CHANNEL 11 // 2405 MHz
|
|
#define MAX_CHANNEL 26 // 2480 MHz
|
|
#define CHANNEL_SPACING 5 // MHz
|
|
|
|
// FREG definitions (BSET/BCLR supported)
|
|
#define CC2520_FRMFILT0 0x000
|
|
#define CC2520_FRMFILT1 0x001
|
|
#define CC2520_SRCMATCH 0x002
|
|
#define CC2520_SRCSHORTEN0 0x004
|
|
#define CC2520_SRCSHORTEN1 0x005
|
|
#define CC2520_SRCSHORTEN2 0x006
|
|
#define CC2520_SRCEXTEN0 0x008
|
|
#define CC2520_SRCEXTEN1 0x009
|
|
#define CC2520_SRCEXTEN2 0x00A
|
|
#define CC2520_FRMCTRL0 0x00C
|
|
#define CC2520_FRMCTRL1 0x00D
|
|
#define CC2520_RXENABLE0 0x00E
|
|
#define CC2520_RXENABLE1 0x00F
|
|
#define CC2520_EXCFLAG0 0x010
|
|
#define CC2520_EXCFLAG1 0x011
|
|
#define CC2520_EXCFLAG2 0x012
|
|
#define CC2520_EXCMASKA0 0x014
|
|
#define CC2520_EXCMASKA1 0x015
|
|
#define CC2520_EXCMASKA2 0x016
|
|
#define CC2520_EXCMASKB0 0x018
|
|
#define CC2520_EXCMASKB1 0x019
|
|
#define CC2520_EXCMASKB2 0x01A
|
|
#define CC2520_EXCBINDX0 0x01C
|
|
#define CC2520_EXCBINDX1 0x01D
|
|
#define CC2520_EXCBINDY0 0x01E
|
|
#define CC2520_EXCBINDY1 0x01F
|
|
#define CC2520_GPIOCTRL0 0x020
|
|
#define CC2520_GPIOCTRL1 0x021
|
|
#define CC2520_GPIOCTRL2 0x022
|
|
#define CC2520_GPIOCTRL3 0x023
|
|
#define CC2520_GPIOCTRL4 0x024
|
|
#define CC2520_GPIOCTRL5 0x025
|
|
#define CC2520_GPIOPOLARITY 0x026
|
|
#define CC2520_GPIOCTRL 0x028
|
|
#define CC2520_DPUCON 0x02A
|
|
#define CC2520_DPUSTAT 0x02C
|
|
#define CC2520_FREQCTRL 0x02E
|
|
#define CC2520_FREQTUNE 0x02F
|
|
#define CC2520_TXPOWER 0x030
|
|
#define CC2520_TXCTRL 0x031
|
|
#define CC2520_FSMSTAT0 0x032
|
|
#define CC2520_FSMSTAT1 0x033
|
|
#define CC2520_FIFOPCTRL 0x034
|
|
#define CC2520_FSMCTRL 0x035
|
|
#define CC2520_CCACTRL0 0x036
|
|
#define CC2520_CCACTRL1 0x037
|
|
#define CC2520_RSSI 0x038
|
|
#define CC2520_RSSISTAT 0x039
|
|
#define CC2520_TXFIFO_BUF 0x03A
|
|
#define CC2520_RXFIRST 0x03C
|
|
#define CC2520_RXFIFOCNT 0x03E
|
|
#define CC2520_TXFIFOCNT 0x03F
|
|
|
|
// SREG definitions (BSET/BCLR unsupported)
|
|
#define CC2520_CHIPID 0x040
|
|
#define CC2520_VERSION 0x042
|
|
#define CC2520_EXTCLOCK 0x044
|
|
#define CC2520_MDMCTRL0 0x046
|
|
#define CC2520_MDMCTRL1 0x047
|
|
#define CC2520_FREQEST 0x048
|
|
#define CC2520_RXCTRL 0x04A
|
|
#define CC2520_FSCTRL 0x04C
|
|
#define CC2520_FSCAL0 0x04E
|
|
#define CC2520_FSCAL1 0x04F
|
|
#define CC2520_FSCAL2 0x050
|
|
#define CC2520_FSCAL3 0x051
|
|
#define CC2520_AGCCTRL0 0x052
|
|
#define CC2520_AGCCTRL1 0x053
|
|
#define CC2520_AGCCTRL2 0x054
|
|
#define CC2520_AGCCTRL3 0x055
|
|
#define CC2520_ADCTEST0 0x056
|
|
#define CC2520_ADCTEST1 0x057
|
|
#define CC2520_ADCTEST2 0x058
|
|
#define CC2520_MDMTEST0 0x05A
|
|
#define CC2520_MDMTEST1 0x05B
|
|
#define CC2520_DACTEST0 0x05C
|
|
#define CC2520_DACTEST1 0x05D
|
|
#define CC2520_ATEST 0x05E
|
|
#define CC2520_DACTEST2 0x05F
|
|
#define CC2520_PTEST0 0x060
|
|
#define CC2520_PTEST1 0x061
|
|
#define CC2520_RESERVED 0x062
|
|
#define CC2520_DPUBIST 0x07A
|
|
#define CC2520_ACTBIST 0x07C
|
|
#define CC2520_RAMBIST 0x07E
|
|
|
|
// Instruction implementation
|
|
#define CC2520_INS_SNOP 0x00
|
|
#define CC2520_INS_IBUFLD 0x02
|
|
#define CC2520_INS_SIBUFEX 0x03
|
|
#define CC2520_INS_SSAMPLECCA 0x04
|
|
#define CC2520_INS_SRES 0x0F
|
|
#define CC2520_INS_MEMRD 0x10
|
|
#define CC2520_INS_MEMWR 0x20
|
|
#define CC2520_INS_RXBUF 0x30
|
|
#define CC2520_INS_RXBUFCP 0x38
|
|
#define CC2520_INS_RXBUFMOV 0x32
|
|
#define CC2520_INS_TXBUF 0x3A
|
|
#define CC2520_INS_TXBUFCP 0x3E
|
|
#define CC2520_INS_RANDOM 0x3C
|
|
#define CC2520_INS_SXOSCON 0x40
|
|
#define CC2520_INS_STXCAL 0x41
|
|
#define CC2520_INS_SRXON 0x42
|
|
#define CC2520_INS_STXON 0x43
|
|
#define CC2520_INS_STXONCCA 0x44
|
|
#define CC2520_INS_SRFOFF 0x45
|
|
#define CC2520_INS_SXOSCOFF 0x46
|
|
#define CC2520_INS_SFLUSHRX 0x47
|
|
#define CC2520_INS_SFLUSHTX 0x48
|
|
#define CC2520_INS_SACK 0x49
|
|
#define CC2520_INS_SACKPEND 0x4A
|
|
#define CC2520_INS_SNACK 0x4B
|
|
#define CC2520_INS_SRXMASKBITSET 0x4C
|
|
#define CC2520_INS_SRXMASKBITCLR 0x4D
|
|
#define CC2520_INS_RXMASKAND 0x4E
|
|
#define CC2520_INS_RXMASKOR 0x4F
|
|
#define CC2520_INS_MEMCP 0x50
|
|
#define CC2520_INS_MEMCPR 0x52
|
|
#define CC2520_INS_MEMXCP 0x54
|
|
#define CC2520_INS_MEMXWR 0x56
|
|
#define CC2520_INS_BCLR 0x58
|
|
#define CC2520_INS_BSET 0x59
|
|
#define CC2520_INS_CTR 0x60
|
|
#define CC2520_INS_CBCMAC 0x64
|
|
#define CC2520_INS_UCBCMAC 0x66
|
|
#define CC2520_INS_CCM 0x68
|
|
#define CC2520_INS_UCCM 0x6A
|
|
#define CC2520_INS_ECB 0x70
|
|
#define CC2520_INS_ECBO 0x72
|
|
#define CC2520_INS_ECBX 0x74
|
|
#define CC2520_INS_ECBXO 0x76
|
|
#define CC2520_INS_INC 0x78
|
|
#define CC2520_INS_ABORT 0x7F
|
|
#define CC2520_INS_REGRD 0x80
|
|
#define CC2520_INS_REGWR 0xC0
|
|
|
|
#endif /* CC2520_CONST_H */
|