Mar 142014
 

In a previous article, I played with an arduino combined with a TI CC1101.

The CC1101 is a great and cheap chip to send datas over the air at frequencies below 1ghz, using different modulations.
You can tweak a great many options which should make this chip work with many other devices.

I had been looking for weeks (months actually…) to use ASK/OOK modulation in order to link it with my chacon temperature/humidity sensors or even with my RFXTRX433 (from RFXCOM).

It seems I finally managed to find the right settings for ASK/OOK : my two devices now talk to each other (@433mhz) using this modulation 🙂

I believe I am still a long way from talking to my chacon or rfxcom devices but still, I made some progress.

Before I forget, here below my settings : it could be helpful for some other geeks out there.

Now if someone out there manage to interface his cc1101 with an ASK/OOK device, please let me know !

/*
# Sync word qualifier mode = 30/32 sync word bits detected
# CRC autoflush = false
# Channel spacing = 199.951172
# Data format = Normal mode
# Data rate = 4.79794
# RX filter BW = 101.562500
# PA ramping = false
# Preamble count = 4
# Whitening = false
# Address config = No address check
# Carrier frequency = 433.919830
# Device address = 0
# TX power = 0
# Manchester enable = true
# CRC enable = true
# Deviation = 25.390625
# Packet length mode = Variable packet length mode. Packet length configured by the first byte after sync word
# Packet length = 255
# Modulation format = ASK/OOK
# Base frequency = 433.919830
# Channel number = 0
*/
void config2()
{
byte PA_TABLE[]= {0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,};

cc1101.writeReg(CC1101_IOCFG0,0x06);
cc1101.writeReg(CC1101_FIFOTHR,0x47);
cc1101.writeReg(CC1101_PKTCTRL0,0x05);
cc1101.writeReg(CC1101_FSCTRL1,0x06);
cc1101.writeReg(CC1101_FREQ2,0x10);
cc1101.writeReg(CC1101_FREQ1,0xB1);
cc1101.writeReg(CC1101_FREQ0,0x3B);
cc1101.writeReg(CC1101_MDMCFG4,0xF5);
cc1101.writeReg(CC1101_MDMCFG3,0x83);
cc1101.writeReg(CC1101_MDMCFG2,0x33);
cc1101.writeReg(CC1101_DEVIATN,0x15);
cc1101.writeReg(CC1101_MCSM0,0x18);
cc1101.writeReg(CC1101_FOCCFG,0x16);
cc1101.writeReg(CC1101_WORCTRL,0xFB);
cc1101.writeReg(CC1101_FREND0,0x11);
cc1101.writeReg(CC1101_FSCAL3,0xE9);
cc1101.writeReg(CC1101_FSCAL2,0x2A);
cc1101.writeReg(CC1101_FSCAL1,0x00);
cc1101.writeReg(CC1101_FSCAL0,0x1F);
cc1101.writeReg(CC1101_TEST2,0x81);
cc1101.writeReg(CC1101_TEST1,0x35);
cc1101.writeReg(CC1101_TEST0,0x09);

//thid 1 is needed otherwise only first packets has data
cc1101.writeReg(0x07,0x00); // packet automation control

//notice the burst mode to write beyong the first position (0) ...
cc1101.writeBurstReg(CC1101_PATABLE,PA_TABLE,8);
}
 Posted by at 19 h 24 min

  One Response to “Arduino : play with a CC1101”

  1. I was able to interface a legendary non cc1101 device to my cc1101 kit but the way i did it is through synchronous mode.

    But later in my development, i found out that there is a way to do it using the normal packet mode but not quite as straightforward as the synchronous mode (but doable). i remember i posted this in TI forums last year.

Leave a Reply to sevenstring Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.