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 при записи данных.
Интерфейс I2C работает уже более 3 часов без проблем.
Теперь, как только я добавляю к нему Teensy, автобус блокируется, и мне нужно полностью отключить все. Единственное, что мне удалось сделать, — это прямое соединение с RPI -> Teensy, и даже тогда были спорадические проблемы с обнаружением.
Я также пробовал библиотеку Wire и IC2_T3, но без разницы. Также пробовал с 4-мя разными Teensy, без разницы.
Поддержка Teensy несовместима с RPI?
@flyandi, 👍3
Обсуждение1 ответ
У меня нет опыта именно с вашей настройкой, но однажды у меня была похожая проблема. У меня был pi в качестве мастера I2C, модуль батареи, который использовал I2C для передачи состояния батареи, и два подключенных сервоконтроллера. Работали только сервоконтроллеры и работал только аккумуляторный модуль, но все три, подключенные к пи, не работали, и не было конфликтов в адресах I2C (кстати, вы это проверяли?). Выяснилось, что к обоим сервомодулям и аккумуляторному модулю были присоединены подтягивающие резисторы I2C, так что в итоге получилось 3x4k7 параллельно, что составляет около 1566 Ом. Решение состояло в том, чтобы удалить подтягивающие резисторы из сервоконтроллеров.
Итак, вопрос в том, не включали ли вы случайно подтягивающие резисторы на каком-либо из arduino/teensys/pi в дополнение к вашим собственным резисторам, что приводило к неправильному значению подтягивающего резистора?
- Wire.endTransmission() зависает
- Пайка несовмещенных выводов Arduino Pro Mini
- Несколько РАЗРЫВОВ I2C с подтягивающими резисторами не работают
- Сбой при записи данных MPU-6050 на SD-карту
- Невозможно отобразить строку chr с помощью Wire.read() и u8g2.drawStr().
- Arduino зависает (вероятно, из-за I2C). Нужна помощь в написании надежного сценария.
- Arduino отключает шину i2c
- Отправка и получение различных типов данных через I2C в Arduino
Это много антенн висит вокруг. Рассмотрите возможность использования метода, который предотвращает переход проводов микропроцессора от компьютера к компьютеру. Наземные ссылки могут вызвать много проблем и объяснить проблемы, но это не единственная возможность. Разные процессоры по-разному реагируют на переходные процессы. Убедитесь, что заземление каждого устройства соединено вместе. Я ожидаю, что каждая комбинация будет действовать по-разному., @Gil