Community
cancel
Showing results for 
Search instead for 
Did you mean: 
NMcNa1
Novice
1,581 Views

Disable internal pull up resistors on SDA and SCL lines

Jump to solution

Hello,

I want to try to disable the internal pull-up on the Edison because they are pulling the voltage up to 5v when my sensors run at 3v3. Currently I am using external pull ups on the SDA and SCL lines and this is creating a voltage divider on the lines, giving me 4.1v on the SDA and SCL lines. I want to see if by disabling the 5v internal pull ups, if i can still read the digital data on the I2C bus and if this has any effect on the ADC values I am reading off the analog inputs A1 and A2.

I have tried changing the J9 jumper to 3v3 to pull up the SDA and SCL lines to 3v3 which works well for my digital sensors but it ruins the ADC conversion on the inputs A1 and A2 because im using a sensor that produces a 0 to 5v output signal and one that has a 300mv to 1.1v output range.

This example here shows http://www.varesano.net/blog/fabio/how-disable-internal-arduino-atmega-pullups-sda-and-scl-i2c-bus How to disable internal Arduino ATMEGA pullups on SDA and SCL with I2C bus | Varesano.net and all i want to do is be able to do this on the Edison.

Can it be done from the Ardiuno IDE?

Regards,

Nick


Accepted Solutions
idata
Community Manager
68 Views

Hi NickMC,

 

 

I noticed that this thread is about the same issue described in your earlier thread: /thread/101267 https://communities.intel.com/thread/101267. Please try to keep only one thread open to avoid confusions. Actually, I already posted a reply in your other thread, so please check it and post your comments there.

 

 

Just to answer your question here, if your digital sensor is 3.3V compatible, you have to set the IOREF jumper to 3.3V, just as you did previously. The other option, if you want to keep the 5V reference, is to use a logic level converter to interface your sensor with the Edison board. Changing the pull up resistors won't fix the issue

 

 

Regards,

 

Diego

View solution in original post

4 Replies
idata
Community Manager
69 Views

Hi NickMC,

 

 

I noticed that this thread is about the same issue described in your earlier thread: /thread/101267 https://communities.intel.com/thread/101267. Please try to keep only one thread open to avoid confusions. Actually, I already posted a reply in your other thread, so please check it and post your comments there.

 

 

Just to answer your question here, if your digital sensor is 3.3V compatible, you have to set the IOREF jumper to 3.3V, just as you did previously. The other option, if you want to keep the 5V reference, is to use a logic level converter to interface your sensor with the Edison board. Changing the pull up resistors won't fix the issue

 

 

Regards,

 

Diego

View solution in original post

AMårt
New Contributor I
68 Views

There is an option to change "current_pullmode" in e.g. "/sys/kernel/debug/gpio_debug/gpio19" from "pullup" to "nopull"---but you're saying it doesn't do anything? If not, is that true for both the MBB and Arduino board, and why is it so?

Thanks,

Anders

idata
Community Manager
68 Views

Hi nemrod,

 

 

Changing the pull resistors works, however, what I meant was that changing the pull up resistors won't fix the issue described above. If the internal pull up resistors are disabled, external pull up resistors should be used instead.

 

 

Regards,

 

Diego
AMårt
New Contributor I
68 Views

Ah, I see. Though it could fix the issue if 3.3V is above the voltage required for the Edison to interpret it as high. Then you can just disable the internal pull-up (if it works) and use external pull-ups to 3.3V to avoid damaging the sensor. That stuff is generally available in the relevant datasheets but I don't know where to find it for the Edison so it might not work.