SPI: проверить, подключив MOSI к MISO
Можно ли проверить соединение SPI, подключив MISO напрямую к контакту MOSI? Я работаю над низкоуровневой реализацией SPI и хочу убедиться, что библиотека в основном работает. Было бы неплохо иметь возможность протестировать само соединение без дополнительного оборудования.
@Jonah, 👍2
Обсуждение2 ответа
Лучший ответ:
Да, можно, и я часто так делаю при низкоуровневом электрическом тестировании интерфейса SPI. Для каждых часов, которые вы отправляете, данные, представленные в MOSI, будут отражены в MISO. Итак, если бы вы (используя библиотеку Arduino SPI) сделали:
uint8_t x = SPI.transfer(0x38);
тогда x
должен равняться 0x38
.
Я нахожу это особенно полезным в системах с переназначаемыми контактами, чтобы убедиться, что контакты правильно сконфигурированы в конфигурации платы для правильной работы SPI.
Отлично, спасибо за подтверждение. Основываясь на чтении временной диаграммы, казалось, что так и должно быть, но это не для меня. Теперь я могу с большей уверенностью знать, что проблема должна заключаться в моем коде, а не в концепции., @Jonah
Обычно мастер SPI отправляет данные, а ведомый синхронизирует данные обратно. Таким образом, если вы отправляете и получаете 8 бит за транзакцию, вы можете синхронизировать 8 бит и в то же время синхронизировать 8 бит, всего 8 тактов. . Это описано в этом абзаце Википедии. При этом часто первые 8 тактов используются для передачи команды, а дополнительные 8 тактов используются для получения результата.
Если бы вы зациклили MO SI на MISO, вы бы засекли то, что зациклили. Вы завершите всю транзакцию за 8 часов. На низком уровне я думаю это не имеет значения. Но на более высоком уровне программное обеспечение пришлось бы переписывать, чтобы приспособиться к этой странности.
Прохладный. Это не будет иметь значения для программирования более высокого уровня, меня интересует только запуск очень простого теста, чтобы проверить, работает ли моя библиотека (в настоящее время это не так, лол)., @Jonah
Я считаю, что то, что вы говорите, является хорошим подходом. То есть, помимо основ отправки/получения битов данных, эти простые последовательные интерфейсы, такие как SPI, часто модифицируются. Некоторые используют 8-битные транзакции. Другие используют 12 или даже 16 бит. Некоторые игнорируют полученные данные во время передачи команды. Другие синхронизируют общую информацию, не связанную с командой, просто чтобы не тратить пропускную способность впустую., @st2000
- Можно ли программировать для Ардуино без реальной платы?
- Как использовать SPI на Arduino?
- Как увеличить скорость записи на SD-карту в Ардуино
- Как считывать данные с помощью Arduino SPI
- Как передать более 1 байта сразу по шине SPI?
- OVF в последовательном мониторе вместо данных
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
Если вы замкнете MISO на MOSI, убедитесь, что к шине не подключены другие устройства., @Edgar Bonet
У вас есть осциллограф? Это можно использовать для проверки работы SPI., @MichaelT
@EdgarBonet Других устройств нет., @Jonah
@MichaelT К сожалению, нет, в какой-то момент может понадобиться его получить., @Jonah
Для потомков причина, по которой мой тест не работал, заключается в том, что вывод MOSI не был установлен в режим вывода., @Jonah