Don't have to set SDA high initially in I2C reset because that is done by the pin configuration
This commit is contained in:
parent
fc973eb512
commit
6563ae07c2
@ -1574,7 +1574,11 @@ int up_i2creset(FAR struct i2c_dev_s *dev)
|
|||||||
|
|
||||||
up_disable_irq(priv->attr->irq);
|
up_disable_irq(priv->attr->irq);
|
||||||
|
|
||||||
/* Use PIO configuration to un-wedge the bus */
|
/* Use PIO configuration to un-wedge the bus.
|
||||||
|
*
|
||||||
|
* Reconfigure both pins as open drain outputs with initial output value
|
||||||
|
* "high" (i.e., floating since these are open-drain outputs).
|
||||||
|
*/
|
||||||
|
|
||||||
sclpin = MKI2C_OUTPUT(priv->attr->sclcfg);
|
sclpin = MKI2C_OUTPUT(priv->attr->sclcfg);
|
||||||
sdapin = MKI2C_OUTPUT(priv->attr->sdacfg);
|
sdapin = MKI2C_OUTPUT(priv->attr->sdacfg);
|
||||||
@ -1590,10 +1594,6 @@ int up_i2creset(FAR struct i2c_dev_s *dev)
|
|||||||
sam_pio_forceclk(sclpin, true);
|
sam_pio_forceclk(sclpin, true);
|
||||||
sam_pio_forceclk(sdapin, true);
|
sam_pio_forceclk(sdapin, true);
|
||||||
|
|
||||||
/* Let SDA go high (i.e., floating since this is an open-drain output). */
|
|
||||||
|
|
||||||
sam_piowrite(sdapin, true);
|
|
||||||
|
|
||||||
/* Clock the bus until any slaves currently driving it low let it float.
|
/* Clock the bus until any slaves currently driving it low let it float.
|
||||||
* Reading from the output will return the actual sensed level on the
|
* Reading from the output will return the actual sensed level on the
|
||||||
* SDA pin (not the level that we wrote).
|
* SDA pin (not the level that we wrote).
|
||||||
|
Loading…
Reference in New Issue
Block a user