Forum: Mikrocontroller und Digitale Elektronik RFM12B S2 läuft nicht


von Marc K. (dergruenekobold)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab bereits die Module RFM01 und RFM02 erfolgreich in betrieb 
genommen. Nun versuche ich mich an den Transceivern RFM12B S2. Bekomme 
diese aber nicht zum laufen. Hab bereits Hardware und Software SPI sowie 
diverse verschiedene Initialisierungen und Routinen versucht. Aber 
nichts funktioniert. Die Communikation läuft wie in dem Bild COM zu 
sehen ist.

Nun erstmal was mein ziel ist. Ich möchte Daten hin und her schicken mit 
868 MHz und beim Empfänger der NIRQ-Pin nutzen wenn Daten empfangen 
werden. Doch nichts was ich versucht habe funktioniert. Der NIRQ-Pin 
rührt sich nicht. Auch nicht wenn ich am Ende der Init den Status mit 
0x0000 lese (Was den NIRQ eigentlich zurücksetzen sollte). Ich gehe 
davon aus, dass es kein Problem mit der Hardware gibt denn der SDO-Pin 
reagiert auf die Init Daten.

Was ich nun bräuchte wäre eine funktionierende Init. Oder jemand weis 
was noch ein problem sein könnte.

Ich habe schon diverse Init ausprobiert weswegen ich hier nun keine 
poste. Aber im wesentlichen stell ich eine Schaltung auf TX und die 
andere auch RX und warte darauf, dass beim RX der NIRQ auf low geht. 
Jedoch ist er immer auf low und geht nie auf high.

Im bild sind die Signale von oben nach unten SDO, SDI, SCK, CIPSELECT 
und NIRQ (12,13,14,15,16).

Bitte um Hilfe

von Marc K. (dergruenekobold)


Lesenswert?

So mittlerweile hab ich wenigstens den NIRQ ein bischen zu reagieren 
bekommen. Aber Senden oder Empfangen geht immer noch nicht.

Hier mal die inits:

Für TX:
  RFXX_WRT_CMD(0x80E8);//enable register,868MHz,12.5pF
  RFXX_WRT_CMD(0x8208);//Turn on crystal,!PA
  RFXX_WRT_CMD(0xA640);//
  RFXX_WRT_CMD(0xC647);//
  RFXX_WRT_CMD(0XCC77);//
  RFXX_WRT_CMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm
  RFXX_WRT_CMD(0xC2AC);
  RFXX_WRT_CMD(0xCA80);
  RFXX_WRT_CMD(0xCA83);//FIFO8,SYNC,
  RFXX_WRT_CMD(0xC49B);
  RFXX_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT
  RFXX_WRT_CMD(0xE000);//NOT USE
  RFXX_WRT_CMD(0xC80E);//NOT USE
  RFXX_WRT_CMD(0xC000);//1.0MHz,2.2V
  RFXX_WRT_CMD(0x0000);

Für RX:
  RFXX_WRT_CMD(0x80E8);//enable register,868MHz,12.5pF
  RFXX_WRT_CMD(0x82D8);//enable receive,!PA
  RFXX_WRT_CMD(0xA640);//
  RFXX_WRT_CMD(0xC647);//
  RFXX_WRT_CMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm
  RFXX_WRT_CMD(0xC2AC);
  RFXX_WRT_CMD(0XCC77);//
  RFXX_WRT_CMD(0xCA80);
  RFXX_WRT_CMD(0xCA83);//FIFO8,SYNC,
  RFXX_WRT_CMD(0xC49B);
  RFXX_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT
  RFXX_WRT_CMD(0xE000);//NOT USE
  RFXX_WRT_CMD(0xC800);//NOT USE
  RFXX_WRT_CMD(0xC000);//1.0MHz,2.2V
  RFXX_WRT_CMD(0x0000);

Senden:
  RFXX_WRT_CMD(0x8228); //OPEN PA
  Delay10TCYx(100);
  RFXX_WRT_CMD(0x8238);

  RF12_SEND(0xAA);//PREAMBLE
  RF12_SEND(0xAA);//PREAMBLE
  RF12_SEND(0xAA);//PREAMBLE
  RF12_SEND(0x2D);//SYNC HI BYTE
  RF12_SEND(0xD4);//SYNC LOW BYTE
  RF12_SEND(byte);//DATA BYTE
  RF12_SEND(0xAA);//DUMMY BYTE
  RFXX_WRT_CMD( 0x8208 ); //CLOSE PA
  RFXX_WRT_CMD( 0x8200 ); //Receive end, enter sleep
  RFXX_WRT_CMD(0x0000);

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
Noch kein Account? Hier anmelden.