Hallo, ich habe einen kleinen Sender mit einem Attiny und einem CC1101 Chip, würde gerne das Protokoll klonen. Habe LogicAnalyser und einen CC1111 USB Dongle zur Verfügung. Binaber ehrlich gesagt noch nicht weit gekommen. Macht es Sinn mit dem Logikanalyser die SPI Schnittstelle zu analysieren? MOSI, MISO, CLK ...... bin für jeden Tip dankbar.
„S“ „. schrieb: > Macht es Sinn mit dem Logikanalyser die SPI Schnittstelle zu > analysieren? MOSI, MISO, CLK ...... Das dürfte der einzig sinnvolle Ansatz sein. Denn über die Schnittstelle "redet" Dein Tiny ja mit diesem Chip. Also kannst Du Dir ansehen, was da alles gesendet wird, und das mit den Informationen im Datenblatt (ab S.29) abgleichen.
Das ist bei raus gekommen. Jetzt muss ich wohl viel lesen.
> Jetzt muss ich wohl viel lesen.
Das Wetter soll in den nächsten Tagen nicht besonders toll werden.
Es werden immer zwei Bytes nacheinander gesendet. Das erste Byte besteht aus sechs Adressbits, einem Burst- und einem R/-W-Bit. Bei Deinem Mitschrieb sind das also 0x36 0x3B 0x36 ist 0011 0110 Die obersten beiden Bits sind das R/-W-Bit und das Burst-Bit, hier also 0. Die Adresse, die beschrieben wird, ist also 0x36. Dort wird der Wert 0x3B 'reingeschrieben. Was das nun bedeutet, findest Du im Datenblatt ab Seite 66. Da gibt es "Command Strobe Registers", "Configuration Registers", "Status Registers" und einen "SPI Address Space". Wofür das alles da ist? Keine Ahnung. Das wirst Du selbst rausfinden müssen. Ist Dein Mitschrieb der Beginn der Kommunikation nach dem Einschalten Deines Geräts? Nur das dürfte irgendeinen Sinn haben, irgendwo mittendrin damit anzufangen ist bei der Komplexität des Dings hier sinnlos.
„S“ „. schrieb: > Macht es Sinn mit dem Logikanalyser die SPI Schnittstelle zu > analysieren? MOSI, MISO, CLK ...... Kommt darauf an wo das Problem liegt. Funktioniert die Kommunikation zwischen MC und CC1101 einwandfrei, dann braucht man die SPI Leitungen nicht beobachten. Dann muss man sich auf die **richtige** Konfiguration des CC1101 konzentrieren. Welche Mitteln stehen zur Verfügung um den Programmablauf und Registerinhalte des MCs zu kontrollieren?
„S“ „. schrieb: > Das ist bei raus gekommen. Jetzt muss ich wohl viel lesen. Ich würde mit dem Kapital Initalisuerung und Konfiguration des CC1101 beginnen. Wie sehen die Antorten des CC1101 auf die Kommandos aus, sind diese plausibel? Wichtig ist auch zu wissen wie die Konfiguration der Gegenstelle aussieht? Ist die Gegenstelle während des Tests aktiv? Ich habe vor der Benutzung der richtigen Gegenstelle einen primitiven Funkmodul ohne Konfigurationsmöglichkeiten genommen. Nur um zu beobachten was der CC1101 aussendet. Welche ISM Frequenz benutzt der Funkmodul?
Ich habe den SPI Traffic mit den logicanalyser aufgezeichnet, komme aber nicht weiter. Ziel ist es einen funktionieren CC1101 868 Transmitter zu clones bzw das Signal zu clones. Gibt es hier einen CC1101 Experten der mir Helfen konnte? Soll ja nicht umsonst sein. Habe schonmal bei Fiverr usw geschaut, bin aber nicht fündig geworden.
„S“ „. schrieb: > Ziel ist es einen funktionieren CC1101 868 Transmitter zu clones bzw das > Signal zu clones. Es gibt prinzipiell 2 Sequenzen: 1. die Initialisierung, typischerweise beim Einschalten 2. das Senden eines Kommandos bei einem Ereignis (z.B. Knopfdruck). Solange du nicht schreibst was das für ein Sender ist, und ob das Protokoll z.B. bi-direktional oder verschlüsselt ist (rolling code) wird es schwierig Ändern sich die Daten für ein Kommando wenn du mehrmals dasselbe Kommando auslöst (z.B. Knopf drücken)? Dann wird es schwierig. Das einfachste ist, alles blind zu clonen, d.h. die SPI Daten für die Initialisierung und die jeweiligen Kommandos aufzeichnen und genau so wieder schicken. Wenn das nicht funktioniert, würde ich das Projekt einstellen. Michael
Nur Senden und immer das gleiche, denke er sendet eine ID. Das werde ich mal probieren. Konnte man aus den SPI nicht erkennen was er macht. In der TI Dokumentation sind ja codes drin. Der CC1101 hat ja 199 Channel, mehrere Formate, Frequenzen usw
„S“ „. schrieb: > Konnte man aus den SPI nicht erkennen was er macht. In der TI > Dokumentation sind ja codes drin. Klar, aber das ist deutlich mehr Aufwand und warum sollte man das tun wenn es nicht notwendig ist? Es hat sich ja auch noch kein Freiwilliger gemeldet das zu decodieren. Michael
Glaube ich werde mit dem logic analyses mal schauen was an SPI lauft wenn ich CC1101 selber configuriere und Daten schicke. Dann Vergleich ich beide SPI Protokolle und schau mal.
Bin anscheinend echt zu blöde. Muss ich den CC1101 mit smartRF configurieren oder geht das über die Librarys vom Arduino beim hochfahren??
„S“ „. schrieb: > Bin anscheinend echt zu blöde. Muss ich den CC1101 mit smartRF > configurieren oder geht das über die Librarys vom Arduino beim > hochfahren?? Nimm die Arduino Lib, der von smartRF erzeugte Code ist nicht wirklich lesbar. Hier ein 433 MHz Beispiel
1 | ELECHOUSE_cc1101.setSpiPin(sck, miso, mosi, ss); |
2 | ELECHOUSE_cc1101.setGDO(gdo0,gdo2); // set lib internal gdo pins (gdo0,gdo2). |
3 | ELECHOUSE_cc1101.Init(); // must be set to initialize the cc1101! |
4 | |
5 | if (ELECHOUSE_cc1101.getCC1101()){ // Check the CC1101 Spi connection. |
6 | Serial.println("Connection OK"); |
7 | }else{ |
8 | Serial.println("Connection Error"); |
9 | }
|
10 | |
11 | ELECHOUSE_cc1101.setCCMode(1); // set config for internal transmission mode. |
12 | ELECHOUSE_cc1101.setModulation(2); // set modulation mode. 0 = 2-FSK, 1 = GFSK, 2 = ASK/OOK, 3 = 4-FSK, 4 = MSK. |
13 | ELECHOUSE_cc1101.setMHZ(434.031708); // 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. |
14 | //ELECHOUSE_cc1101.setDeviation(5.157471); // Set the Frequency deviation in kHz. Value from 1.58 to 380.85. Default is 47.60 kHz.
|
15 | ELECHOUSE_cc1101.setChannel(0); // Set the Channelnumber from 0 to 255. Default is cahnnel 0. |
16 | ELECHOUSE_cc1101.setChsp(199.95); // The channel spacing is multiplied by the channel number CHAN and added to the base frequency in kHz. Value from 25.39 to 405.45. Default is 199.95 kHz. |
17 | //ELECHOUSE_cc1101.setRxBW(812.50); // Set the Receive Bandwidth in kHz. Value from 58.03 to 812.50. Default is 812.50 kHz.
|
18 | ELECHOUSE_cc1101.setDRate(2.88248); // Set the Data Rate in kBaud. Value from 0.02 to 1621.83. Default is 99.97 kBaud! |
19 | ELECHOUSE_cc1101.setPA(10); // Set TxPower. The following settings are possible depending on the frequency band. (-30 -20 -15 -10 -6 0 5 7 10 11 12) Default is max! |
20 | ELECHOUSE_cc1101.setSyncMode(0); // Combined sync-word qualifier mode. 0 = No preamble/sync. 1 = 16 sync word bits detected. 2 = 16/16 sync word bits detected. 3 = 30/32 sync word bits detected. 4 = No preamble/sync, carrier-sense above threshold. 5 = 15/16 + carrier-sense above threshold. 6 = 16/16 + carrier-sense above threshold. 7 = 30/32 + carrier-sense above threshold. |
21 | //ELECHOUSE_cc1101.setSyncWord(211, 145); // Set sync word. Must be the same for the transmitter and receiver. (Syncword high, Syncword low)
|
22 | ELECHOUSE_cc1101.setAdrChk(0); // Controls address check configuration of received packages. 0 = No address check. 1 = Address check, no broadcast. 2 = Address check and 0 (0x00) broadcast. 3 = Address check and 0 (0x00) and 255 (0xFF) broadcast. |
23 | ELECHOUSE_cc1101.setAddr(0); // Address used for packet filtration. Optional broadcast addresses are 0 (0x00) and 255 (0xFF). |
24 | ELECHOUSE_cc1101.setWhiteData(0); // Turn data whitening on / off. 0 = Whitening off. 1 = Whitening on. |
25 | ELECHOUSE_cc1101.setPktFormat(0); // Format of RX and TX data. 0 = Normal mode, use FIFOs for RX and TX. 1 = Synchronous serial mode, Data in on GDO0 and data out on either of the GDOx pins. 2 = Random TX mode; sends random data using PN9 generator. Used for test. Works as normal mode, setting 0 (00), in RX. 3 = Asynchronous serial mode, Data in on GDO0 and data out on either of the GDOx pins. |
26 | ELECHOUSE_cc1101.setLengthConfig(0); // 0 = Fixed packet length mode. 1 = Variable packet length mode. 2 = Infinite packet length mode. 3 = Reserved |
27 | //ELECHOUSE_cc1101.setPacketLength(5); // Indicates the packet length when fixed packet length mode is enabled. If variable packet length mode is used, this value indicates the maximum packet length allowed.
|
28 | ELECHOUSE_cc1101.setCrc(0); // 1 = CRC calculation in TX and CRC check in RX enabled. 0 = CRC disabled for TX and RX. |
29 | //ELECHOUSE_cc1101.setCRC_AF(0); // Enable automatic flush of RX FIFO when CRC is not OK. This requires that only one packet is in the RXIFIFO and that packet length is limited to the RX FIFO size.
|
30 | ELECHOUSE_cc1101.setDcFilterOff(0); // Disable digital DC blocking filter before demodulator. Only for data rates ≤ 250 kBaud The recommended IF frequency changes when the DC blocking is disabled. 1 = Disable (current optimized). 0 = Enable (better sensitivity). |
31 | ELECHOUSE_cc1101.setManchester(0); // Enables Manchester encoding/decoding. 0 = Disable. 1 = Enable. |
32 | ELECHOUSE_cc1101.setFEC(0); // Enable Forward Error Correction (FEC) with interleaving for packet payload (Only supported for fixed packet length mode. 0 = Disable. 1 = Enable. |
33 | ELECHOUSE_cc1101.setPRE(0); // Sets the minimum number of preamble bytes to be transmitted. Values: 0 : 2, 1 : 3, 2 : 4, 3 : 6, 4 : 8, 5 : 12, 6 : 16, 7 : 24 |
34 | ELECHOUSE_cc1101.setPQT(0); // Preamble quality estimator threshold. The preamble quality estimator increases an internal counter by one each time a bit is received that is different from the previous bit, and decreases the counter by 8 each time a bit is received that is the same as the last bit. A threshold of 4∙PQT for this counter is used to gate sync word detection. When PQT=0 a sync word is always accepted. |
35 | ELECHOUSE_cc1101.setAppendStatus(0); // When enabled, two status bytes will be appended to the payload of the packet. The status bytes contain RSSI and LQI values, as well as CRC OK. |
36 | }
|
Michael
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.