Кто-нить работал с радиомодулями SI4432?

Обсуждаем приемники, передатчики, радиомикрофоны, жучки, генераторы, ВЧ-усилители, антенны и прочее радиохозяйство
Ответить
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

Подскажите, уже больше 2х недель бьюсь с чипами si4432. Генерирую посылку вида как на скрине и пытаюсь принять модулем. Модуль вроде видит преамбулу, но не распознаёт байты синхронизации. Использую манчестер на скорости 1024bps. настраиваюсь конфигуратором в экселе с оф. сайта. Модуляция OOK, Manchester Mode is Enabled, Rb[kbps] 0,5 .
Что я делаю не так?
Вложения
Безымянный2.png
(32.02 КБ) 953 скачивания
Безымянный1.png
(9.13 КБ) 856 скачиваний
Безымянный.png
(19.83 КБ) 845 скачиваний
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Синхрослово для приемника у Вас сконфигурировано на 3 байта, я генерируете только 2, и то не те (?) Не понял чем генерируете такой сигнал? Лучше соберите передатчик на таком-же чипе. Тогда будут гарантированно согласованы все временные интервалы приемника и передатчика. Вообще, для конфигурации чипов советую использовать не спредшит, а систему WDS. Где в сгенерированном сигнале длина пакета?
Реклама
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

Синхрослово сконфигурировано на 1 байт, на байт 0х2D, сигнал генерирую на stm32 после чего передаю в эфир передатчиком http://ru.aliexpress.com/item/433Mhz-RF ... .76.v3XKd8
На таком же чипе генерировать не подходит под задачу. Длинна пакета, как и CRC не используется, формат пакета <PREAMBLE><SYNC><DATA>, где данных строго 16 байт (по настройкамм приемника)
Временные интервалы точные, логический анализатор воспринимает все адекватно, над сигналом сверху (в прикрепленном файле) распознанное анализатором, внизу те же данные но в эфире.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Судя по картинке выше используется дефолтнал настройка синхрослова, длина котороgo 2 байта 2D 2D, а у Вас в пакете передается 2D D4.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 9204
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

А зачем LSB... (Select LSB/MSB)... Я обычно делаю MSB. Не нужно ломать глаза, при прочтении кода))
Реклама
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

Написано же, Sync word 3, ниже в таблице Configure sync Word 3 Value 2D, одно там выбрано слово, для двух слов там будет настройка Sync word 3 & 2.
Подскажите если кто знает, где еще на форуме про SI4432 есть темы по этому вопросу. Боюсь тут меня не понимают...
Контактная информация:
Реклама
Друг Кота
Сообщения: 9204
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Вам же сказали...

Передатчик настроен так
Безымянный.png
(12.19 КБ) 804 скачивания
А Ваш Приёмник так
Безымянный2.png
(28.46 КБ) 596 скачиваний
Они друг друга не понимают... ))
:dont_know:
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

Приемник настроен на прием ТОЛЬКО первого синхрослова-0x2D , второе 0x2D это уже данные.
Вложения
Безымянный22.png
(10.26 КБ) 807 скачиваний
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Выложите сюда весь файл конфигурации.
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

Код: Выделить всё

void SI4432(void){
  SI4432_Write(0x1C, 0xD1);
SI4432_Write(0x1D, 0x3C);
SI4432_Write(0x1E, 0x02);
SI4432_Write(0x1F, 0x03);
SI4432_Write(0x20, 0x81);
SI4432_Write(0x21, 0x20);
SI4432_Write(0x22, 0x2A);
SI4432_Write(0x23, 0x8E);
SI4432_Write(0x24, 0x00);
SI4432_Write(0x25, 0x57);
SI4432_Write(0x2A, 0xFF);
SI4432_Write(0x2C, 0x1D);
SI4432_Write(0x2D, 0x03);
SI4432_Write(0x2E, 0x2A);
 
SI4432_Write(0x30, 0xA8);
SI4432_Write(0x32, 0x8C);
SI4432_Write(0x33, 0x08);
SI4432_Write(0x34, 0x04);
SI4432_Write(0x35, 0x22);
SI4432_Write(0x36, 0xA2);
SI4432_Write(0x37, 0x2D);
SI4432_Write(0x38, 0x00);
SI4432_Write(0x39, 0x00);
SI4432_Write(0x3A, 0x00);
SI4432_Write(0x3B, 0x00);
SI4432_Write(0x3C, 0x00);
SI4432_Write(0x3D, 0x00);
SI4432_Write(0x3E, 0x10);
SI4432_Write(0x3F, 0x00);
SI4432_Write(0x40, 0x00);
SI4432_Write(0x41, 0x00);
SI4432_Write(0x42, 0x00);
SI4432_Write(0x43, 0xFF);
SI4432_Write(0x44, 0xFF);
SI4432_Write(0x45, 0xFF);
SI4432_Write(0x46, 0xFF);
 
SI4432_Write(0x58, 0x80);
SI4432_Write(0x69, 0x60);
SI4432_Write(0x6E, 0x03);
SI4432_Write(0x6F, 0xFD);
 
SI4432_Write(0x70, 0x2A);
SI4432_Write(0x71, 0x21);
SI4432_Write(0x72, 0x50);
 
SI4432_Write(0x75, 0x53);
SI4432_Write(0x76, 0x62);
SI4432_Write(0x77, 0x00);

}

