@@ -69,6 +69,9 @@ void i2c_init(i2c_t *obj, PinName sda, PinName scl)
69
69
// Enable I2C clock
70
70
__I2C1_CLK_ENABLE ();
71
71
72
+ // Configure the I2C clock source
73
+ __HAL_RCC_I2C1_CONFIG (RCC_I2C1CLKSOURCE_SYSCLK );
74
+
72
75
// Configure I2C pins
73
76
pinmap_pinout (sda , PinMap_I2C_SDA );
74
77
pinmap_pinout (scl , PinMap_I2C_SCL );
@@ -102,22 +105,17 @@ void i2c_frequency(i2c_t *obj, int hz)
102
105
- I2C clock source = 64 MHz (System Clock w/ HSI) or 72 (System Clock w/ HSE)
103
106
- Analog filter delay = ON
104
107
- Digital filter coefficient = 0
105
- - Rise time = 100 ns
106
- - Fall time = 10ns
107
108
*/
108
109
if (SystemCoreClock == 64000000 ) {
109
110
switch (hz ) {
110
111
case 100000 :
111
- tim = 0x60302730 ; // Standard mode
112
- break ;
113
- case 200000 :
114
- tim = 0x00C07AB3 ; // Fast Mode
112
+ tim = 0x10B17DB4 ; // Standard mode with Rise time = 120ns, Fall time = 120ns
115
113
break ;
116
114
case 400000 :
117
- tim = 0x00C0216C ; // Fast Mode
115
+ tim = 0x00E22163 ; // Fast Mode with Rise time = 120ns, Fall time = 120ns
118
116
break ;
119
117
case 1000000 :
120
- tim = 0x00900B22 ; // Fast Mode Plus
118
+ tim = 0x00A00D1E ; // Fast Mode Plus with Rise time = 120ns, Fall time = 10ns
121
119
// Enable the Fast Mode Plus capability
122
120
__HAL_SYSCFG_FASTMODEPLUS_ENABLE (HAL_SYSCFG_FASTMODEPLUS_I2C1 );
123
121
break ;
@@ -127,16 +125,13 @@ void i2c_frequency(i2c_t *obj, int hz)
127
125
} else if (SystemCoreClock == 72000000 ) {
128
126
switch (hz ) {
129
127
case 100000 :
130
- tim = 0x10C08DCF ; // Standard mode
131
- break ;
132
- case 200000 :
133
- tim = 0xA010031A ; // Fast Mode
128
+ tim = 0x10D28DCB ; // Standard mode with Rise time = 120ns, Fall time = 120ns
134
129
break ;
135
130
case 400000 :
136
- tim = 0x00E0257A ; // Fast Mode
131
+ tim = 0x00F32571 ; // Fast Mode with Rise time = 120ns, Fall time = 120ns
137
132
break ;
138
133
case 1000000 :
139
- tim = 0x00A00D26 ; // Fast Mode Plus
134
+ tim = 0x00C00D24 ; // Fast Mode Plus with Rise time = 120ns, Fall time = 10ns
140
135
// Enable the Fast Mode Plus capability
141
136
__HAL_SYSCFG_FASTMODEPLUS_ENABLE (HAL_SYSCFG_FASTMODEPLUS_I2C1 );
142
137
break ;
0 commit comments