[stm32] implement i2c_reset using rcc_periph_reset_pulse
this also adds support for I2C3 in i2c_reset
This commit is contained in:
parent
67b538a540
commit
c01f9ee323
@ -5,7 +5,7 @@ Thomas Otto <tommi@viadmin.org>
|
||||
@author @htmlonly © @endhtmlonly 2012
|
||||
Ken Sarkies <ksarkies@internode.on.net>
|
||||
|
||||
Devices can have up to two I2C peripherals. The peripherals support SMBus and
|
||||
Devices can have up to three I2C peripherals. The peripherals support SMBus and
|
||||
PMBus variants.
|
||||
|
||||
A peripheral begins after reset in Slave mode. To become a Master a start
|
||||
@ -52,14 +52,21 @@ the reset condition. The reset is effected via the RCC peripheral reset system.
|
||||
void i2c_reset(uint32_t i2c)
|
||||
{
|
||||
switch (i2c) {
|
||||
case I2C1:
|
||||
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C1RST);
|
||||
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C1RST);
|
||||
break;
|
||||
case I2C2:
|
||||
rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C2RST);
|
||||
rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1RSTR_I2C2RST);
|
||||
break;
|
||||
case I2C1:
|
||||
rcc_periph_reset_pulse(RCC_I2C1);
|
||||
break;
|
||||
#if defined(I2C2_BASE)
|
||||
case I2C2:
|
||||
rcc_periph_reset_pulse(RCC_I2C2);
|
||||
break;
|
||||
#endif
|
||||
#if defined(I2C3_BASE)
|
||||
case I2C3:
|
||||
rcc_periph_reset_pulse(RCC_I2C3);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user