Необходимо написать программу для управления контролером по I2C. На основе файла Documentation/i2c/dev_interface написал тестовую программу.
При работе наблюдается ряд проблем:
- при попытке использовать ioctl(file, I2C_SLAVE, addr) на выходе -1, что является ошибкой
решил заменой I2C_SLAVE на I2C_SLAVE_FORCE
- при последовательном чтении из одного регистра значения могут изменяться
Код:
# ./tvp5146control
Device File: /dev/i2c-0.
Device Address: 0x5d.
Device File opened successfully.
IOCTL good.
I2C read INPUT_SELECT registr value = 0x0.
I2C read INPUT_SELECT registr value = 0x80.
# ./tvp5146control
Device File: /dev/i2c-0.
Device Address: 0x5d.
Device File opened successfully.
IOCTL good.
I2C read INPUT_SELECT registr value = 0x0.
I2C read INPUT_SELECT registr value = 0x0.
# ./tvp5146control
Device File: /dev/i2c-0.
Device Address: 0x5d.
Device File opened successfully.
IOCTL good.
I2C read INPUT_SELECT registr value = 0x0.
I2C read INPUT_SELECT registr value = 0x0.
# ./tvp5146control
Device File: /dev/i2c-0.
Device Address: 0x5d.
Device File opened successfully.
IOCTL good.
I2C read INPUT_SELECT registr value = 0x1e.
I2C read INPUT_SELECT registr value = 0x0.
# ./tvp5146control
Device File: /dev/i2c-0.
Device Address: 0x5d.
Device File opened successfully.
IOCTL good.
I2C read INPUT_SELECT registr value = 0x0.
I2C read INPUT_SELECT registr value = 0x0.Почему так может происходить?
Собственно вопрос прост - где бы можно было почитать о программирование управления по I2C из пространства пользователя?
Поиск в Googl-у ничего не дал.
Спасибо.