Коллеги имею вопрос нубского характера. ) Есть 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 я их читал - очень интересно, но ни х..я не понял) Спасибо.
Придётся читать RTFM и писать свою библиотеку. У лоры слишком много параметров, чтобы вот так вот на авось заставить их работать.
не шарю в этих ваших ХАЛах и СТМах, но по идее, переделать ардуиновскую библиотеку под себя должно быть возможно - типа переписать функции вроде singleTransfer и digitalWrite под стмовские spi и управление ногами да и всё.
В данном случае переделывать или писать заново, как предлагал коллега выше ничего не надо. Библиотека (читай драйвер), ссылку на которую я привел, работает прекрасно. Она прекрасно общается с модулем и вообще написана довольно грамотно. Весь вопрос в правильной ИНИЦИАЛИЗАЦИИ модуля т.е. его радио-настройках. В библиотеке под AVR все запрятано внутрь, а тут нужно прописывать ручками, а я в этих радио настройках нихрена не смыслю. Те настройки что по дефолту дают очень плохую связь даже в пределах комнаты, что имхо не нормально. Все модули одинаковы, даже из одной партии и физическое подключение идентично.
запрятоно оно не особо глубоко 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(); можно тупо повторить ту же последовательность действий - по сути прописывания в определенные регистры определенных значений.
я читал. Но кроме TxPower я соответствий с моей инициализацией не нашел. в частности что такое LNA boost? что такое auto AGC? И что эти настройки дают? ХЗ. Гугл дает кучу инфы на английском и ссылки на мануал от Simtech
що такое LNA тоже не знаю, но очевидно что это нечто обитает в регистре 0x0C, при том в ардуине туда прописывается REG_LNA|0x03 то есть 4 бита меняются на 0х03, а остальные остаются по умолчанию, тогде как в стм туда прописывается полностью 0x23 в стм вообще гораздо больше настроек делается, может оно что-то не так настраивает из-за этого всего AGC вангую что это автоматик гейн контрол или типа того
еще заметил - в стм 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); короче наверно надо сравнивать эти библиотеки и смотреть что в стмовской делается не так как в ардуиновской и пробовать менять
и что еще надо? Или вы словариком пользоваться не умеете? (про знание английского и не спрашиваю) Вам надо взять даташит на чип и тупо посмотреть, что означают те регистры. которые конфигурирует либа на АВР А потом повторить этот конфиг на СТМ Ну или нанять для этого человека, который хотя бы умеет читать даташиты, если сами нет
КАРОЧЕ ТС! Самый главный совет! Выкинь АВР и переходи на СТМ! Судя по восприятию материала, с настрйками ЛОРА будешь разбираться всю жизнь. Тем паче, что не понимая, что такое ЛЧМ и расширение спектра, ты не настроишь никак, кроме методом ТЫКА, свои ЛОРА. Ну или выкинь их.