PSoC5LP Fixed function I2C component

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

cross mob
MiNe_85951
Level 7
Level 7
Distributor - TED (Japan)
50 likes received 500 replies posted 50 solutions authored

Hi,

We are using fixed function I2C component of PSoC5LP.

Therefore, Datasheet (v3.50) p.36 has the following description.

/***********************************************************************************/

Fixed-function implementation does not support undefined bus conditions.

Avoid these conditions, or use the UDB-based implementation instead.

/***********************************************************************************/

We have the following questions:

1. When using fixed-function, is the Undefined state when the I2C bus transitions from High to Low?

2. If it becomes Undefined, will it be a bus busy error?

3. Is it possible to avoid bus busy errors by turning the I2C component off and then transitioning the bus to Low?

4. Is fixed-function block reset when returning from Hibernate / Sleep?
As a reason, it is assumed that BUS_CLK supplied to the fixed-function block stops once.

Regards,

0 Likes
1 Solution
Hari
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello MaMi_1205306

PSoC I2C component follows the standard I2C specification given by I2C-bus specification and user manual

There is an undefined condition if the arbitration procedure is still in progress at the moment when one master sends a repeated START or a STOP condition while the other master is still sending data. In other words, the following combinations result in an undefined condition:

• Master 1 sends a repeated START condition and master 2 sends a data bit.

• Master 1 sends a STOP condition and master 2 sends a data bit.

• Master 1 sends a repeated START condition and master 2 sends a STOP condition.

In the event an undefined condition occurs, the state of I2C bus is not guaranteed.

Thanks and regards

Harigovind

View solution in original post

0 Likes
5 Replies
Hari
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello MaMi_1205306

PSoC I2C component follows the standard I2C specification given by I2C-bus specification and user manual

There is an undefined condition if the arbitration procedure is still in progress at the moment when one master sends a repeated START or a STOP condition while the other master is still sending data. In other words, the following combinations result in an undefined condition:

• Master 1 sends a repeated START condition and master 2 sends a data bit.

• Master 1 sends a STOP condition and master 2 sends a data bit.

• Master 1 sends a repeated START condition and master 2 sends a STOP condition.

In the event an undefined condition occurs, the state of I2C bus is not guaranteed.

Thanks and regards

Harigovind

0 Likes
MiNe_85951
Level 7
Level 7
Distributor - TED (Japan)
50 likes received 500 replies posted 50 solutions authored

Harigovind-san,

To reduce power consumption,
The pull-up resistor of the I2C bus is pulled down (not Hi-Z).
As a result, I2C(fixed) becomes undefined.

Is it correct in the following procedure to return from undefined?

After switching the pull-down resistor of the I2C bus to pull-up,

(a) Stop the I2C(fixed) component and start it (or call Init() API).

(b) Return from low power mode to active mode.

Regards,

0 Likes
Hari
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello MaMi_1205306

The I2C lines in PSoC require an external pull up resistor for correct operation (as per I2C spec).

Thanks and regards

Harigovind

0 Likes
MiNe_85951
Level 7
Level 7
Distributor - TED (Japan)
50 likes received 500 replies posted 50 solutions authored

Harigovind-san,

My explanation was insufficient.
SDA and SCL are pulled up by external resistance.
To enter low power mode,
Stop the I2C device connected to PSoC5LP,
I2C pull-up voltage is switched to GND(That means pull down).

Then, I2C of PSoC5LP becomes undefined.
We would lile to know how to deal with it.

Regards,

0 Likes
Hari
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi MaMi_1205306

Once the device comes out of the low power mode, the I2C lines would be pulled HIGH. After this, restarting the I2C component by calling I2C_Start() would be sufficient.

Please note that the time when the bus is pulled LOW, the I2C will be in undefined state and during this time, the SCB block may not function as per the requirement.

Thanks and regards

Harigovind

0 Likes