@@ -10,15 +10,6 @@ import (
10
10
"errors"
11
11
)
12
12
13
- const (
14
- TWI_FREQ_BUS = 24000000 // LPI2C root clock is on 24 MHz OSC
15
- TWI_FREQ_100KHZ = 100000 // StandardMode (100 kHz)
16
- TWI_FREQ_400KHZ = 400000 // FastMode (400 kHz)
17
- TWI_FREQ_1MHZ = 1000000 // FastModePlus (1 MHz)
18
- TWI_FREQ_5MHZ = 5000000 // UltraFastMode (5 MHz)
19
- TWI_FREQ_DEFAULT = TWI_FREQ_100KHZ // default to StandardMode (100 kHz)
20
- )
21
-
22
13
var (
23
14
errI2CWriteTimeout = errors .New ("I2C timeout during write" )
24
15
errI2CReadTimeout = errors .New ("I2C timeout during read" )
@@ -174,7 +165,7 @@ func (i2c *I2C) Configure(config I2CConfig) {
174
165
175
166
freq := config .Frequency
176
167
if 0 == freq {
177
- freq = TWI_FREQ_DEFAULT
168
+ freq = 100 * KHz
178
169
}
179
170
180
171
// reset clock and registers, and enable LPI2C module interface
@@ -305,7 +296,7 @@ func (i2c *I2C) setFrequency(freq uint32) {
305
296
wasEnabled := i2c .Bus .MCR .HasBits (nxp .LPI2C_MCR_MEN )
306
297
i2c .Bus .MCR .ClearBits (nxp .LPI2C_MCR_MEN )
307
298
308
- // baud rate = (TWI_FREQ_BUS /(2^pre))/(CLKLO+1 + CLKHI+1 + FLOOR((2+FILTSCL)/(2^pre)))
299
+ // baud rate = (24MHz /(2^pre))/(CLKLO+1 + CLKHI+1 + FLOOR((2+FILTSCL)/(2^pre)))
309
300
// assume: CLKLO=2*CLKHI, SETHOLD=CLKHI, DATAVD=CLKHI/2
310
301
for pre := uint32 (1 ); pre <= 128 ; pre *= 2 {
311
302
if bestError == 0 {
@@ -314,9 +305,9 @@ func (i2c *I2C) setFrequency(freq uint32) {
314
305
for clkHi := uint32 (1 ); clkHi < 32 ; clkHi ++ {
315
306
var absError , rate uint32
316
307
if clkHi == 1 {
317
- rate = (TWI_FREQ_BUS / pre ) / (1 + 3 + 2 + 2 / pre )
308
+ rate = (24 * MHz / pre ) / (1 + 3 + 2 + 2 / pre )
318
309
} else {
319
- rate = (TWI_FREQ_BUS / pre ) / (3 * clkHi + 2 + 2 / pre )
310
+ rate = (24 * MHz / pre ) / (3 * clkHi + 2 + 2 / pre )
320
311
}
321
312
if freq > rate {
322
313
absError = freq - rate
@@ -370,15 +361,15 @@ func (i2c *I2C) setFrequency(freq uint32) {
370
361
mcfgr2 , mcfgr3 uint32
371
362
)
372
363
const i2cClockStretchTimeout = 15000 // microseconds
373
- if freq >= TWI_FREQ_5MHZ {
364
+ if freq >= 5 * MHz {
374
365
// I2C UltraFastMode 5 MHz
375
366
mcfgr2 = 0 // disable glitch filters and timeout for UltraFastMode
376
367
mcfgr3 = 0 //
377
- } else if freq >= TWI_FREQ_1MHZ {
368
+ } else if freq >= 1 * MHz {
378
369
// I2C FastModePlus 1 MHz
379
370
mcfgr2 = filtsda (1 ) | filtscl (1 ) | busidle (2400 ) // 100us timeout
380
371
mcfgr3 = pinlow (i2cClockStretchTimeout * 24 / 256 + 1 )
381
- } else if freq >= TWI_FREQ_400KHZ {
372
+ } else if freq >= 400 * KHz {
382
373
// I2C FastMode 400 kHz
383
374
mcfgr2 = filtsda (2 ) | filtscl (2 ) | busidle (3600 ) // 150us timeout
384
375
mcfgr3 = pinlow (i2cClockStretchTimeout * 24 / 256 + 1 )
0 commit comments