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

1
Poster un Commentaire

avatar
1 Fils de commentaires
0 RĂ©ponses de fil
0 Abonnés
 
Commentaire avec le plus de réactions
Le plus populaire des commentaires
1 Auteurs du commentaire
sevenstring Auteurs de commentaires récents

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

  S’abonner  
plus récent plus ancien
Notifier de
sevenstring
Invité

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.