machine/rp2040: correct issue with i2c pin validation
Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
родитель
96b70fd619
коммит
6df303ff19
1 изменённых файлов: 10 добавлений и 8 удалений
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче