Более двух устройств SPI на плате Arm, которая поддерживает только два?
Процессор Arm на одной из наших плат имеет spi-порт с двумя линиями выбора микросхемы. В техническом описании процессора упоминается, что он может управлять двумя spi-устройствами.
Можно ли использовать GPIO в качестве ведомого устройства для дополнительного устройства Spi? Как изменить существующие библиотеки / драйверы устройств для поддержки этого изменения?
До сих пор я нашел файл в исходном коде ядра, который содержит адреса контактов порта SPI. Может кто-нибудь, пожалуйста, скажите, в каком направлении мне следует действовать?
2 ответа
Вы не упоминаете, что это за процессор. У вас есть три возможности.
- Если процессор имеет
i/o mux
возможности, отключите функцию выбора микросхемы SPI. Контроллер SPI будет думать, что он установил линию, но он не выйдет наружу. - Не подключайте один чип SPI. Используйте подъем / опускание для защиты от электростатического разряда.
- Мультиплекс
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, сколько вам нужно.