@@ -10,15 +10,6 @@ import (
1010"errors"
1111)
1212
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-
2213var (
2314errI2CWriteTimeout = errors .New ("I2C timeout during write" )
2415errI2CReadTimeout = errors .New ("I2C timeout during read" )
@@ -174,7 +165,7 @@ func (i2c *I2C) Configure(config I2CConfig) {
174165
175166freq := config .Frequency
176167if 0 == freq {
177- freq = TWI_FREQ_DEFAULT
168+ freq = 100 * KHz
178169}
179170
180171// reset clock and registers, and enable LPI2C module interface
@@ -305,7 +296,7 @@ func (i2c *I2C) setFrequency(freq uint32) {
305296wasEnabled := i2c .Bus .MCR .HasBits (nxp .LPI2C_MCR_MEN )
306297i2c .Bus .MCR .ClearBits (nxp .LPI2C_MCR_MEN )
307298
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)))
309300// assume: CLKLO=2*CLKHI, SETHOLD=CLKHI, DATAVD=CLKHI/2
310301for pre := uint32 (1 ); pre <= 128 ; pre *= 2 {
311302if bestError == 0 {
@@ -314,9 +305,9 @@ func (i2c *I2C) setFrequency(freq uint32) {
314305for clkHi := uint32 (1 ); clkHi < 32 ; clkHi ++ {
315306var absError , rate uint32
316307if clkHi == 1 {
317- rate = (TWI_FREQ_BUS / pre ) / (1 + 3 + 2 + 2 / pre )
308+ rate = (24 * MHz / pre ) / (1 + 3 + 2 + 2 / pre )
318309} else {
319- rate = (TWI_FREQ_BUS / pre ) / (3 * clkHi + 2 + 2 / pre )
310+ rate = (24 * MHz / pre ) / (3 * clkHi + 2 + 2 / pre )
320311}
321312if freq > rate {
322313absError = freq - rate
@@ -370,15 +361,15 @@ func (i2c *I2C) setFrequency(freq uint32) {
370361mcfgr2 , mcfgr3 uint32
371362)
372363const i2cClockStretchTimeout = 15000 // microseconds
373- if freq >= TWI_FREQ_5MHZ {
364+ if freq >= 5 * MHz {
374365// I2C UltraFastMode 5 MHz
375366mcfgr2 = 0 // disable glitch filters and timeout for UltraFastMode
376367mcfgr3 = 0 //
377- } else if freq >= TWI_FREQ_1MHZ {
368+ } else if freq >= 1 * MHz {
378369// I2C FastModePlus 1 MHz
379370mcfgr2 = filtsda (1 ) | filtscl (1 ) | busidle (2400 ) // 100us timeout
380371mcfgr3 = pinlow (i2cClockStretchTimeout * 24 / 256 + 1 )
381- } else if freq >= TWI_FREQ_400KHZ {
372+ } else if freq >= 400 * KHz {
382373// I2C FastMode 400 kHz
383374mcfgr2 = filtsda (2 ) | filtscl (2 ) | busidle (3600 ) // 150us timeout
384375mcfgr3 = pinlow (i2cClockStretchTimeout * 24 / 256 + 1 )
0 commit comments