I2C pullups

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

cross mob
Anonymous
Not applicable

Hello All,

   

this may be a dumb question but can i use PRoC internal pull up for I2C or do I have to connect pull up externally on PCB?

   

 

   

Thank

   

Ashutosh

0 Likes
5 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

You will have to provide external pullups ~5k

   

 

   

Bob

0 Likes

This question needs to be pointed out more strongly, you HAVE to use external pull ups on the I2C of the PRoC modules, from the module data sheet.

Note For PSoC 4100 / PSoC 4200 I2C pins output enable is assigned to 0 to make High-Z state when I2C device does not drive the bus. This behavior suppresses usage of internal pull-ups (changing Drive Mode to Resistive pull-up has no effect). The external pull-ups must be used.

Now for the $1000 question, since I have not had a processor in 10 years that needed external pull ups for I2C and now I do, why did you not warn me with a compiler warning, or config warning in the dialog for I2C, would have been simple to do, but cost us time and money since we missed that.

You I2C dialog box should have the pull ups option as a check box, (instead of the copy you need to add before start, which I did, but it did not have any effect as noted above, and if not available add a big note saving you must use external pull ups.

You guys whiffed on this one, please add this to the fix list.

0 Likes

Herb,

     The internal pull up resistors values are always fixed and  as far as I2C interface is concerns the controller should drive the I2C open drain/collector lines always LOW and you should put the external pull ups with  correctly calculated resistance values. If in the case the internal resistance value does not satisfy the requirement for a particular I2C mode communication , there will be signal loss and if you have connected external pull ups its easy to change the design in later stages.

Coming to datasheet, I think enough information is provided there on this topic on page #14 and #24 ( Internal pull ups section)

Hope this clears your queries.

-Gyan

0 Likes

Gyan, I must respectfully ask you to reconsider my point.

I was an FAE in this industry for many years and helping customers avoid mistakes was job one.  Anything easy that Cypress could do to ensure that simple issues do not cause customer problems, should be done.

As I stated, in many other solutions, especially modules, optional internal pull ups have become the standard, I believe that is true for many Cypress parts as well.  Since it is now common practice, and Cypress has the SCB tool, it is in the best interest of Cypress to insert a warning, when you select master, and have selected a module without internal pull-ups.  It would be an easy add to the SCB component, and save customers from making a simple, but most likely common mistake, since adding external pull ups is not common practice anymore.

Similarly, you helped me with the cap trim of the module, thank you again, but that could also have been a warning in the BLE component and you would not have had to help me, and it would have saved me time and concern, a value to both of us, that is my point.

Your support is excellent, and I am glad to be using Cypress, code on and be happy.

0 Likes

I just tested with cy8ckit-042-ble-a using this before I2C_2_Start():

I2C_2_scl_SetDriveMode(I2C_2_scl_DM_RES_UP);
I2C_2_sda_SetDriveMode(I2C_2_sda_DM_RES_UP);   

Seems to work just fine without external pullups. The processor is PSoC 4200 BLE. I did the test with P0.4 and P0.5, which do not have pullups on PCB like P5.0 and P5.1 do.

0 Likes