Skip to content

Commit db0b8be

Browse files
committed
Improve I2C waveforms
1 parent 579dbb7 commit db0b8be

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_si2c.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@ static unsigned char twi_sda, twi_scl;
4444

4545
void twi_setClock(unsigned int freq){
4646
#if F_CPU == FCPU80
47-
if(freq <= 100000) twi_dcount = 18;//about 100KHz
47+
if(freq <= 100000) twi_dcount = 19;//about 100KHz
4848
else if(freq <= 200000) twi_dcount = 8;//about 200KHz
49-
else if(freq <= 300000) twi_dcount = 4;//about 300KHz
50-
else if(freq <= 400000) twi_dcount = 2;//about 370KHz
49+
else if(freq <= 300000) twi_dcount = 3;//about 300KHz
50+
else if(freq <= 400000) twi_dcount = 1;//about 370KHz
5151
else twi_dcount = 1;//about 450KHz
5252
#else
5353
if(freq <= 100000) twi_dcount = 32;//about 100KHz
54-
else if(freq <= 200000) twi_dcount = 16;//about 200KHz
54+
else if(freq <= 200000) twi_dcount = 14;//about 200KHz
5555
else if(freq <= 300000) twi_dcount = 8;//about 300KHz
56-
else if(freq <= 400000) twi_dcount = 4;//about 370KHz
56+
else if(freq <= 400000) twi_dcount = 5;//about 370KHz
5757
else twi_dcount = 2;//about 450KHz
5858
#endif
5959
}
@@ -109,15 +109,15 @@ static bool twi_write_bit(bool bit) {
109109
twi_delay(twi_dcount+1);
110110
SCL_HIGH();
111111
while (SCL_READ() == 0 && (i++) < TWI_CLOCK_STRETCH);// Clock stretching (up to 100us)
112-
twi_delay(twi_dcount+1);
112+
twi_delay(twi_dcount);
113113
return true;
114114
}
115115

116116
static bool twi_read_bit(void) {
117117
unsigned int i = 0;
118118
SCL_LOW();
119119
SDA_HIGH();
120-
twi_delay(twi_dcount+1);
120+
twi_delay(twi_dcount+2);
121121
SCL_HIGH();
122122
while (SCL_READ() == 0 && (i++) < TWI_CLOCK_STRETCH);// Clock stretching (up to 100us)
123123
bool bit = SDA_READ();

0 commit comments

Comments
 (0)