adafruit mcp2111 плата gpioget: ошибка чтения значений GPIO: Нет такого файла или каталога

Вопрос или проблема

Когда я подключаю плату adafruit mcp2111 и выполняю

gpioget 1 0 
gpioget: ошибка чтения значений GPIO: Нет такого файла или директории

плата обнаруживается:

lsusb
Bus 006 Device 002: ID 04d8:00dd Microchip Technology, Inc. MCP2221(a) UART/I2C Bridge

dmesg идентифицирует плату:

[  126.875885] usbcore: зарегистрирован новый драйвер интерфейса cdc_acm
[  126.875889] cdc_acm: драйвер USB Abstract Control Model для USB-модемов и ISDN-адаптеров
[  126.894934] mcp2221 0003:04D8:00DD.0003: USB HID v1.11 устройство [Microchip Technology Inc. MCP2221 USB-I2C/UART Combo] на usb-0000:00:1d.0-2/input2

драйверы загружаются нормально:

lsmod | grep 2221
hid_mcp2221            20480  0
industrialio          126976  1 hid_mcp2221
hid                   180224  3 usbhid,hid_generic,hid_mcp2221

узел устройства /dev/gpiochip1 появляется, когда я подключаю плату mcp2111:

ls /dev/gp*
/dev/gpiochip0  /dev/gpiochip1

gpiochip0 является частью моего ноутбука, gpiochip1 появляется после подключения платы mcp2221.
gpiodetect видит mcp2221, и у него есть 4 линии gpio.

gpiodetect
gpiochip0 [gpio_ich] (61 линий)
gpiochip1 [mcp2221_gpio] (4 линии)

gpioinfo 1
gpiochip1 - 4 линии:
        линия   0:      безымянная       неиспользуемая   вход  активный-высокий
        линия   1:      безымянная       неиспользуемая   вход  активный-высокий
        линия   2:      безымянная       неиспользуемая   вход  активный-высокий
        линия   3:      безымянная       неиспользуемая   вход  активный-высокий

Вот в чем проблема:

gpioget 1 0
gpioget: ошибка чтения значений GPIO: Нет такого файла или директории

Хотя вышеуказанный gpioinfo показывает, что устройство 1, линия 0 является входом. Не пропустил ли я что-то? Все это выполнялось от имени root, хотя сообщение об ошибке действительно не жалуется на разрешения.

Встроенный gpiochip0 в ноутбуке имеет некоторые входы, как показано на

gpioinfo 0
gpiochip0 - 61 линии:
        линия   0:      безымянная       неиспользуемая  выход  активный-высокий
        линия   1:      безымянная       неиспользуемая   вход  активный-высокий
        линия   2:      безымянная       неиспользуемая   вход  активный-высокий

поэтому я пытаюсь прочитать I/O пин 1 ноутбука (он должен быть читаемым)

gpioget 0 1
1

работает нормально. Могла ли это быть проблема с драйвером mcp2111? Что еще я могу сделать, чтобы уточнить это?

Ответ или решение

Ошибка gpioget при работе с платой Adafruit MCP2111: что делать?

Когда вы подключаете плату Adafruit MCP2111 и получаете ошибку gpioget: error reading GPIO values: No such file or directory, это может вызвать некоторое недоумение, особенно если в системе вы видите, что устройство распознано. Давайте разберёмся с этой проблемой и попытаемся найти её решение.

Шаг 1: Проверка подключения устройства

Сначала необходимо убедиться, что плата действительно подключена и правильно определяется системой. Вы уже провели необходимые команды, использовав lsusb и dmesg, и подтвердили, что устройство идентифицируется как [Microchip Technology Inc. MCP2221 USB-I2C/UART Combo] и драйвера загружаются без ошибок:

lsusb
dmesg

Шаг 2: Проверка присутствия устройства в /dev

Вы также правильно проверили наличие устройства в /dev, где после подключения плата создала gpiochip1. Это подтверждает, что устройство доступно для взаимодействия:

ls /dev/gp*

Вывод, показывающий оба gpiochip0 и gpiochip1, говорит о том, что система распознаёт новую подсистему GPIO.

Шаг 3: Использование gpiodetect и gpioinfo

С помощью команды gpiodetect вы смогли убедиться, что MCP2221 добавлен в систему и имеет 4 линии GPIO. Используя gpioinfo, вы увидели, что все линии отмечены как „unused“, и их состояние — „input“:

gpiodetect
gpioinfo 1

Это также верный шаг, поскольку позволяет подтвердить, что линии доступны для считывания.

Шаг 4: Анализ ошибки gpioget

Когда вы пытались выполнить команду gpioget 1 0, возникла ошибка. Эта проблема может быть связана с несколькими факторами, о которых стоит подумать:

  1. Драйвера и совместимость устройства:

    • Возможно, драйвера для MCP2111 или MCP2221 не полностью поддерживают функциональность GPIO. Убедитесь, что вы используете последнюю версию драйвера. Лучше всего проверить официальные репозитории и документацию Adafruit, чтобы узнать о потенциальных обновлениях.
  2. Инициализация GPIO:

    • Убедитесь, что вы правильно инициализировали линии GPIO. В некоторых случаях необходимо сначала установить состояние линий (например, с помощью gpioset).
  3. Проблемы с разрешениями:

    • Несмотря на то, что вы упомянули, что работаете от имени root, стоит перепроверить разрешения на доступ к /dev/gpiochip1. Попробуйте запустить команду, используя обычную учётную запись пользователя, которая имеет соответствующие разрешения.
  4. Кэширование и системные ошибки:

    • Если система сталкивается с проблемами в момент работы с устройствами, это может быть связано с кэшированием. Перезагрузка системы может иногда помочь в решении подобных проблем.

Шаг 5: Проверка с использованием другой библиотеки

Если проблема продолжает сохраняться, вы можете попробовать использовать другую библиотеку для работы с GPIO, такую как libgpiod. Например, можно воспользоваться следующими командами для проверки состояния GPIO:

gpiodetect
gpiodump gpiochip1

Эти команды позволят получить более детальную информацию о состоянии линий и выявить возможные конфликты.

Заключение

Решение проблемы с gpioget на плате Adafruit MCP2111 требует систематического подхода к диагностике. Убедитесь, что все драйвера обновлены, а устройства корректно инициализированы. Проверьте на наличие обновлений в документации и руководствах Adafruit, чтобы получить актуальную информацию. Если вы проверили все вышеописанные шаги и проблема всё ещё сохраняется, возможно, стоит обратиться в техническую поддержку Adafruit за дополнительной помощью.

Оцените материал
Добавить комментарий

Капча загружается...