Вопрос

Я начинаю пытаться взаимодействовать с некоторыми внешними компонентами (Skyetek M1 Mini или RFID-сканером M1), которые поддерживают следующие протоколы TTL, SPI или I2C.Мне интересно, какой из этих маршрутов вы бы порекомендовали.Приложению, которое работает на месте, требуется много времени на обработку (постоянно работающий алгоритм сопоставления жестов) и оно довольно затратно по ресурсам.

Будем очень признательны за любые ссылки или источники по теме.

Полезные ссылки, которые я нашел:

ТТЛ:

  • Листинг функций в том числе для контроля UART.
  • Судя по всему, он не имеет хорошего контроля над буфером. этот

Спасибо за вашу помощь.


Редактировать:

Если это поможет, я пытаюсь подключиться к устройству Skyetek. М1 и М1 мини.Платформа/процессор — Sun СанСПОТ.

Это было полезно?

Решение

Под TTL вы имеете в виду UART (когда периферийное устройство автоматически получает/отправляет последовательный поток) или битовый обмен (когда вы вручную устанавливаете/сбрасываете/переключаете биты)?

Я бы, наверное, порекомендовал SPI.Это относительно простой протокол, и на главной стороне, если понадобится, вы можете его побитно взломать.(Но гораздо проще использовать встроенные периферийные устройства SPI.) Ведущий SPI отправляет линию тактовой частоты (SCLK) и линию данных (MOSI = ведущий выход, вход подчиненного устройства), где биты данных действительны на определенном фронте тактовой частоты. линия;он получает линию данных (MISO = ведущий на выходе подчиненного устройства) от подчиненного устройства, где биты данных действительны на назначенном фронте линии синхронизации.Если у вас несколько подчиненных устройств, обычно используется одна линия выбора чипа (CS) для каждого подчиненного устройства;если CS имеет низкий уровень, то рассматриваемое ведомое устройство активно, в противном случае предполагается, что оно игнорирует сигналы синхронизации/данных и не нарушает линию MISO.SPI прост и даже будет работать с выходным регистром HC594 или HC595 (свяжите MOSI с SER, SCLK с SCK, CS с RCK), если в вашем микроконтроллере недостаточно контактов выходного порта и вам нужно несколько дополнительных.Если у вас более трех устройств SPI, рассмотрите возможность использования HC138 в качестве декодера для создания отдельных строк CS устройства из набора адресных битов и линии выбора главного чипа из микропроцессора.(поскольку одновременно только одна линия CS должна быть низкой)

I2C — это боль.Его главное преимущество в том, что вы можете сделать все по 2 проводам (+ питание и земля), общим для множества периферийных устройств.Но вам придется справиться с конфликтом адресов и множеством других вещей.Он также медленнее, чем SPI, и имеет линии с открытым коллектором, поэтому его энергопотребление + помехозащищенность зависят от того, что вы используете для подтягивающих резисторов (или источников тока).

UART может быть самым быстрым решением.SPI имеет ограничение скорости, связанное со временем двустороннего распространения, поскольку обе стороны используют один и тот же тактовый сигнал.(путь сигнала = ведущий меняет вывод SCLK, ведомый видит это и отвечает, меняя вывод MISO, затем ведущий использует сигнал MISO на следующем фронте SCLK, поэтому к тому времени должен поступить сигнал от ведомого устройства) В UART входящие и исходящие потоки битов независимы, и задержка не означает, что ваша пропускная способность снижается, если только протокол высокого уровня не предназначен для конечной точки UART A для отправки команды в конечную точку UART B, ожидания ответа B, а затем отправки следующей команды.Для действительно быстрых последовательных потоков следует рассмотреть возможность использования ЛВДС для поддержания целостности сигнала.Но анализ байтов UART — это своего рода боль по сравнению с SPI;в SPI есть четко разделенные пакеты, тогда как в UART вы имеете дело с неограниченным последовательным потоком, и любая пакетизация должна выполняться на основе анализа самих данных.

редактировать:Еще один плюс UART заключается в том, что иногда процессор может автоматически обрабатывать большие буферы отправки/приема, так что ваша программа может поставить в очередь большой блок байтов для отправки, а затем проанализировать кучу полученных байтов, когда вам захочется. .Аппаратное обеспечение может обеспечить немедленную отправку/получение каждого отдельного байта и освобождает вашу программу от необходимости беспокоиться о пропущенных отдельных байтах, которые поступают, когда ваша программа делает что-то еще.

Другие советы

Ответ Джейсона намного более подробный, но я решил добавить свой краткий опыт.

Я использовал модуль чтения/записи SkyTek M1 Micro RFID, подключенный к BASIC Stamp через TTL.У меня никогда не было никаких проблем, и настройка была намного проще, чем если бы я выбрал I2C.

Для этого просто требуется, чтобы микроконтроллер отправлял простые команды последовательного TTL в соответствии с протоколом SkyeTek.Я настроил его и заработал на своем макете примерно за 5 минут.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top