Hello,
I am using the RF2500-EZ430 to develop a simple sensor network.
I have written code for an end device to transmit a 12-byte fixed-length packet every 4 seconds. I have an access point programmed to receive and report the data.
It works when I use the settings from SmartRF Studio for 250 kBaud using MSK modulation. But it doesn't work at all when I use the settings for 10 kBaud using 2-FSK modulation. I have also tried other settings, like 100 kBaud using MSK modulation.
I am using the HAL RF interface code, with normal FIFO packet operation. I have a single header file to define the radio configurations, shared by both the end node and access point devices.
Any help is appreciated. I thought it should work when I change the settings in SmartRF Studio.
Could it possibly have something to do with the crystals not being accurate enough for lower data rates?
I really want to use lower data rates than 250 kBaud, so that I will get better receive sensitivity. But is this actually sensible? I have been reading design note DN021, which shows that the increased sensitivity gained frmo lower data rates also depends on a more accurate crystal.
These are the settings that worked at 250 kBaud:
// Chipcon
// Product = CC2500
// Chip version = E (VERSION = 0x03)
// Crystal accuracy = 10 ppm
// X-tal frequency = 26 MHz
// RF output power = 0 dBm
// RX filterbandwidth = 541.666667 kHz
// Phase = 0
// Datarate = 249.938965 kBaud
// Modulation = (7) MSK
// Manchester enable = (0) Manchester disabled
// RF Frequency = 2432.999908 MHz
// Channel spacing = 199.951172 kHz
// Channel number = 0
// Optimization = Current
// Sync mode = (3) 30/32 sync word bits detected
// Format of RX/TX data = (0) Normal mode, use FIFOs for RX and TX
// CRC operation = (1) CRC calculation in TX and CRC check in RX enabled
// Forward Error Correction = (0) FEC disabled
// Length configuration = fixed length packets, length set by PKTLEN
// Packetlength = 255
// Preamble count = (2) 4 bytes
// Append status = 1
// Address check = (0) No address check
// FIFO autoflush = 0
// Device address = 0
// GDO0 signal selection = ( 6) Asserts when sync word has been sent / received, and de-asserts at the end of the packet
// GDO2 signal selection = (41) CHIP_RDY
HAL_RF_CONFIG rfSettings = {
0x12, // FSCTRL1 Frequency synthesizer control.
0x00, // FSCTRL0 Frequency synthesizer control.
0x5D, // FREQ2 Frequency control word, high byte.
0x93, // FREQ1 Frequency control word, middle byte.
0xB1, // FREQ0 Frequency control word, low byte.
0x2D, // MDMCFG4 Modem configuration.
0x3B, // MDMCFG3 Modem configuration.
0xF3, // MDMCFG2 Modem configuration.
0x22, // MDMCFG1 Modem configuration.
0xF8, // MDMCFG0 Modem configuration.
0x00, // CHANNR Channel number.
0x00, // DEVIATN Modem deviation setting (when FSK modulation is enabled).
0xB6, // FREND1 Front end RX configuration.
0x10, // FREND0 Front end TX configuration.
0x18, // MCSM0 Main Radio Control State Machine configuration.
0x1D, // FOCCFG Frequency Offset Compensation Configuration.
0x1C, // BSCFG Bit synchronization Configuration.
0xC7, // AGCCTRL2 AGC control.
0x00, // AGCCTRL1 AGC control.
0xB0, // AGCCTRL0 AGC control.
0xEA, // FSCAL3 Frequency synthesizer calibration.
0x0A, // FSCAL2 Frequency synthesizer calibration.
0x00, // FSCAL1 Frequency synthesizer calibration.
0x11, // FSCAL0 Frequency synthesizer calibration.
0x59, // FSTEST Frequency synthesizer calibration.
0x88, // TEST2 Various test settings.
0x31, // TEST1 Various test settings.
0x0B, // TEST0 Various test settings.
0x29, // IOCFG2 GDO2 output pin configuration. 0x29 = CHIP_RDY
0x06, // IOCFG0D GDO0 pin: 0x06 = 1 when sync has been sent/received, 0 when packet finished
0x04, // PKTCTRL1 Packet automation control. Append status, no address check
0x04, // PKTCTRL0 Packet automation control. CRC enabled, fixed length packets
0x00, // ADDR Device address.
sizeof(struct_Payload) // PKTLEN Packet length.
};