int main(void)
{
SI4432_Read(0x03);
  SI4432_Read(0x04);
  
  //set Crystal Oscillator Load Capacitance register
  SI4432_Write(0x09,0x7F);
  
  SI4432();
  
  SI4432_Write(0x06,(1<<6)|(1<<7));//interrupt
  SI4432_Write(0x05,(1<<4)|(1<<1));//interrupt
  
  
  SI4432_Write(0x07,0x05);//RX ON
}

как то так
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Ok, я сегодня целый день допоздна за рулем. Посмотрю завтра, если Роман не опередит.
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Посмотрел установки регистров согласно AN440, связанные с обработчиком пакетов. Мои замечания ниже. Существенные из них - длина преамбулы установлена на 16 бит и синхрослово другое, если только не изменили настройки из Вашего первого поста, а также регистр 0х75.
Установки радио-параметров не проверял, не знаю точно Ваших требований. Кстати, какая у Вас ревизия чипа приемника (см. AN457)? Посмотрите на Errata на чипы.

Мои рекомендации:
1. Отмените на время кодировку Манчестера и отладьте на первом этапе все без нее.
2. Все-таки сделайте временно передатчик на таком-же чипе и отладьте связь на нем. Тогда будете уверены, что приемник работает правильно и проблема в передатчике XD-FST.
3. Передатчик этот XD-FST - полное "Гэ". Как Вы проверяли "данные в эфире"? Если есть анализатор спектра, советую проверить частоту излучения передатчика. Не вносит-ли передатчик задержки при модуляции по пину DATA?

SI4432_Write(0x30, 0xA8); Почему не 0х80 (несушественно)?
SI4432_Write(0x32, 0x8C); Такие значения не специфицированы в ДШ
SI4432_Write(0x33, 0x08); ОК (фиксированная длина пакета, синхрослово = 1 байт)
SI4432_Write(0x34, 0x04); Длина преамбулы считается в нибблах. Должно быть 0х08 для 4-х байтов
SI4432_Write(0x35, 0x22); ОК
SI4432_Write(0x36, 0xA2); Слово синхронизации 0хА2? В диаграммах выше было 0х2D.
SI4432_Write(0x37, 0x2D); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x38, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x39, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x3A, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x3B, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x3C, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x3D, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x3E, 0x10); Фиксированная длина пакета = 16 байтов
SI4432_Write(0x3F, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x40, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x41, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x42, 0x00); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x43, 0xFF); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x44, 0xFF); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x45, 0xFF); Это устанавливать необязательно (дефолтное значение)
SI4432_Write(0x46, 0xFF); Это устанавливать необязательно (дефолтное значение)

SI4432_Write(0x58, 0x80); Такого регистра в документации нет
SI4432_Write(0x69, 0x60);
SI4432_Write(0x6E, 0x03); Это установка для передатчика
SI4432_Write(0x6F, 0xFD); Это установка для передатчика

SI4432_Write(0x70, 0x2A); ОК
SI4432_Write(0x71, 0x21); ОК
SI4432_Write(0x72, 0x50); Надеюсь на вычисления спредшита

