Lora (sx1278) нуба вопрос :))

Тема в разделе "Проводная и беспроводная связь", создана пользователем RogerRU, 20 окт 2021.

  1. RogerRU

    RogerRU Нерд

    Коллеги имею вопрос нубского характера. :))
    Есть 3 проекта: 2 на AVR с популярной библиотекой LoRa.h и один на STM32L031 с этой библиотекой под HAL
    подключение и там и там физически идентично, читай стандартно.
    Говорю сразу, я вот именно в радио полный нуб т.е. дальше понятия 433MHz для меня темный лес.
    Короче суть вопроса:
    проекты на AVR прекрасно передают пакеты без потерь и вопросов, а вот от STM пакеты приходят через раз и с потерями. (принимаю AVR проектом)
    В STM есть строка инициализации по умолчанию (в AVR кроме частоты в ините ничего нет)
    SX1278_init(&SX1278, 434000000, SX1278_POWER_20DBM, SX1278_LORA_SF_7,
    SX1278_LORA_BW_125KHZ, SX1278_LORA_CR_4_5, SX1278_LORA_CRC_DIS, 10);
    Как бы параметры все "говорящие", но я в них ни хрена не смыслю
    Те кто в теме прошу дать советы что не так. (прошу не отсылать меня RTFM я их читал - очень интересно, но ни х..я не понял)

    Спасибо.
     
    Последнее редактирование: 20 окт 2021
  2. parovoZZ

    parovoZZ Гуру

    Придётся читать RTFM и писать свою библиотеку. У лоры слишком много параметров, чтобы вот так вот на авось заставить их работать.
     
  3. akl

    akl Гуру

    не шарю в этих ваших ХАЛах и СТМах, но по идее, переделать ардуиновскую библиотеку под себя должно быть возможно - типа переписать функции вроде singleTransfer и digitalWrite под стмовские spi и управление ногами да и всё.
     
  4. RogerRU

    RogerRU Нерд

    В данном случае переделывать или писать заново, как предлагал коллега выше ничего не надо. Библиотека (читай драйвер), ссылку на которую я привел, работает прекрасно. Она прекрасно общается с модулем и вообще написана довольно грамотно. Весь вопрос в правильной ИНИЦИАЛИЗАЦИИ модуля т.е. его радио-настройках. В библиотеке под AVR все запрятано внутрь, а тут нужно прописывать ручками, а я в этих радио настройках нихрена не смыслю. Те настройки что по дефолту дают очень плохую связь даже в пределах комнаты, что имхо не нормально.
    Все модули одинаковы, даже из одной партии и физическое подключение идентично.
     
  5. akl

    akl Гуру

    запрятоно оно не особо глубоко
    https://github.com/sandeepmistry/arduino-LoRa/blob/master/src/LoRa.cpp
    Код (C++):
    // put in sleep mode
      sleep();

      // set frequency
      setFrequency(frequency);

      // set base addresses
      writeRegister(REG_FIFO_TX_BASE_ADDR, 0);
      writeRegister(REG_FIFO_RX_BASE_ADDR, 0);

      // set LNA boost
      writeRegister(REG_LNA, readRegister(REG_LNA) | 0x03);

      // set auto AGC
      writeRegister(REG_MODEM_CONFIG_3, 0x04);

      // set output power to 17 dBm
      setTxPower(17);

      // put in standby mode
    idle();
    можно тупо повторить ту же последовательность действий - по сути прописывания в определенные регистры определенных значений.
     
  6. RogerRU

    RogerRU Нерд

    я читал. Но кроме TxPower я соответствий с моей инициализацией не нашел.
    в частности что такое LNA boost? что такое auto AGC? И что эти настройки дают? ХЗ.
    Гугл дает кучу инфы на английском и ссылки на мануал от Simtech
     
  7. akl

    akl Гуру

    що такое LNA тоже не знаю, но очевидно что это нечто обитает в регистре 0x0C, при том в ардуине туда прописывается REG_LNA|0x03 то есть 4 бита меняются на 0х03, а остальные остаются по умолчанию, тогде как в стм туда прописывается полностью 0x23

    в стм вообще гораздо больше настроек делается, может оно что-то не так настраивает из-за этого всего

    AGC вангую что это автоматик гейн контрол или типа того
     
  8. akl

    akl Гуру

    еще заметил - в стм
    SX1278_SPIWrite(module, LR_RegOcp, 0x0B); //RegOcp,Close Ocp

    а в ардуине там некая функция
    Код (C++):
    void LoRaClass::setOCP(uint8_t mA)
    {
      uint8_t ocpTrim = 27;

      if (mA <= 120) {
        ocpTrim = (mA - 45) / 5;
      } else if (mA <=240) {
        ocpTrim = (mA + 30) / 10;
      }

      writeRegister(REG_OCP, 0x20 | (0x1F & ocpTrim));
    }
    которая в зависимости от настроек TxPower прописывается либо setOCP(100); либо setOCP(140);


    короче наверно надо сравнивать эти библиотеки и смотреть что в стмовской делается не так как в ардуиновской и пробовать менять
     
  9. b707

    b707 Гуру

    и что еще надо? Или вы словариком пользоваться не умеете? (про знание английского и не спрашиваю)
    Вам надо взять даташит на чип и тупо посмотреть, что означают те регистры. которые конфигурирует либа на АВР
    А потом повторить этот конфиг на СТМ

    Ну или нанять для этого человека, который хотя бы умеет читать даташиты, если сами нет
     
    parovoZZ нравится это.
  10. parovoZZ

    parovoZZ Гуру

    КАРОЧЕ ТС! Самый главный совет! Выкинь АВР и переходи на СТМ! Судя по восприятию материала, с настрйками ЛОРА будешь разбираться всю жизнь.
    Тем паче, что не понимая, что такое ЛЧМ и расширение спектра, ты не настроишь никак, кроме методом ТЫКА, свои ЛОРА. Ну или выкинь их.