RFM69HCW register difference

Started by markus1234, October 15, 2022, 02:51:38 PM

markus1234

Hi,
I have 2 identical boards (just attiny3226 and rfm69hcw).

With the same arduino sketch uploaded (will sleep everything).

The first board uses 0.7 uA when everything is asleep.
The second one uses 80uA when everything is asleep.

Since I tested it before soldering the rfm69hcw to both boards, I know that the attiny3226 uses 0.6 uA in sleep on both boards.

The only difference I found is in the registers of the rfm69hcw:

first one (working):

      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
00: -- 04 00 02 40 03 33 6C 40 00 41 00 02 92 F5 20
10: 24 7F 09 0F 40 B0 7B 9B 08 42 8A 40 80 06 10 00
20: 00 00 00 02 FF 40 07 80 00 DC 00 00 00 03 88 2D
30: 38 00 00 00 00 00 00 90 42 00 00 00 8F 10 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
50: 00 01 88 08 00 00 01 00 1B 09 5D 80 7C 33 CA 08
60: 00 11 00 00 00 0F 70 00 12 16 19 1C 00 04 0C 30
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

second one (not working - high power usage in sleep mode):

     0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
00: -- 04 00 02 40 03 33 6C 40 00 01 00 02 92 F5 20
10: 24 7F 09 0F 40 B0 7B 9B 08 42 8A 40 80 06 10 00
20: 00 00 00 02 FF 40 07 80 00 DC 00 00 00 03 88 2D
30: 38 00 00 00 00 00 00 90 42 00 00 00 8F 10 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
50: 00 01 88 08 00 00 01 00 1B 09 5D 80 7C 33 CA 08
60: 00 10 00 00 00 0F 70 00 12 16 19 1C 00 04 0C 30
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

The only differences are in register 0x0A und 0x61

0x0A is the osc calibration register, where 0x41 means calibration done, and 0x01 means calibration in progress(?).

I tried to call rcCalibration(), the the byte changed to 0x01 and the power usage went permanently up to 396 uA (I cant reverse it anymore )

The second difference is in byte 0x61 which according to the datasheet is for internal tests :(

Does anyone know whats wrong here, or how to correctly calibrate a rfm69hcw?

FYI: They are all from the same order from lcsc

Best regards,
Markus

Felix

For sleeping, you should only have to call the sleep() function, nothing else, and no calibration is required.
Perhaps there is something else on the board that is drawing the extra current, or a faulty radio module.