Sparkfun Bluetooth mate - weird 5V to 3.3V level shift

The Roving Networks RN42 is a 3.3V device so some level shifting is needed. I will design my own gadget with the RN42 so I looked how it was done on Sparkfun Bluetooth mate device. But it’s quite strange when you look at the Sparkfun schematic, see the pdf I would expect a voltage divider at the rx pin, however, there is only a 10 kOhm resistance in serie but no voltage divider!

I connected my Arduino (5V version) to the Sparkfun module I have. Then, measured pin 14 on the RN42 (UART RX) with a oscillosopce and there certainly is 5V and not 3.3V :astonished:.

According the the RN42 datasheet max pin voltage should be VDD+0,4 i.e. 3.7 volt.

Is that perfectly ok anyway? Do I not need the voltage divider? Or is just bad design by Sparkfun? :~

(Last edit: Updated and clarified subject)



The pin names are probably for what pin they connect to on the arduino and not the actual pin function. TX_5V is the arduino TX pin and RX_5V is the arduino RX pin They are using a MOSFET on TX line to reduce the arduino 5V to 3.3V into the BT module but the RX pin level (output from BT module) does not need to to alter level. The 10K is probably just to limit current should RX be connected incorrectly.

Do I not need the voltage divider? Or is just bad design by Sparkfun?

Using a BSS130 is a very good design from Sparkfun, better than a voltage divider.

The bluetooth mate RX 5V is supposed to be connected to the Arduino TX pin. And that is strange (since the level will be 3.3V rather than 5V), isn't it? Actually, Roving Networks themselves says;

When using a 5.0Vdc Input, PIO’s require a voltage divider. A good choice is 10K ohm series with 20K to Ground. PIO’s are 0-3.3Vdc not 5 volt tolerant.

Or am I missunderstanding the schematics for the Sparkfun bluetooth mate?

This is what is stated on the Sparkfun page;

The remote unit can be powered from 3.3V up to 6V for easy battery attachment. All signal pins on the remote unit are 3V-6V tolerant. No level shifting is required. Do not attach this device directly to a serial port. You will need an RS232 to TTL converter circuit if you need to attach this to a computer.

From that, I concluded I should be able to use it with my 5V Arduino only wiring it up to gnd, 5V, rx and tx pins. I have used one of these SF modules on my desk for a while. However just as I started looking in to this matter, the thing actually broke. But that might just be due to me touching some wires, creating sparks or something :roll_eyes: - not very unlikely I guess.

I just found it hard to believe that Sparkfun designers would have missed that part. It is a very popular device as it seems so it just can't be that bad - so I thought.

The fact that you broke it could be due to several reasons, all guesswork. The modules may be highly ESD sensitive, you may gave accidentally connected 5V to the Vcc pin, or applied Vcc backwards, or something else entirely. ????

Also, sf indicates the I/O pins are 5V tolerant, but that doesn't seem to jibe with your comment in reply #3. So, who knows? I would tend to believe what the manufacturer says. The best I can say is, the RX wiring in the sf schematic, with the 10K series-R, indicates sf either believes the RX pin really is 5V tolerant, or else they were lucky and the 10K actually saves the RX pin.

Also, the use of the level-shifter in the TX line means the 3.3V output will always be shifted up to 5V, so you can connect it to any 5V processor. Arduinos seem to be ok with 3.3V into the 5V RX pin, but not all processors are. Eg, on PIC controllers, I have to use additional pullup.