Forum: Mikrocontroller und Digitale Elektronik RFM70 - 4 Module mit unterschiedlichem Sende-Verhalten/Qualität


von Timmo H. (masterfx)


Lesenswert?

Hallo zusammen.
Eigentlich habe ich einen gut laufenden Code für das RFM70 Modul für 
meinen Atmega. Das funktioniert soweit auch ganz gut, jedoch ist mir nun 
aufgefallen, dass sich meine 4 RFM70 Module etwas unterschiedlich 
verhalten.
Ich stecke also nur das RFM70 Modul um, Hardware und Firmware ist 
absolut identisch das Verhalten ist jedoch verschieden.

Der Sender sendet alle 20ms ein 8 Byte langes Datenpaket. Wie ich nun 
feststellen musste, kommen bei 3 der 4 Module nur sehr sporadisch die 
Pakete an. Ich habe teilweise 50-90% Paketverlust. Als Empfänger 
funktionieren alle 4 RFM70 Module jedoch gleich gut.
Jedoch ist nur ein RFM70 Modul dabei welches auch zuverlässig die Daten 
wegsendet.

Da komische ist, dass die Übertragung manchmal zuverlässiger ist, wenn 
ich mit dem Finger auf GND und VCC "patsche", aber sie ist längst nicht 
100% zuverlässig.
Als ich das mit dem Finger gemerkt habe, habe ich natürlich auch gleich 
zusätlich noch ein paar Abblockkondensatoren mit an VCC und GND direkt 
am RFM70 gemacht (100n, 10n). Das hat jedoch auch keine Besserung 
gebracht.

In meiner Verzweiflung habe ich dann auch schonmal am undokumentierten 
Bank1_Reg4 rum gespielt. Wenn ich den Wert "0x0B869ED9" auf "0x0B869E09" 
ändere ist die Sendequalität meist besser als vorher. Leider gibt es 
keine Informationen über dieses Register, von daher weiß ich auch nicht 
was ich gerade verändert habe :D
Wenn man sich jedoch das Datenblatt des BK2411 ansieht (das RFM70 hat ja 
das BK2421 drin), dann ist dort in dem Register auch ein Wert für 
"XTALFC", also für "Crystal offset compensation". Ich vermute bald dass 
im RFM70 dort etwas Ähnliches "versteckt" ist und deshalb das Ändern des 
Registers.  Auswirkungen auf die Sendequalität bzw. Frequenz hat.

Hat vielleicht eine Idee woran das liegen könnte?
Als Spannungsquelle dient übrigens ein Lipo-Akku mit nem 3,3V LDO 
dahinter.


Meine Bank 0 und Bank 1 vom RFM70 werden so initialisiert
1
//In the array RegArrFSKAnalog,all the register value is the byte reversed!!!!!!!!!!!!!!!!!!!!!
2
const unsigned long Bank1_Reg0_13[]={       //latest config txt
3
0xE2014B40,
4
0x00004BC0,
5
0x028CFCD0,
6
0x41390099,
7
0x0B869ED9,
8
0xA67F0624,
9
0x00000000,
10
0x00000000,
11
0x00000000,
12
0x00000000,
13
0x00000000,
14
0x00000000,
15
0x00127300,
16
0x36B48000,
17
};
18
19
const uint8_t Bank1_Reg14[]=
20
{
21
  0x41,0x20,0x08,0x04,0x81,0x20,0xCF,0xF7,0xFE,0xFF,0xFF
22
};
23
24
//Bank0 register initialization value
25
const uint8_t Bank0_Reg[][2]={
26
{0,0x7F},//Enable CRC ,2byte,POWER UP,PRX
27
{1,0x00},//No AutoACK
28
{2,0x3F},//Enable RX Addresses pipe5\4\3\2\1\0
29
{3,0x03},//RX/TX address field width 5byte
30
{4,0xff},//auto retransmission dalay (4000us),auto retransmission count(15)
31
{5,0x17},//23 channel
32
{6,0x37},//air data rate-1M,out power 5dbm,setup LNA gain
33
{7,0x07},//
34
{8,0x00},//
35
{9,0x00},
36
{12,0xc3},//only LSB Receive address data pipe 2, MSB bytes is equal to RX_ADDR_P1[39:8]
37
{13,0xc4},//only LSB Receive address data pipe 3, MSB bytes is equal to RX_ADDR_P1[39:8]
38
{14,0xc5},//only LSB Receive address data pipe 4, MSB bytes is equal to RX_ADDR_P1[39:8]
39
{15,0xc6},//only LSB Receive address data pipe 5, MSB bytes is equal to RX_ADDR_P1[39:8]
40
{17,0x20},//Number of bytes in RX payload in data pipe0(32 byte) 
41
{18,0x20},//Number of bytes in RX payload in data pipe1(32 byte)
42
{19,0x20},//Number of bytes in RX payload in data pipe2(32 byte)
43
{20,0x20},//Number of bytes in RX payload in data pipe3(32 byte)
44
{21,0x20},//Number of bytes in RX payload in data pipe4(32 byte)
45
{22,0x20},//Number of bytes in RX payload in data pipe5(32 byte)
46
{23,0x11},//fifo status
47
{28,0x3F},//Enable dynamic payload length data pipe5\4\3\2\1\0
48
{29,0x07}//Enables Dynamic Payload Length,Enables Payload with ACK,Enables the W_TX_PAYLOAD_NOACK command 
49
};

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.