Связь через SPI в Android

В настоящее время я ищу решение для связи через SPI в Android. Я установил NDK в свою систему и использовал собственные классы для связи с GPIO (/sys/class/gpio/gpioxx/value) на моей Wandboard. Это работает нормально. Так что принцип использования кода NDK или C в Android для меня понятен. К сожалению, я не могу найти SPI-устройства /dev/… . Я нахожу только устройства I²C. Может ли кто-нибудь сказать мне, если Android в основном предлагает SPI? И если можно, где я могу найти устройство? Могу ли я общаться так же, как с Linux?

спасибо


person user2739686    schedule 10.09.2013    source источник


Ответы (1)


Это ответ на очень старый вопрос, но он все еще может быть полезен для кого-то еще

Часто по умолчанию /dev/spidev0.0 не включен. Он должен быть включен как в ядре во время сборки, так и в дереве устройств во время выполнения.

Первый шаг — изменить конфигурацию сборки ядра Linux, чтобы включить spidev, добавив

CONFIG_SPI_SPIDEV=y

И в дереве устройств (один из файлов dts) добавьте лист spidev к устройству spi, к которому вы хотите подключиться.

Это пример для hikey960 и spi3 на высокоскоростном разъеме, другие платы будут немного отличаться

&spi3 {
    /* On High speed expansion */
    label = "HS-SPI1";
    status = "okay";
    spi-cpol=<0>;
    spidev@1 {
       spi-max-frequency = <5000000>;
        compatible = "rohm,dh2228fv";
        pl022,com-mode = <2>;
    }
};

Вы сможете читать и писать на устройство /dev/spidev0.0 с помощью простых cat > /dev/spidev0.0 и cat </dev/spidev0.0, но ioctl следует использовать для более сложных опций, например. реконфигурация скорости, смена полярности и полнодуплексная запись/чтение.

person Simson    schedule 27.09.2019