3

Recently, I bought two Si4463 chips, but I don't know how to use them. It seems complex. I'd like to know if there are any examples of an Si4463 used with an Arduino?

4
  • try this
    – ARK
    Apr 18, 2016 at 5:56
  • @ARK I am just a beginner of Arduino, do you know detail course about how to use 4463 ?
    – Enhao Lan
    May 19, 2016 at 2:02
  • @ARK In your web, there are many things, in fact, I don't know what is suitable and how to use it .
    – Enhao Lan
    May 19, 2016 at 2:03
  • QAPRS library also on si4436 - thr rado APRS frames beacon example
    – Tom
    Jan 29 at 13:08

3 Answers 3

3
+50

This seems to be the Chip used on the RFM24. Have a look on the RadioHead Library:

http://www.airspayce.com/mikem/arduino/RadioHead/classRH__RF24.html

I normally use the same libs for the RFM69 (Semtech SX1231) with my Whisper Node and works fine. I would expect the same for the RFM24.

Btw, getting a silicon and building the Radio can be quite complicated. You might would consider starting with a Dev Kit or an assembled module.

Also, I don't think HopeRF produces RFM24 anymore, can't find on their site (http://www.hoperf.com/rf_transceiver/). If you just need it for a single project and does not intent to build a product of that, might be better chose a different/more popular option. Will be easier to find support for it on the Internet.

4

I've looked at the data sheet for this and I think it is the wrong choice of device for a beginner. Can I suggest that you start by looking at a relatively simple DPI interfaced device, such as a sensor or RTC. This will teach you the basics of sending commands via the Wire library. You might even get the hang of it just by looking at existing libraries.

I can't find a library, so you are going to need to write your own. The library will need a begin function which initialises you class and a write and read function, which write and read from an address.

void begin(void);
uint8_t read(const uint8_t& address);
void write (const uint8_t& address, const uint8_t& bytesOfData, const uint8_t* pData);

You will need to flesh those functions out, but that's it. If you want to make you library more useable read the datasheet and create wrapper functions for each of the registers that can be accessed.

// This instruction requires 10 buts spread over two bytes.
void writeFrequencyOffset (const uint8_t& highByte, const uint8_t& lowByte)
{
  write (0x73, lowByte);
  write (0x74, highByte);
}

The process of creating friendly wrappers is a tedious operations, just reading the data sheet and translating that into code.

1
  • The part in question is an SPI peripheral, not an I2C one, so the wire library does not apply. Aug 21, 2016 at 17:02
1

The Si4463 IC from Silicon Labs is a great communication chip with very good sensitivity. However, its onboard MCU uses SPI as a communication interface to communicate with an external microcontroller.

In a module such as an HC-12, an STM8SF103F3 microcontroller which is programmed to act as an SPI to UART bridge. HC-12 modules lets you control all of the internal functionality of the Si4463, even using AT+ commands for things like adjusting baud rate and transmission power. Unfortunately, the code doing the SPI to UART bridging is proprietary, which leaves you at a disadvantage if you're trying to use the Si4463 chips to build a real product.

But perhaps, if you have purchased something like the RFM26W module, or you simply have a bare-bones Si4463 IC to work with, then you will need to communicate with it via the SPI pins. It must be noted that there is no standard Arduino library available for communicating with the Si4463's SPI pins.

Working with SPI pins can get a bit complicated as you're trying to sync the clockwork. If you want to get your hands dirty, then you could go ahead and have a look at the Si4463 datasheet and look at the SPI timing parameters on page 16.

Fortunately, there is a Si4463 library project on GitHub which you can look into and perhaps modify the code to fit your needs.

Here is the GitHub page for the Si4463 Arduino library made by zkemble:

https://github.com/zkemble/Si446x

Here is the blog post where he explains it in more detail:

http://blog.zakkemble.net/si4463-radio-library-avr-arduino/

Here is the documentation for the said library:

https://zkemble.github.io/Si446x/_si446x_8h.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.