Hallo zusammen,
Ich möchte OOK mit dem CC1101 senden.
Das Schreiben/Lesen via SPI mit dem PIC klappt gesichert.
Write/Read; Burst/Single usw. alles geht.
Ich bekomme einfach nicht das klare Verständniss dieses Bausteins in den
Kopf. Kann mir jemand mit der richtigen Initialisierung weiterhelfen?
868,662Mhz, min. 200K/Bit Datenrate, keine festen Pakete und keine CRC
Prüfungen oder Präamblen. Reines OOK vom GDO0 Pin zur HF.
Im Netz stehen zig Beispiele aber nichts bekomme ich aus dem Modul raus.
Habe hier einen Scanner auf der Frequenz laufen und würde die Signale
oder einen Träger hören bzw. bemerken.
Das der CC1101 defekt ist, glaube ich nicht, denn er reagiert ja und ich
kann an GDO0 auch eine LED blinken lassen anhand der SPI Befehle.
Die reine Registerinitialisierung des CC1101 habe ichmit diesen Werten
aus dem I-Net.
1
CC1101_sendreg(CC1101_IOCFG2,0x06);
2
CC1101_sendreg(CC1101_IOCFG1,0x2E);
3
CC1101_sendreg(CC1101_IOCFG0,0x0E);
4
5
CC1101_sendreg(CC1101_FIFOTHR,0x0F);
6
CC1101_sendreg(CC1101_SYNC1,0x9B);
7
CC1101_sendreg(CC1101_SYNC0,0xAD);
8
9
CC1101_sendreg(CC1101_PKTLEN,0x3D);
10
CC1101_sendreg(CC1101_PKTCTRL1,0x06);
11
CC1101_sendreg(CC1101_PKTCTRL0,0x45);
12
13
CC1101_sendreg(CC1101_ADDR,0xFF);
14
CC1101_sendreg(CC1101_FSCTRL1,0x0B);
15
CC1101_sendreg(CC1101_FSCTRL0,0x00);
16
17
CC1101_sendreg(CC1101_FREQ0,0xFB);
18
CC1101_sendreg(CC1101_FREQ1,0x68);
19
CC1101_sendreg(CC1101_FREQ2,0x21);
20
21
CC1101_sendreg(CC1101_MDMCFG4,0x2C);
22
CC1101_sendreg(CC1101_MDMCFG3,0xF8);
23
CC1101_sendreg(CC1101_MDMCFG2,0x33);
24
CC1101_sendreg(CC1101_MDMCFG1,0x42);
25
CC1101_sendreg(CC1101_MDMCFG0,0xF8);
26
CC1101_sendreg(CC1101_DEVIATN,0x00);
27
28
CC1101_sendreg(CC1101_MCSM2,0x07);
29
CC1101_sendreg(CC1101_MCSM1,0x03);
30
CC1101_sendreg(CC1101_MCSM0,0x18);
31
CC1101_sendreg(CC1101_FOCCFG,0x1D);
32
33
CC1101_sendreg(CC1101_BSCFG,0x07);
34
CC1101_sendreg(CC1101_AGCCTRL2,0x04);
35
CC1101_sendreg(CC1101_AGCCTRL1,0x00);
36
CC1101_sendreg(CC1101_AGCCTRL0,0x92);
37
38
CC1101_sendreg(CC1101_WOREVT1,0x87);
39
CC1101_sendreg(CC1101_WOREVT0,0x6B);
40
CC1101_sendreg(CC1101_WORCTRL,0xF8);
41
CC1101_sendreg(CC1101_FREND1,0xB6);
42
CC1101_sendreg(CC1101_FREND0,0x11);
43
44
CC1101_sendreg(CC1101_FSCAL3,0xEA);
45
CC1101_sendreg(CC1101_FSCAL0,0x2A);
46
CC1101_sendreg(CC1101_FSCAL2,0x00);
47
CC1101_sendreg(CC1101_FSCAL1,0x1F);
Wie geht es dann weiter?
Normalerweise sollte ich ja am PIN GD0O den TX Eingang mit Pulsen
beaufschlagen und was im Scanner hören, aber es tut sich nix.
Kann mir jemand mal eine funktionierende OOK Initialisierung geben oder
ein Beispiel?
Gerne auch per PN.
Gruß
CL
Habe mir jetzt die SmartRF Konfigurationsoftware von TI besorgt und
diese mit meinen Parametern gefüttert. Raus kommt diese Chip
Konfiguration.
Leider kann ich immer noch nichts senden.
1
CC1101_sendreg(CC1101_IOCFG2,0x0B);
2
CC1101_sendreg(CC1101_IOCFG0,0x0C);
3
CC1101_sendreg(CC1101_FIFOTHR,0x47);
4
CC1101_sendreg(CC1101_PKTCTRL0,0x12);
5
CC1101_sendreg(CC1101_FSCTRL1,0x06);
6
CC1101_sendreg(CC1101_FREQ2,0x21);
7
CC1101_sendreg(CC1101_FREQ1,0x68);
8
CC1101_sendreg(CC1101_FREQ0,0xFA);
9
CC1101_sendreg(CC1101_MDMCFG4,0xFC);
10
CC1101_sendreg(CC1101_MDMCFG3,0xF8);
11
CC1101_sendreg(CC1101_MDMCFG2,0x30);
12
CC1101_sendreg(CC1101_DEVIATN,0x15);
13
CC1101_sendreg(CC1101_MCSM0,0x18);
14
CC1101_sendreg(CC1101_FOCCFG,0x14);
15
CC1101_sendreg(CC1101_AGCCTRL0,0x92);
16
CC1101_sendreg(CC1101_WORCTRL,0xFB);
17
CC1101_sendreg(CC1101_FREND0,0x11);
18
CC1101_sendreg(CC1101_FSCAL3,0xEA);
19
CC1101_sendreg(CC1101_FSCAL2,0x2A);
20
CC1101_sendreg(CC1101_FSCAL1,0x00);
21
CC1101_sendreg(CC1101_FSCAL0,0x1F);
22
CC1101_sendreg(CC1101_TEST2,0x81);
23
CC1101_sendreg(CC1101_TEST1,0x35);
24
CC1101_sendreg(CC1101_TEST0,0x09);
Wenn ich stichprobenartig Register auslese, kommen die richtigen Werte
raus. Wie kann ich nun das OOK Senden anstoßen, Pin GDO0 geht scheinbar
nicht.
Keiner eine Idee?
Bitte um Unterstützung...
CL
... habe jetzt nach der o.g. Initialisierung noch das PATABLE
beschrieben und das STX Commando gesendet.
1
2
PORTB.B7=0;
3
while(SPI_RDY);//Wait SDO to go low, indicating that the CC1101 is ready
4
SPI1_Write((CC1101_PATABLE&0x3F)|WRITE_BURST);
5
SPI1_Write(0x51);
6
SPI1_Write(0x00);
7
PORTB.B7=1;
8
9
CC1101_sendCS(CC1101_STX);
Jetzt habe ich auch einen Dauerträger auf der gewünschten Frequenz.
Wenn ich nun noch OOK modulieren könnte wäre ich vorerst mal am Ziel.
Der GDO0 Pin wird bei diesem Mode ja als Input geschaltet, aber es tut
sich nix.
Ideen?
CL
Kannst ja mal hier schauen:
https://github.com/heliflieger/a-culfw/blob/master/culfw/clib/cc1100.c
Da gibt es verschiedene Konfigurationen für den CC1100, unter anderem
auch mit OOK. Was mir als erstes auffällt ist die (zu dir)
unterschiedliche Konfiguration von IOCFG0 und IOCFG2. Außerdem solltest
du mal einen Blick auf die Funktionen ccTX bzw. ccRX werfen, weil die -
soweit ich das richtig verstehe - den CC1100 in den entsprechenden Modus
umschalten.
Hallo,
Bist du hier weitergekommen?
Das ist genau das, was mich auch interessieren würde!
Was ich mich frage - müsste das nicht auch viel einfacher gehen?
Die ELECHOUSE Library bietet ja schon viele Voreinstellungen an:
Serial.begin(9600);
ELECHOUSE_cc1101.Init(); // must be set to initialize
the cc1101!
ELECHOUSE_cc1101.setGDO(gdo0,0); // set lib internal gdo pins
(gdo0,gdo2). Gdo2 not use for this example.
ELECHOUSE_cc1101.setCCMode(1); // set config for internal
transmission mode.
ELECHOUSE_cc1101.setModulation(0); // set modulation mode. 0 =
2-FSK, 1 = GFSK, 2 = ASK/OOK, 3 = 4-FSK, 4 = MSK.
ELECHOUSE_cc1101.setMHZ(433.92); // Here you can set your basic
frequency. The lib calculates the frequency automatically (default =
433.92).The cc1101 can: 300-348 MHZ, 387-464MHZ and 779-928MHZ. Read
More info from datasheet.
Einzig das Senden von HIGH and LOW müsste noch umgesetzt werden.
Der Befehl ELECHOUSE_CC1101.SendData("daten",byte) sendet ja immer nur
ganze Bytes die irgendwie codiert werden.
Gruß
Stefan