SI4432_Write(0x75, 0x53); Странно, что бит hbsl не установлен. Уверены, что частота в спредшите задана правильно?
SI4432_Write(0x76, 0x62); Надеюсь на вычисления спредшита
SI4432_Write(0x77, 0x00); Надеюсь на вычисления спредшита
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

Учту ваши замечания и все перепроверю по рекомендациям. При отключенном манчестере как задать синхрослово? Оно же как я понял тоже им раскодируется? 0x2D это же после манчестера, или я что то путаю в алгоритмах функционирования 4432?
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Логика работы Si4432 в режиме приёма описана в секции 4.2.8 документа AN537. При разрешении обработки Манчестера в приемнике в регистре синхрослова должно быть прописано это слово после декодирования для правильного распознавания синхрослова приёмником, т.е. в Вашем случае 0х2D.

Вообще, если ещё не поздно, выберите лучше модуль на основе Si446x или соберите такой сами, как описано в моей статье. В этих чипах всё более логично и в целом лучше по всем параметрам.
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

SI4432_Write(0x75, 0x53); Странно, что бит hbsl не установлен. Уверены, что частота в спредшите задана правильно?
Так он и не установлен.
Синхрослово менял для пробы, в самих проектах оно как в посылке в первоначальном вложении.
Как Вы проверяли "данные в эфире"?

Настраиваю приемник на максимальную частоту данных (256kbps), отключаю манчестер и настраиваю выход gpio2, кажется, на вывод данных. На выходе получаю шум как от обычного радиоприемника. Включаю передачу и логическим анализатором одновременно смотрю что перед передатчиком и после приемника. Получаю то что во вложении, шум с интервалами во время передачи. Задержек нет, есть только небольшое смещение сигнала.
Наладил связь с отключенным манчестером, но с некоторыми доработками. Наверное я не правильно понимаю образование преамбулы и настройки скорости. Удалось принять пакет когда скорость стояла 2048bps а преамбула была 0xFF 0xFF 0xFF 0xFF
Преамбула вообще должна быть 0xFF или все же 0xAA? Если все же 0xFF, то как распознавать сигнал как во втором вложении? Там как я понял она именно 0xAA
Вложения
Безымянный_002.png
(11.79 КБ) 792 скачивания
Безымянный_001.png
(24.8 КБ) 734 скачивания
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

SI4432_Write(0x75, 0x53); установлен верно. Я по инерции думал у Вас диапазон 915 мгц, как у меня.

Преамбула в этой модели чипа всегда 010101... и начинается с 0. Так она формируется в передатчике и такая она ожидается приемником если бит D1 установлен в регистре 0х71 (Ваш случай). Таким образом, в передатчике она должна быть как 0хFF, тогда после манчестера она преобразуется в 010101. Или я не понял вопроса?
Родился
Сообщения: 8
Зарегистрирован: Ср мар 10, 2010 21:59:31

Сообщение ranthunt »

Удалось распознать пакет и с манчестером, собака порылась в преамбуле, правильная 0xFF а не 0xAA как я думал. Так же пришлось немного подкорректировать скорость передатчика.
В сигнале как во вложении в начале идет преамбула вида 11001100, она меня и смутила. Ser60, может подскажите как такой сигнал описать для чипа?
Вложения
Безымянный_002.png
(11.79 КБ) 704 скачивания
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Если имеете в виду использовать такую преамбулу, то с включённым PH я думаю, что никак. В AN537 явно сказано, что преамбула для этого чипа может быть только вида 010101. Есть, правда, опция ее инвертировать, тогда будет 101010. Однако, если отменить PH и делать всю обработку принятых данных в МК, то возможно и можно как-то использовать нестандартную прембулу. Моё мнение - использовать нестандартную не стоит, поскольку её цель синхронизировать выборки битов приёмника и передатчика. Тогда при преамбуле вида 010101 биты в ней меняются как раз с частотой bitrate передатчика. Поздравляю с успехом!
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

Сообщение russo_turisto »

Мне эта статейка помогла
https://m.habrahabr.ru/post/307836/
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пт дек 24, 2010 03:33:57
Откуда: Караганда КАЗАХСТАН

Сообщение un7prf »

Народ, подскажите как по простому настроить эти модули Si4432.
Нужно тупо включать/выключать насос на расстоянии 200м.
Или где найти похожее на форуме, жетательно на ПИКах.
Ответить

Вернуться в «Радиотехника: приемники, передатчики, антенны»