1

As per the Arduino 101 schematic.

The Arduino 101 has level shifters (TI make LSF0108) connected to the I/O ports I guess these are to make them Arduino compatible(5V) since the Intel Curie Module is 3.3V rated.

I have 2 doubts regarding this

  1. The level shifters are also connected to the analog pins so I was wondering how do these shifters pass through analog signals?

  2. I have some 3.3V sensors that I want to interface to the Arduino 101 via I2C. My question is can I use 3.3V levels at the I/O ports or am I restricted to 5V?

TIA

  • @Majenko that's a 4 page document, agreed that 1st page is a block diagram.. but the schematic is from pages 2 onwards.. – Miguel Sanchez May 29 '17 at 20:48
  • 1
    Do you have a cloth I can wipe the egg off my face with? ;) – Majenko May 29 '17 at 20:49
  • Even with the schematic I can't see how that can possibly provide any analog inputs at all. The Ax pins go straight into an LSF0108 digital logic level translator, so how it can claim there are analog inputs I don't know. You're right to be confused. Also if the schematic is to be believed the LSF0108 isn't being used according to the datasheet's recommendations. Not sure quite how/why they are doing it... – Majenko May 29 '17 at 20:59
  • @Majenko yes I had the same thoughts... even the LSF0108 datasheet doesn't shed any light on analog levels. – Miguel Sanchez May 30 '17 at 5:00
2

An Exploring the I/O Performance of the Arduino 101 webpage by Dan Watson has a number of relevant comments:

The board uses three Texas Instruments LSF0108 level translators to accommodate all of the I/O lines (including the analog inputs). This is an interesting part. It's not really a level "shifter", and it's not a buffer. The Curie is still sourcing and sinking current to the pins, but the voltage levels are clamped at 3.3V on the Curie's side of the chip. In this regard it's kind of like a fancy analog switch. The on resistance of each signal path is in the neighborhood of 10 ohms.

Somewhat later in the article:

Analog Input Linearity: Next I tested the analog inputs. I was curious if the level translators affect the accuracy of the readings. I applied a DC voltage on pin A5, starting at 0V and increasing to 3.3V in 100 mV steps. At each step, I recorded the 10-bit analog-to-digital (ADC) readings reported by the Arduino 101. I then created a graph of the data, which is shown [on the webpage]. As you can see, the results are pretty linear across the entire input range. Spot-checking a few values, I found that there might have been a +20mV bias on the readings at the top end of the scale.

To summarize: As a consequence of being like an analog switch, the LSF0108 allows the Curie's analog input pins to accept analog inputs, and apparently it works ok.

Regarding the second question, whether 3.3 V levels are ok at the I/O ports, I think they are. See the article mentioned above for more comments. Here is one that may be relevant:

Digital Input Logic Transitions: I applied a DC voltage to pin D7 and varied it up and down while the Arduino 101 reported the logic state in the serial monitor. This was done in order to discover the logic transition levels. Going from high to low, it returned a low state after crossing 1.26V. Going from low to high, however, the transition occurred at 1.55V.


Edit 1: Regarding two questions in a comment...

  1. What is the function of the level translators.. do they actually map the 0 to 5V levels to 0 to 3.3V on the curie side. ?

See the LSF0108 datasheet. The LSF0108 has eight A, B pairs: (A1,B1); (A2,B2); ... (A8,B8). If you drive Ai low, Bi goes low too; and vice versa, if you drive Bi low, Ai goes low too. That translates low to low. If neither side is driven low, connected inputs can pull up to an individual-pullup level but not higher than a reference level (VREFA or VREFB). This translates high to high.

  1. If I give a 0 to 5V analog voltage at the headers will the 3.3V to 5V level part of the signal be lost, I mean does the board only take care of the 0 to 3.3V part of the signal and the adc will give max counts at 3.3V?

It should be 'lost', because as noted in the Curie datasheet's Table 2-5. ADC - DC I/O specifications, the AIN Full-scale input range is ≤ ADC_3P3_VCC and ≤ AON_IO_VCC. (The latter voltage is 1.8 or 3.3 V.) I'm not clear on why the LSF0108 doesn't interfere with ADC measurements. Maybe the switches operate in a linear mode when pullups are turned off?

  • thanks for digging that link out... for the analog input linearity test what did the autthor increase it to a max of 3.3V why not 5V? – Miguel Sanchez May 30 '17 at 5:16
  • I'll try and get in touch with the author to learn what his experiences were... – Miguel Sanchez May 30 '17 at 5:17
  • I still have a few questions... 1. What is the function of the level translators.. do they actually map the 0 to 5V levels to 0 to 3.3V on the curie side. ? 2. If I give a 0 to 5V analog voltage at the headers will the 3.3V to 5V level part of the signal be lost, I mean does the board only take care of the 0 to 3.3V part of the signal and the adc will give max counts at 3.3V? – Miguel Sanchez May 30 '17 at 6:18
  • 1
    @MiguelSanchez, see edit 1 – James Waldby - jwpat7 May 30 '17 at 8:22
  • I have a feeling the LSF0108, internally, is just an N channel MOSFET per channel. Your classic bidirectional MOSFET level translator. As such it will be fairly transparent to analogue voltages. – Majenko May 30 '17 at 9:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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