Skip to content

Commit ae1c1ac

Browse files
authored
[CH32VM00X] [CH32L10x] Add I2C / SPI support #199
Just add #if directive for... SPI: CH32VM00X I2C: CH32VM00X and CH32L10x openwch/arduino_core_ch32#199
1 parent cd07622 commit ae1c1ac

File tree

1 file changed

+12
-0
lines changed
  • libraries/Wire/src/utility

1 file changed

+12
-0
lines changed

libraries/Wire/src/utility/twi.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,15 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
141141
// Enable I2C1 clock if not done
142142
if (obj->i2c == I2C1)
143143
{
144+
#if defined(CH32L10x) || defined(CH32VM00X)
145+
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C1, ENABLE);
146+
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C1, DISABLE);
147+
RCC_PB1PeriphClockCmd(RCC_PB1Periph_I2C1, ENABLE );
148+
#else
144149
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE);
145150
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE);
146151
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE );
152+
#endif
147153

148154
obj->irq = I2C1_EV_IRQn;
149155
obj->irqER = I2C1_ER_IRQn;
@@ -154,9 +160,15 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
154160
// Enable I2C2 clock if not done
155161
if (obj->i2c == I2C2)
156162
{
163+
#if defined(CH32L10x) || defined(CH32VM00X)
164+
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C2, ENABLE);
165+
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C2, DISABLE);
166+
RCC_PB1PeriphClockCmd(RCC_PB1Periph_I2C2, ENABLE );
167+
#else
157168
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, ENABLE);
158169
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, DISABLE);
159170
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE );
171+
#endif
160172

161173
obj->irq = I2C2_EV_IRQn;
162174
obj->irqER = I2C2_ER_IRQn;

0 commit comments

Comments
 (0)