It's been a long time.
Last year I have very
little time for my 6Lowpan project but last week finally I managed to
run CC2520 transceiver on Raspberry Pi.
First of all i decided to
use official CC2520 Linux driver developed by Varka Bhadram. This
component handle all basic ruins required by upper layers of IPv6
stack. Yes - I'm going to use IPv6 with 6LowPAN adaptation sublayer.
And my device will be IPv6 enable node.
6LowPAN and IoT is a
popular topic - more about that you can find in IETF pages ( 6LowPan
and 6Lo WG ). There is also very interesting blog by Walter Colitti:
www.waltercolitti.consulting.
The base for my experiment
with RPi and 6LowPan was openlabs.co page where configuration of a
system is described.
Configuration of my
solution i very similar. The main difference is obviously that I use
CC2520 whereas openlabs solution use at86rf233 transceiver.
Kernel cross-compilation
and U-Boot preparation are taken from openlabs. What we have to do to
deal with CC2520 is change device tree file to adopt it to Rpi
platform.
Below I present how it is
done for RPi platform ( in this location:
arch/arm/boot/dts/bcm2835-rpi-b.dts )
...
&gpio {
...
cc2520_cape_pins:
cc2520_cape_pins {
brcm,pins = <17 22 23
24 25>;
brcm,function = <1 0 0
0 0>;
};
};
…
&spi {
status = "okay";
cc2520@0 {
compatible = "ti,cc2520";
reg = <0>;
spi-max-frequency =
<6000000>;
pinctrl-names = "default";
pinctrl-0 =
<&cc2520_cape_pins>;
fifo-gpio = <&gpio
25 0>;
fifop-gpio = <&gpio
24 0>;
sfd-gpio = <&gpio
23 0>;
cca-gpio = <&gpio
22 0>;
reset-gpio = <&gpio
17 0>;
};
};
Also CC2520.c file was
slightly changed due to the different pin configuration in my board.
I didn’t use VREG signal
on my board and I just commented out the lines that handle it.
After this operation I was
able to first radio transmission. I received this first wireless
packets on my STM32W-RFCKIT that I bought some time ago to sniff
things like this. This is very handy solution because in prepared
environment received frames are piped to Wireshark.
Below a print screen from
Wireshark is presented.