Skip to content

Commit b4e4528

Browse files
committed
machine/rp2040: correct issue with i2c pin validation
Signed-off-by: deadprogram <[email protected]>
1 parent 044bd8e commit b4e4528

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/machine/machine_rp2040_i2c.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,21 +103,23 @@ func (i2c *I2C) Configure(config I2CConfig) error {
103103
config.SDA = I2C1_SDA_PIN
104104
}
105105
}
106-
var okSDA, okSCL bool
106+
var okSCL, okSDA bool
107107
switch i2c.Bus {
108108
case rp.I2C0:
109-
okSDA = config.SDA%4 == 0
110-
okSCL = (config.SCL+1)%4 == 0
109+
okSCL = (config.SCL+3)%4 == 0
110+
okSDA = (config.SDA+4)%4 == 0
111111
case rp.I2C1:
112+
okSCL = (config.SCL+1)%4 == 0
112113
okSDA = (config.SDA+2)%4 == 0
113-
okSCL = (config.SCL+3)%4 == 0
114114
}
115115

116-
if !okSDA {
117-
return errInvalidI2CSDA
118-
} else if !okSCL {
116+
switch {
117+
case !okSCL:
119118
return errInvalidI2CSCL
119+
case !okSDA:
120+
return errInvalidI2CSDA
120121
}
122+
121123
if config.Frequency == 0 {
122124
config.Frequency = defaultBaud
123125
}

0 commit comments

Comments
 (0)