SPI: проверить, подключив MOSI к MISO

spi testing

Можно ли проверить соединение SPI, подключив MISO напрямую к контакту MOSI? Я работаю над низкоуровневой реализацией SPI и хочу убедиться, что библиотека в основном работает. Было бы неплохо иметь возможность протестировать само соединение без дополнительного оборудования.

, 👍2

Обсуждение

Если вы замкнете MISO на MOSI, убедитесь, что к шине не подключены другие устройства., @Edgar Bonet

У вас есть осциллограф? Это можно использовать для проверки работы SPI., @MichaelT

@EdgarBonet Других устройств нет., @Jonah

@MichaelT К сожалению, нет, в какой-то момент может понадобиться его получить., @Jonah

Для потомков причина, по которой мой тест не работал, заключается в том, что вывод MOSI не был установлен в режим вывода., @Jonah


2 ответа


Лучший ответ:

4

Да, можно, и я часто так делаю при низкоуровневом электрическом тестировании интерфейса SPI. Для каждых часов, которые вы отправляете, данные, представленные в MOSI, будут отражены в MISO. Итак, если бы вы (используя библиотеку Arduino SPI) сделали:

uint8_t x = SPI.transfer(0x38);

тогда x должен равняться 0x38.

Я нахожу это особенно полезным в системах с переназначаемыми контактами, чтобы убедиться, что контакты правильно сконфигурированы в конфигурации платы для правильной работы SPI.

,

Отлично, спасибо за подтверждение. Основываясь на чтении временной диаграммы, казалось, что так и должно быть, но это не для меня. Теперь я могу с большей уверенностью знать, что проблема должна заключаться в моем коде, а не в концепции., @Jonah


3

Обычно мастер SPI отправляет данные, а ведомый синхронизирует данные обратно. Таким образом, если вы отправляете и получаете 8 бит за транзакцию, вы можете синхронизировать 8 бит и в то же время синхронизировать 8 бит, всего 8 тактов. . Это описано в этом абзаце Википедии. При этом часто первые 8 тактов используются для передачи команды, а дополнительные 8 тактов используются для получения результата.

Если бы вы зациклили MO SI на MISO, вы бы засекли то, что зациклили. Вы завершите всю транзакцию за 8 часов. На низком уровне я думаю это не имеет значения. Но на более высоком уровне программное обеспечение пришлось бы переписывать, чтобы приспособиться к этой странности.

,

Прохладный. Это не будет иметь значения для программирования более высокого уровня, меня интересует только запуск очень простого теста, чтобы проверить, работает ли моя библиотека (в настоящее время это не так, лол)., @Jonah

Я считаю, что то, что вы говорите, является хорошим подходом. То есть, помимо основ отправки/получения битов данных, эти простые последовательные интерфейсы, такие как SPI, часто модифицируются. Некоторые используют 8-битные транзакции. Другие используют 12 или даже 16 бит. Некоторые игнорируют полученные данные во время передачи команды. Другие синхронизируют общую информацию, не связанную с командой, просто чтобы не тратить пропускную способность впустую., @st2000