- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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,
Solved! Go to Solution.
- Labels:
-
PSoC 5LP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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