Более двух устройств SPI на плате Arm, которая поддерживает только два?

Процессор Arm на одной из наших плат имеет spi-порт с двумя линиями выбора микросхемы. В техническом описании процессора упоминается, что он может управлять двумя spi-устройствами.

Можно ли использовать GPIO в качестве ведомого устройства для дополнительного устройства Spi? Как изменить существующие библиотеки / драйверы устройств для поддержки этого изменения?

До сих пор я нашел файл в исходном коде ядра, который содержит адреса контактов порта SPI. Может кто-нибудь, пожалуйста, скажите, в каком направлении мне следует действовать?

2 ответа

Решение

Вы не упоминаете, что это за процессор. У вас есть три возможности.

  1. Если процессор имеет i/o mux возможности, отключите функцию выбора микросхемы SPI. Контроллер SPI будет думать, что он установил линию, но он не выйдет наружу.
  2. Не подключайте один чип SPI. Используйте подъем / опускание для защиты от электростатического разряда.
  3. Мультиплекс chip select по Joachim Isaksson

В первых двух случаях подключите GPIO s для выбора чипа дополнительного устройства. Переключить GPIO вручную перед запуском spi_write() и т. д. Это позволит SPI Контроллер для передачи с более высокими скоростями, чем это возможно с битами ударов и является лучшим дизайном системы. То есть, более низкое энергопотребление, более низкая загрузка ЦП, более высокая скорость передачи данных и т. Д. Если периферийное устройство предназначено только для настройки / загрузки, то для простоты имеет смысл использовать битовую комбинацию. Однако, если ваша основная операция зависит от шины SPI, вы можете рассмотреть это решение.

Если для настройки требуется только одно периферийное устройство И у вас есть i/o mux можно отключить функцию выбора микросхемы во время настройки, используя GPIO для выбора периферийного устройства настройки, а затем снова включить spi chip select во время стандартной работы системы для другого периферийного устройства.

Используя GPIO не требует вмешательства пользователя. Водители могут предоставить call backs установить GPIO при использовании, так SPI Команды могут быть помещены в буфер / в очередь, и эти решения все еще работают. Например, IMX SPI Драйвер поддерживает переключение GPIO, передавая отрицательный номер чипа для обозначения идентификатора GPIO.

Примечание. Для некоторых устройств SPI может потребоваться chip select переключаться между words; что когда-либо word для устройства. Некоторый контроллер может покинуть chip select утверждается при передаче нескольких слов. Вы должны сделать это правильно, если вы используете GPIO для ручного выбора устройств. Я уверен, что некоторые стандарты определяют это, но определенно некоторые устройства не соответствуют стандарту.

Приложение: большинство драйверов поддерживают GPIO выбор чипа; через отрицательное значение выбора чипа. Они будут называть Linux GPIO функции. Напиши GPIO обработчик, который делает демультиплексирование. Не нужно менять SPI водители.

Если у вас достаточно контактов, вы можете использовать битовый протокол всего протокола SPI и использовать столько CS, сколько вам нужно.

Другие вопросы по тегам