Перейти к содержанию
    

Совместимость с Orange Pi

Насколько совместима Orange Pi с Raspberry Pi? В частности на Raspberry Pi я пользовался LGPIO для SPI/UART/GPIO. Будет эта библиотека работать на Orange Pi?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/19/2022 at 1:12 PM, aaarrr said:

Вроде как она универсальная, а не RPi-specific. Так что должна работать.

на малинке (Debian) я устанавливал так

wget http://abyz.me.uk/lg/lg.zip
unzip lg.zip
cd lg
make
sudo make install

на Orange Pi (Ubuntu) ругается - не видит http://abyz.me.uk/lg/lg.zip файл. изменился репозиторий? в Windows с браузера я могу скачать файл.


 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, jenya7 said:

изменился репозиторий? в Windows с браузера я могу скачать файл.

Очевидно, не изменился, если на ПК доступен. А вот как настроена и работает сеть на OPi - вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/19/2022 at 1:52 PM, aaarrr said:

Очевидно, не изменился, если на ПК доступен. А вот как настроена и работает сеть на OPi - вопрос.

ок. скачал и распаковал вручную.


cd /root/lg - OK

make        - OK

sudo make install - тут ругается -  command not found - что то не так?

 

блин. открыл текстовый файл в либре офис а он какие то чары невидимые вставляет. всё нужно вводить вручную.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, jenya7 said:

что то не так?

Определенно чего-то не хватает, sudo, например.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/19/2022 at 1:57 PM, aaarrr said:

Определенно чего-то не хватает, sudo, например.

библиотека работает на апельсинке, по крайней мере SPI конфигурируется и получает дескриптор. правда не пишет в шилд расширения портов. буду копать дальше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/19/2022 at 2:49 PM, jenya7 said:

библиотека работает на апельсинке, по крайней мере SPI конфигурируется и получает дескриптор. правда не пишет в шилд расширения портов. буду копать дальше.

Не пойму почему не работает

#include  "io_board.h"
#include "mcp23s17.h"

static int spi_handle_1;  //CS0
static int spi_handle_2;  //CS1

int IO_BOARD_Setup()
{
    //open handle for each chip select
    spi_handle_1 = lgSpiOpen(0, 0, 4000000, 0);
    spi_handle_2 = lgSpiOpen(0, 0, 4000000, 0);

    IO_BOARD_PinConfig();

    return spi_handle_1;
}

void  IO_BOARD_PinConfig()
{
    uint8_t tx_data[3];
    uint8_t rx_data[3];

    tx_data [0] = static_cast<uint8_t>(CMD_WRITE);
    tx_data [1] = MCP23x17_IODIRA;
    tx_data [2] = 0; //clear bits for all outputs

    IO_BOARD_Xfer(spi_handle_1, reinterpret_cast<char *>(tx_data), reinterpret_cast<char *>(rx_data), 3);

    tx_data [1] = MCP23x17_IODIRB;

    IO_BOARD_Xfer(spi_handle_2, reinterpret_cast<char *>(tx_data), reinterpret_cast<char *>(rx_data), 3);
}

void IO_BOARD_Xfer(int spi_handle, char *tx_buf, char *rx_buf, int count)
{
    lgSpiXfer(spi_handle, tx_buf, rx_buf, count);
}

void  IO_BOARD_PortWrite(uint8_t chip, uint8_t port, uint8_t value)
{
    uint8_t tx_data[3];
    uint8_t rx_data[3];

    int spi_handle;

    if (chip == 1)
        spi_handle = spi_handle_1;
    else if (chip == 2)
        spi_handle = spi_handle_2;
    else
        return;

    tx_data [0] = static_cast<uint8_t>(CMD_WRITE);
    tx_data [1] = port;
    tx_data [2] = value;

    IO_BOARD_Xfer(spi_handle, reinterpret_cast<char *>(tx_data), reinterpret_cast<char *>(rx_data), 3);
}

проверяю

 

uint32_t COMMANDS::Out(uint32_t argc, char** args)
{
    if (argc < 1)
        return MSG_MIS_ARG;

    char *subcom = ToLower(args[1]);

    if (strcmp (subcom,"set") == 0)
    {
        IO_BOARD_Setup();
    }
    else if (strcmp (subcom,"write") == 0)
    {
        if (argc < 3)
            return MSG_MIS_ARG;

        int ival = atoi(args[2]);
        uint8_t chip = static_cast<uint8_t>(ival);

        ival = atoi(args[3]);
        uint8_t val = static_cast<uint8_t>(ival);

        IO_BOARD_PortWrite(chip, MCP23x17_GPIOA, val);
    }

    return MSG_OK;
}

На малинке этот код работает, на апельсинке нет. Ни там ни там я не конфигурирую пины, полагаю они прописаны в каком нибудь dtb но у них полная совместимость по пинам так что код должен работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, jenya7 said:

полагаю они прописаны в каком нибудь dtb

Могли и "забыть". Да и результаты вызовов стоит проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужен совет гуру - обсуждаемая библиотека и bcm2835.... какая получше будет для малинки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/20/2022 at 8:12 AM, aaarrr said:

Могли и "забыть". Да и результаты вызовов стоит проверить.

не поленился достал скоп - не генерируется клок при вызове.

смотрю ls -l /dev

вижу spidev0.0

в файле armbianEnv.txt

overlays=spi-spidev

param_spidev_spi_bus=0

вроде всё честно

 

 

On 9/20/2022 at 8:32 AM, Pasa said:

Нужен совет гуру - обсуждаемая библиотека и bcm2835.... какая получше будет для малинки?

обсуждаемая библиотека работает на малинке 100%. проверенно. я подключил bcm2835 библиотеку но не проверял ещё. в принципе она должна быть гораздо функциональней.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, jenya7 said:

она должна быть гораздо функциональней.

эээээ.... bcm2835 более?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/20/2022 at 8:48 AM, Pasa said:

эээээ.... bcm2835 более?

для сравнения настройка с bcm2835 

if (!bcm2835_init())
          return -1;


    if (!bcm2835_spi_begin())
        return -1;

    bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);      // The default
    bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);                   // The default
    bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536); // The default
    bcm2835_spi_chipSelect(BCM2835_SPI_CS0);                      // The default
    bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);      // the default

кроме того библиотека даёт доступ ко всей периферии, таймерам например.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/20/2022 at 9:14 AM, Pasa said:

значит буду ориентироваться на bcm2835

 

я думаю это правильное решение

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...