I2C not doing I/O

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

cross mob
Anonymous
Not applicable

Hi,

   

I have a BLE low power application running on a PSoC 4. When you connect you can change various attributes and these values are stored in an I2C EEPROM.  The initial handling of this is done in the BLE Callback.  Then the applicationPower control is set to WAKEUP_DEEPSLEEP.  And another global is set for the particular attribute.  On return from the Callback the ManageApplicationPower() routine is called and if WAKEUP_DEEPSLEEP is set the I/O devices are awakened from sleep. And applicationPower is set to ACTIVE.

   

At this point a switch statement is entered looking the global for the particular attribute. Then the EEPROM write is set up.  The I/O lines should be active and applicationPower is now ACTIVE. The EEPROM write is called and it uses SCB_I2CMasterWriteBuf() to ouput the value to EEPROM.  The status from this is checked and should be SCB_I2C_MSTR_NO_ERROR and it is.  But I have a scope on the I2C lines and most of the time there is NO I2C activity. But the status is always  SCB_I2C_MSTR_NO_ERROR.  Also I have placed a delay after the write of 1 second so the I2C is done before the applicationPower control is set back to DEEPSLEEP.

   

It is like the I2C is still turned off but stepping through SCB_I2CMasterWriteBuf() there are no errors.

   

Can you suggest any thing else to find out why there is no I2C activity.

   

Thank you

   

--jim schimpf

0 Likes
2 Replies
rola_264706
Level 8
Level 8
50 likes received 25 likes received 10 likes received

I guess you added pull up resistors? Please post your code as we need to check it to determine the cause of the issue.

0 Likes
Anonymous
Not applicable

Found part of the problem.  I was calling SCB_WakeUp() to start the I2C.  Changing that to SCB_Start() seems to fix the problem.

0 Likes