Go Down

Topic: si4735 radio shield and getResponse (Read 7 times) previous topic - next topic

mikem

Hi,

Im testing the Sparkfun Si4735 AM.FM radio shield with Arduino and the Si4735 library on Diecimila and Duemilanova.
The example sketches work fine and the radio is controlled as expected.

However, I am now trying to use the getResponse command to retrieve data from the radio.
For example to get the current FM frequency and RSSI, using code like this:

  char response[16];

  radio.sendCommand("2200");
  radio.getResponse(response);

however instead of getting the expected response data, I usually get all 0s in the response. Very occasionally there will be some data but it is inconsistent and different every time. Looks like the SPI read from GPO1 is not working as expected. When I look at the output of the GPO1 during these queries I can see there is consistent data at 3.3V coming from the radio.

Could this be due to the fact the radio is a 3.3V part (GPO1 is 3.3V output) but the Arduino input is 5v?
Has anyone had success using the Si4735 with a 5V Arduino? With a 3.3V arduino?

Cheers.


mikem

To answer my own question,
yes this is due to the 3.3V output from the Si4735 being incompatible with a 5V Arduino like Duemilanove and Diecimila

Adding a silicon diode in the D12-GPO1 line on the shield like this:

D12 ----->|-- GPO1

(this involves cutting the existing track on the shield)
shifts the voltage seen by the Arduino up by 0.6 V, allowing the SPI reads to work correctly. Now getting consistent reads using getResponse().

Interested if this is needed with a 3.3V Arduino. Probably not?

Cheers.

PaulS

Quote
Adding a silicon diode in the D12-GPO1 line on the shield like this:

D12 ----->|-- GPO1

(this involves cutting the existing track on the shield)
shifts the voltage seen by the Arduino up by 0.6 V, allowing the SPI reads to work correctly.

How does adding a diode increase the voltage? Usually, adding a diode results in a voltage drop.

mikem

The Arduino is configured with a pullup on D12.
So while GPO1 varies between 0 and 3V, the voltage seen by the Arduino varies between 0.6 and 3.6 V
The diode acts like a voltage shifter.

Cheers.

Wagner Sartori Junior


The Arduino is configured with a pullup on D12.
So while GPO1 varies between 0 and 3V, the voltage seen by the Arduino varies between 0.6 and 3.6 V
The diode acts like a voltage shifter.

Cheers.



did you test this and it works? I'm asking because this is a big FAIL from sparkfun. Even on my 3.3 xbee rx/tx I add a transistor and 4 resistors to make a "poor but works" level shifting. It's a single pin.

Go Up