|
SX127x LoRa |
|
|
|
Dec 30 2014, 13:51
|
Группа: Участник
Сообщений: 11
Регистрация: 30-12-14
Пользователь №: 84 373

|
Странно ведет себя в режиме LoRa при приеме трансивер SX1278. Примерно каждые 100 мс происходит прерывание как будто принят сигнал, хотя я ничего не передаю. В результате чтения буфера, показывает что принято кол-во байт указанное в параметре RegPayloadLength (адрес 0x22). Читаешь принятые данные, там "каша". Пытаюсь передать свой сигнал (16 байт), передача идет (частотомер показывает наличие ожидаемой несущей). Приема ожидаемых данных нет. Что неправильно делаю? Аппаратный подсчет CRC отключен.
Данные загруженные в трансивер ; 0 1 2 3 4 5 6 7 8 9 A B С D E F .byte 0x00,0x88,0x00,0x00,0x00,0x00,F_U, F_H ,F_L, 0xFF,0x0c,0x2b,0x23,0x00,0x80,0x00 ; 0x0u .byte 0x00,0xbf,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x69,0x90,0x01 ; 0x1u .byte 0x00,0x20,16 ,22 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 0x2u .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 0x3u .byte 0x00,0x00,0x00 ; 0x4u (40-42)
Сообщение отредактировал R_vlad - Dec 30 2014, 13:54
|
|
|
|
|
 |
Ответов
|
Jan 13 2015, 06:52
|
Группа: Участник
Сообщений: 11
Регистрация: 30-12-14
Пользователь №: 84 373

|
Что-то совсем запутался с этой Лорой. Хотя вроде не 1-й трансивер осваиваю. Может кто подскажет логику работы прерываний. В регистре RegIrqFlagsMask включаются прерывания которые необходимо отслеживать, установкой соотв. флагов =1? В регистре RegIrqFlags проверяем наличие разрешенных событий?
Пытаюсь ловить флаг RxDone. Наблюдаю следующую картину, если RegIrqFlagsMask =0 (все флаги сброшены), то происходит прерывание RxDone с минимальным ожидаемым периодом приема сообщений (как будто в эфире присутствует какой то полезный сигнал - невероятное событие).
Если установить в RegIrqFlagsMask флаг RxDoneMask=1, то прерывание RxDone не производится, даже если передаю сообщение со 2-й платы. Сообщение, вернее "несущая", в эфире есть, контролирую по частотомеру.
При этом наблюдаю в регистре RegModemStat флаг "RX on-going" =1. Но вообще этот флаг всегда почему то =1. Может быть он инверсный? Помогите понять что не так.
Сообщение отредактировал R_vlad - Jan 13 2015, 06:57
|
|
|
|
|
Jan 13 2015, 08:00
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 6-12-07
Из: Рига, Латвия
Пользователь №: 33 036

|
Цитата(R_vlad @ Jan 13 2015, 09:52)  Что-то совсем запутался с этой Лорой. Хотя вроде не 1-й трансивер осваиваю. Может кто подскажет логику работы прерываний. В регистре RegIrqFlagsMask включаются прерывания которые необходимо отслеживать, установкой соотв. флагов =1? В регистре RegIrqFlags проверяем наличие разрешенных событий? "1" в маске маскирует запрос на соответствующее прерывание. В регистрах описывающих поведение DIO, необходимо выбрать источник ожидаемого прерывания. Цитата(R_vlad @ Jan 13 2015, 09:52)  Пытаюсь ловить флаг RxDone. Наблюдаю следующую картину, если RegIrqFlagsMask =0 (все флаги сброшены), то происходит прерывание RxDone с минимальным ожидаемым периодом приема сообщений (как будто в эфире присутствует какой то полезный сигнал - невероятное событие). RXDone появляется по завершению приема пакета. Для удобства, можно читать регистр RegIrqFlags, где по битам PayloadCrcError и ValidHeader можно судить о качестве приема пакета. Следует обратить внимание на бит RxTimeout, сообщающий о ошибке ожидания приема всего пакета, всех его полей. После взведения этого флага, приемник уходит в режим STBY. Потому необходимо постоянно контролировать состояние регистра RegOpMode. У меня отдельный процесс периодично, раз в 50..100мс "пулит" этот регистр и толкает модем в режим приема. Цитата(R_vlad @ Jan 13 2015, 09:52)  Если установить в RegIrqFlagsMask флаг RxDoneMask=1, то прерывание RxDone не производится, даже если передаю сообщение со 2-й платы. Сообщение, вернее "несущая", в эфире есть, контролирую по частотомеру. Естественно, прерывание замаскировано. Цитата(R_vlad @ Jan 13 2015, 09:52)  При этом наблюдаю в регистре RegModemStat флаг "RX on-going" =1. Но вообще этот флаг всегда почему то =1. Может быть он инверсный? Помогите понять что не так. Надо очень внимательно разобраться с загружаемой конфигурацией. Там много тонкостей. А так, модем в режиме LoRa, великолепно работает
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|