Jump to content
    

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 с браузера я могу скачать файл.


 

Edited by jenya7

Share this post


Link to post
Share on other sites

24 minutes ago, jenya7 said:

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

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

Share this post


Link to post
Share on other sites

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

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

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


cd /root/lg - OK

make        - OK

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

 

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

Edited by jenya7

Share this post


Link to post
Share on other sites

2 minutes ago, jenya7 said:

что то не так?

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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 но у них полная совместимость по пинам так что код должен работать.

Share this post


Link to post
Share on other sites

13 minutes ago, jenya7 said:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 библиотеку но не проверял ещё. в принципе она должна быть гораздо функциональней.

Share this post


Link to post
Share on other sites

10 minutes ago, jenya7 said:

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

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

Share this post


Link to post
Share on other sites

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

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

Edited by jenya7

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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

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

 

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...