Skip to content

Commit 86e9b0b

Browse files
committed
teensy40: add I2C support
1 parent 3eb9dca commit 86e9b0b

File tree

4 files changed

+768
-5
lines changed

4 files changed

+768
-5
lines changed

src/machine/board_teensy40.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,3 +275,41 @@ const (
275275
I2C3_SDA_PIN = D25
276276
I2C3_SCL_PIN = D24
277277
)
278+
279+
var (
280+
I2C1 = I2C{
281+
Bus: nxp.LPI2C1,
282+
muxSDA: muxSelect{ // D18 (PA17 [AD_B1_01])
283+
mux: nxp.IOMUXC_LPI2C1_SDA_SELECT_INPUT_DAISY_GPIO_AD_B1_01_ALT3,
284+
sel: &nxp.IOMUXC.LPI2C1_SDA_SELECT_INPUT,
285+
},
286+
muxSCL: muxSelect{ // D19 (PA16 [AD_B1_00])
287+
mux: nxp.IOMUXC_LPI2C1_SCL_SELECT_INPUT_DAISY_GPIO_AD_B1_00_ALT3,
288+
sel: &nxp.IOMUXC.LPI2C1_SCL_SELECT_INPUT,
289+
},
290+
}
291+
292+
I2C2 = I2C{
293+
Bus: nxp.LPI2C3,
294+
muxSDA: muxSelect{ // D17 (PA22 [AD_B1_06])
295+
mux: nxp.IOMUXC_LPI2C3_SDA_SELECT_INPUT_DAISY_GPIO_AD_B1_06_ALT1,
296+
sel: &nxp.IOMUXC.LPI2C3_SDA_SELECT_INPUT,
297+
},
298+
muxSCL: muxSelect{ // D16 (PA23 [AD_B1_07])
299+
mux: nxp.IOMUXC_LPI2C3_SCL_SELECT_INPUT_DAISY_GPIO_AD_B1_07_ALT1,
300+
sel: &nxp.IOMUXC.LPI2C3_SCL_SELECT_INPUT,
301+
},
302+
}
303+
304+
I2C3 = I2C{
305+
Bus: nxp.LPI2C4,
306+
muxSDA: muxSelect{ // D25 (PA13 [AD_B0_13])
307+
mux: nxp.IOMUXC_LPI2C4_SDA_SELECT_INPUT_DAISY_GPIO_AD_B0_13_ALT0,
308+
sel: &nxp.IOMUXC.LPI2C4_SDA_SELECT_INPUT,
309+
},
310+
muxSCL: muxSelect{ // D24 (PA12 [AD_B0_12])
311+
mux: nxp.IOMUXC_LPI2C4_SCL_SELECT_INPUT_DAISY_GPIO_AD_B0_12_ALT0,
312+
sel: &nxp.IOMUXC.LPI2C4_SCL_SELECT_INPUT,
313+
},
314+
}
315+
)

src/machine/machine_mimxrt1062.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -339,10 +339,10 @@ func (jt *pinJumpTable) dispatchInterrupt(interrupt.Interrupt) {
339339
if status := gpio.ISR.Get() & gpio.IMR.Get(); status != 0 {
340340
gpio.ISR.Set(status) // clear interrupt
341341
for status != 0 {
342-
p := Pin(bits.TrailingZeros32(status))
343-
i := Pin(port + p)
344-
jt.lut[i](i)
345-
status &^= 1 << p
342+
off := Pin(bits.TrailingZeros32(status)) // ctz
343+
pin := Pin(port + off)
344+
jt.lut[pin](pin)
345+
status &^= 1 << off
346346
}
347347
}
348348
}

0 commit comments

Comments
 (0)