Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

Smart Bluetooth Forum Discussions

Anonymous
Not applicable

Our design have 2kohm pull resistors for SPI1/I2C of BCM20736.This will cause about 2.3mA leakage current.

But if we remove this two pull resistors,the pcb is download ok,and work ok.

Is BCM20736 have pull resistors in interor?If not,I want to know what function with pull resistors?If we remove them ,Does it will affect other peripherals?

1 Solution
Anonymous
Not applicable

Yes, I explained how I think it could be solved.  See my post for more detail, but it's to use 0xFF as the SPI pad character so the last bit sent is a 1.

View solution in original post

0 Likes
18 Replies
BoonT_56
Employee
Employee
500 likes received 250 likes received 100 likes received

It is a requirement that pull ups are placed outside to SCL and SDA for proper operation. This thread says it all: BCM20737S internal i2c pull-up value

0 Likes
Anonymous
Not applicable

In thread BCM20737S internal i2c pull-up value

:The I2C spec requires an external pull up on SCL and SDA.  The internal pullup is not sufficient because the part will not be configured until an I2C slave is detected (i.e. external pullup), which is a chicken-egg situation.


What is it mean?How we can confirm our I2C pull resistors value?Our design is using Flash,and pull resistor is 2kohm.It will have 2.3mA leakage current.How do we do to resolve this issue?

0 Likes

Flash does not require such a pull-up scheme of things.

0 Likes
Anonymous
Not applicable

The I2C circuit has its own internal resistance, so the 2 kOhm resistor on SCL and SDA will not be drawing much power when the I2C is not used.  Yes, when the I2C port is used it will draw a few mA, but it's for a very short time.

As far as the Flash comment, I don't understand.  What does that have to do with the I2C pull up?  Can you explain?  If you are talking about the EEPROM Write Protect line pull up, the value of that resistor is higher, and it doesn't draw any significant current.

0 Likes
Anonymous
Not applicable

Because we use flash by spi,and sensor by I2C.Spi and I2C cocurrent with two pins.So we add pull resistor.

0 Likes

I don't really understand the concurrent usage here. The use of pull-up resistors for I2C is a universal requirement. SPI on the other hand uses 4 pins instead. In any case, only SPI2 is available to your application. You may like to refer to the SPI sample code provided in the HW interfaces.

0 Likes
BoonT_56
Employee
Employee
500 likes received 250 likes received 100 likes received

You may want to test out different values for the pull-up resistors and observe the leakage current. How about 10Kohm or 4.7Kohm?

0 Likes
Anonymous
Not applicable

We use SPI1 for flash and I2C for sensor IC.If add 10kohm or 4.7kohm resistor,the PCB can't download.

0 Likes

There was a discussion on the inclusion of a patch in the makefile.

APP_PATCHES_AND_LIBS += enable_spiffy1_i2c_interop.a


More details at below:


BCM20736S I2C, PUART and SPI comms


Can you try and revert?


wangguoshun@gozone-mobi.com



0 Likes
Anonymous
Not applicable

We have use it,and SPI1 and I2C can work well.But in standby mode,it have leak current.

0 Likes

You were saying that the inclusion of the 2Kohm pull-up resistors caused a leakage current of 2.3mA.

But if you remove the resistors, your download is OK and the board works OK too, including with the use of the patch.

Pardon my confusion here, then what is the issue?

wangguoshun@gozone-mobi.com

0 Likes
Anonymous
Not applicable

I think I know the reason for the leakage when it's in standby mode.  If the port goes into standby mode while configured as I2C, it's not a problem because the lines are open collector.  But if it's left as SPI, because of the pull-ups, it's necessary to adopt and "inactive data level" (sometimes called a pad character) for the SPI as 1 (all high - 0xFF), and not the normally adopted 0 (all low - 0x00) otherwise there will be a path to ground and leakage.

0 Likes
Anonymous
Not applicable

Do you know how to resolve this issue?

0 Likes
Anonymous
Not applicable

Yes, I explained how I think it could be solved.  See my post for more detail, but it's to use 0xFF as the SPI pad character so the last bit sent is a 1.

0 Likes

You may want to consider deploying a SPST device like the one below. You can use a GPIO to control OE1 and OE2. Once these two pins are exerted, 1A and 1B are through, similarly for 2A and 2B. The pull-up resistors are still attached on the I2C bus (on the right). You may then connect the SPI flash on the 1A and 2A network. Let us know if this helps.

spst.jpg

0 Likes
Anonymous
Not applicable

OK.  I understand now.

0 Likes

Is the pull resistor a requirement for SPI (not I2C) on BCM20736?

0 Likes
Anonymous
Not applicable

No.  He needs the pull-ups because he uses both SPI1 and I2C, and those 2 ports share the same pins.