machine/rp2040: correct issue with i2c pin validation

Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
deadprogram 2023-02-23 16:06:02 +01:00 коммит произвёл Ron Evans
родитель 96b70fd619
коммит 6df303ff19

Просмотреть файл

@ -103,21 +103,23 @@ func (i2c *I2C) Configure(config I2CConfig) error {
config.SDA = I2C1_SDA_PIN config.SDA = I2C1_SDA_PIN
} }
} }
var okSDA, okSCL bool var okSCL, okSDA bool
switch i2c.Bus { switch i2c.Bus {
case rp.I2C0: case rp.I2C0:
okSDA = config.SDA%4 == 0
okSCL = (config.SCL+1)%4 == 0
case rp.I2C1:
okSDA = (config.SDA+2)%4 == 0
okSCL = (config.SCL+3)%4 == 0 okSCL = (config.SCL+3)%4 == 0
okSDA = (config.SDA+4)%4 == 0
case rp.I2C1:
okSCL = (config.SCL+1)%4 == 0
okSDA = (config.SDA+2)%4 == 0
} }
if !okSDA { switch {
return errInvalidI2CSDA case !okSCL:
} else if !okSCL {
return errInvalidI2CSCL return errInvalidI2CSCL
case !okSDA:
return errInvalidI2CSDA
} }
if config.Frequency == 0 { if config.Frequency == 0 {
config.Frequency = defaultBaud config.Frequency = defaultBaud
} }