Raspberry Pi, Teensy и Arduino на i2c

Я только что попал в интересную передрягу.

У меня есть 3 платы Arduino (Pro Mini) и 2 платы Teensy (3.1), подключенные через I2C к Raspberry Pi Master. Линии данных I2C 2x Teensy подключаются через OctoBoards, но это не имеет большого значения, поскольку OctoBoard сопоставляет контакты I2C Teensy с собой. У меня есть подтягивающие резисторы 4k7 для SDA/SLC рядом с мастером (также пробовал на конце - безрезультатно).

Один только Arduino очень надежен — никаких проблем, кроме периодических зависаний I2C при записи данных.

Arduino

Интерфейс I2C работает уже более 3 часов без проблем.

Теперь, как только я добавляю к нему Teensy, автобус блокируется, и мне нужно полностью отключить все. Единственное, что мне удалось сделать, — это прямое соединение с RPI -> Teensy, и даже тогда были спорадические проблемы с обнаружением.

Я также пробовал библиотеку Wire и IC2_T3, но без разницы. Также пробовал с 4-мя разными Teensy, без разницы.

Поддержка Teensy несовместима с RPI?

, 👍3

Обсуждение

Это много антенн висит вокруг. Рассмотрите возможность использования метода, который предотвращает переход проводов микропроцессора от компьютера к компьютеру. Наземные ссылки могут вызвать много проблем и объяснить проблемы, но это не единственная возможность. Разные процессоры по-разному реагируют на переходные процессы. Убедитесь, что заземление каждого устройства соединено вместе. Я ожидаю, что каждая комбинация будет действовать по-разному., @Gil


1 ответ


1

У меня нет опыта именно с вашей настройкой, но однажды у меня была похожая проблема. У меня был pi в качестве мастера I2C, модуль батареи, который использовал I2C для передачи состояния батареи, и два подключенных сервоконтроллера. Работали только сервоконтроллеры и работал только аккумуляторный модуль, но все три, подключенные к пи, не работали, и не было конфликтов в адресах I2C (кстати, вы это проверяли?). Выяснилось, что к обоим сервомодулям и аккумуляторному модулю были присоединены подтягивающие резисторы I2C, так что в итоге получилось 3x4k7 параллельно, что составляет около 1566 Ом. Решение состояло в том, чтобы удалить подтягивающие резисторы из сервоконтроллеров.

Итак, вопрос в том, не включали ли вы случайно подтягивающие резисторы на каком-либо из arduino/teensys/pi в дополнение к вашим собственным резисторам, что приводило к неправильному значению подтягивающего резистора?

,