Re: [beagleboard] Interfacing RF-Transceiver (CC1101 etc.) directly via SPI to Beaglebone

1,314 views
Skip to first unread message

Andrew Bradford

unread,
Jan 31, 2013, 9:20:31 AM1/31/13
to beagl...@googlegroups.com, rl.b...@googlemail.com
On Thu, 31 Jan 2013 04:54:15 -0800 (PST)
RL Budde <rl.b...@googlemail.com> wrote:

> I am asking if anyone has experience with directly interfacing a
> RF-Transceiver such as CC101 to the Beglebone, without using a 8bit
> controller for the somewhat low-level tasks.
>
> I know http://theredblacktree.wordpress.com/2012/08/09/rf24bb/ and
> other ressources, but can't get an idea if those are more like a
> proof of concept. For real applications, the CC1101 should be
> interfaced to:
> - SPI including automatic CS
> - an Interrupt
> - GPIO
>
> The configuration of the CC1101 takes some bytewise exchange of data,
> but after that it's more or less plain frame-download and send or
> frame uploading on interrupt...

CC1101 has 64 byte Tx and Rx FIFOs. As long as you send frames that
are smaller than that, interfacing directly from Linux shouldn't be an
issue. It's just like you said, SPI and GPIO. The data sheet's pretty
decent, too.

If you want to send or receive frames larger than 64 bytes, you'll need
to empty / fill the FIFOs when the interrupt comes stating that they're
close to being full / empty. This may be difficult depending on your
RF data rate (ie: at >200 kbps you get < 1 ms to react to FIFO
interrupts but at lower data rates there may be reasonable time to
react). Linux isn't the best at dealing with sub 1 ms actions, a
dedicated microcontroller or the PRUSS would be a better fit.

If TI / Chipcon made a CC1101 transceiver with 128 or 256 byte FIFOs,
that would be great but I don't think such a thing exists. TI /
Chipcon, if you're listening, make a CC1101 with 128 byte FIFOs! Please?

You can take a look at the CC1110 or CC430 which each have an embedded
microcontroller on the same die (CC1110 is 8051 I think, CC430 is
MSP430) and then interface either of those to Linux easily via SPI or
other interface.

-Andrew

geor...@gmail.com

unread,
Oct 22, 2013, 2:55:48 AM10/22/13
to beagl...@googlegroups.com, rl.b...@googlemail.com, and...@bradfordembedded.com

Hello Andrew,

It looks like your post gave me some clue. I actually just started out to add CC1101 module on my Ras Pi. Since there is a generic SPI driver on my Ras Pi, do I have to create another SPI driver for CC1101 module? Or just as you said interface the C-code from 8051 to Linux? Could you give me some more details about how to interface CC1101 from 8051 to Linux?

Thanks!

-George

Andrew Bradford

unread,
Oct 22, 2013, 8:13:53 AM10/22/13
to geor...@gmail.com, beagl...@googlegroups.com, rl.b...@googlemail.com
On 10/22/13 02:55, geor...@gmail.com wrote:
> It looks like your post gave me some clue. I actually just started out to
> add CC1101 module on my Ras Pi. Since there is a generic SPI driver on my
> Ras Pi, do I have to create another SPI driver for CC1101 module? Or just
> as you said interface the C-code from 8051 to Linux? Could you give me some
> more details about how to interface CC1101 from 8051 to Linux?

You'd want to write either a kernel driver using SPI and GPIO (lots of
Ethernet SPI controllers have this kind of interface, for reference, or
for a reasonable example with exact steps, google for "spike spi
driver") in order to provide a kernel level interface. This isn't
tremendously hard, but if you'd prefer, you could also take a look at
using spidev and GPIO from userspace. The performance in userspace
likely won't be as good as in the kernel, but the learning curve should
be lower if you've not written kernel drivers before.

The CC1101 doesn't have an integrated microcontroller, just the CC1110
and CC430 families. Although, recently TI introduced the CC1200 radio
which has larger FIFOs (128 byte) and is targetted at those doing IEEE
802.15.4 with sub-GHz radios. If your radio frames are 128 bytes or
smaller, and especially if you're doing 802.15.4, the CC1200 is well
worth your time to look at.

If you're not tied to using TI parts, also have a look at the Analog
ADF7023 or the ST SPIRIT1. Both, on paper, are better looking than the
CC1101. However, if you have an RF cape for beaglebone the TI modules
pop right on, which is handy.

Regards,
Andrew
Reply all
Reply to author
Forward
0 new messages