Подключение SDI и SDO к одному контакту DATA

На акселерометре MMA7455 есть только один контакт DATA, который используется как для ввода, так и для вывода. В мануале мне сказано подключить этот контакт к SDI и SDO. Теперь все хорошо, но на моем чипе это два отдельных вывода.

Если я подключу выводы SDI и SDO к выводу DATA, не будут ли данные, выходящие из SDO, также поступать на вывод SDI? Не вызовет ли это никаких проблем?

Есть ли какая-либо буферизация, которая потенциально могла бы хранить данные, поступающие через SDI? (Так что, возможно, после отправки чего-то из SDO я могу очистить буфер в SDI, чтобы не читать то, что я только что отправил).

введите описание изображения здесь

Ответы (2)

Судя по картинке, у вас есть плата/модуль для MMA7455 от Parallex? Сама микросхема позволяет использовать как 4-проводной, так и 3-проводной SPI, но этот модуль имеет только 3-проводной режим.

Но это не проблема. Суть 3-х проводного режима в том, что он полудуплексный, передаёт только в одну сторону за раз. И это устройство является ведомым устройством, оно не отправляет произвольные данные все время. Подключив sdi и sdo к одному и тому же контакту, вы просто освободите контакт sdo (режим tristate/input), когда вы ожидаете чтения данных. Вы управляете часами, поэтому вы контролируете, когда и как быстро акселерометр отправляет данные. Вы устанавливаете вывод cs, отправляете адрес регистра с битом чтения, затем, прежде чем начать синхронизацию данных, вы освобождаете вывод SDO. Вы очищаете свой буфер, затем синхронизируете данные. Если вы не готовы, не ставьте галочку на spi-часах.

Что вы хотите/нужно сделать, так это взглянуть на техническое описание чипа, а не только на техническое описание модуля.

С таким чипом нет большого преимущества в использовании встроенной периферии SPI микроконтроллера. Просто подключите акселерометр к некоторым контактам ввода-вывода общего назначения и напишите программное обеспечение для создания сигналов, показанных на временной диаграмме таблицы данных. Взрывной стиль!

Или используйте вместо этого режим I2C.

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