|
SI4432 "пробить" 2 стены |
|
|
|
Sep 10 2014, 12:20
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Здравствуйте,связь в зоне видимости между приемником и передатчиком присутствует(оба SI4432 B1). Есть проблема,как принять пакет с передатчика через две стены(цокольное помещение,2 стены общей тощиной ~45см,кирпич, расстояние между приемником и передатчиком ~10м). Настроено все на работу с 434МГц,передача на максимальной мощности(по измерению тока,очень похоже на заявленные 90мА), модуляция GFSK, 4,8kbps. На стороне приемника в спектре видно следующее( СДР 433 пакет -снято сдр приемником). Используется коаксиальная антенна.( Коаксиальная антенна). В приемнике при чтении статуса видно, что буфер приема не заполняется. Код инициализации чипа: CODE write(0x06, 0x00); // Disable all interrupts write(0x07, 0x01); // Set READY mode write(0x09, 0x7F); // Cap = 12.5pF write(0x0A, 0x05); // Clk output is 2MHz write(0x0B, 0xF4); // GPIO0 is for TX data output write(0x0C, 0xEF); // GPIO1 is RX data input write(0x0D, 0x00); // GPIO2 for MCLK output write(0x0E, 0x00); // GPIO port use default value write(0x0F, 0x70); // NO ADC used write(0x10, 0x00); // no ADC used write(0x12, 0x00); // No temp sensor used write(0x13, 0x00); // no temp sensor used write(0x70, 0x20); // No manchester code, no data whiting, data rate < 30Kbps write(0x1C, 0x1D); // IF filter bandwidth write(0x1D, 0x40); // AFC Loop //write(0x1E, 0x0A); // AFC timing write(0x20, 0xA1); // clock recovery write(0x21, 0x20); // clock recovery write(0x22, 0x4E); // clock recovery write(0x23, 0xA5); // clock recovery write(0x24, 0x00); // clock recovery timing write(0x25, 0x0A); // clock recovery timing write(0x2C, 0x00); write(0x2D, 0x00); write(0x2E, 0x00); write(0x6E, 0x27); // TX data rate 1 4,8kbit write(0x6F, 0x52); // TX data rate 0 write(0x30, 0x88); // Data access control 8c write(0x32, 0xFF); // Header control write(0x33, 0x42); // Header 3, 2, 1, 0 used for head length, fixed packet length, synchronize word length 3, 2, write(0x34, 64); // 64 nibble = 32 byte preamble write(0x35, 0x20); // 0x35 need to detect 20bit preamble write(0x36, 0x2D); // synchronize word write(0x37, 0xD4); write(0x38, 0x00); write(0x39, 0x00); write(0x3A, '*'); // set tx header 3 write(0x3B, 'E'); // set tx header 2 write(0x3C, 'W'); // set tx header 1 write(0x3D, 'S'); // set tx header 0 write(0x3E, PKTSIZE); // set packet length to PKTSIZE bytes (max size: 255 bytes) write(0x3F, '*'); // set rx header write(0x40, 'E'); write(0x41, 'W'); write(0x42, 'S'); write(0x43, 0x00); // check all bits write(0x44, 0x00); // Check all bits write(0x45, 0xFF); // check all bits write(0x46, 0xFF); // Check all bits write(0x56, 0x01); write(REGISTER_TX_POWER, 0x0F); // Tx power to max write(0x79, 0x00); // no frequency hopping write(0x7A, 0x00); // no frequency hopping write(0x71, 0x22); // GFSK, fd[8]=0, no invert for TX/RX data, FIFO mode, txclk-->gpio write(0x72, 0x48); // Frequency deviation setting to 45K=72*625 write(0x73, 0x00); // No frequency offset write(0x74, 0x00); // No frequency offset write(REGISTER_FREQUENCY_BAND_SELECT, 0x53); // frequency set to 434MHz write(REGISTER_NOMINAL_CARRIER_FREQ1, 0x64); // frequency set to 434MHz write(REGISTER_NOMINAL_CARRIER_FREQ2, 0x00); // frequency set to 434Mhz write(0x5A, 0x7F); write(0x59, 0x40); write(0x58, 0x80); write(REGISTER_AGC_OVERRIDE1 ,15); write(0x6A, 0x0B); write(0x68, 0x04); write(0x1F, 0x03); status = read(0x02);
Сообщение отредактировал evsx1 - Sep 10 2014, 13:13
|
|
|
|
|
Sep 11 2014, 08:48
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(alexf @ Sep 10 2014, 23:26)  А без стенки все работает с этими же настройками? До того как ждать статус "пакет принят" следовало бы посмотреть на статусы "преамбула получена", "код совпал". Мне лениво по коду смотреть настройки, но похоже очень большая девиация частоты. Для такой скорости лучше полосу поуже. в зоне прямой видимости бьет как минимум 7 метров,дальше не разносил.
|
|
|
|
|
Sep 11 2014, 13:09
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(Aner @ Sep 11 2014, 13:00)  Какое значение RSSI? Может так быть, что плохое согласование с антенной или антенна никакая. У меня без проблем Si4432 обеспечивает 30 метров с 4 стенами. Полоса уже чем у вас, индекс модуляции 2. С китайской антенной в зоне видимости RSSI -106, с коаксиальной 21,с проводком 9. Из соседнего помещения РССИ не читается: 0х00
|
|
|
|
|
Sep 11 2014, 21:10
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(Aner @ Sep 11 2014, 21:00)  в зоне видимости RSSI -106 ... Это сколько метров? Что-то оч мало. И это при максимальной мощности 18...20dBm( 100мВт)? мощность максимальна. Расстояние было примерно 4-5м
|
|
|
|
|
Sep 12 2014, 09:06
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(Aner @ Sep 12 2014, 01:54)  Посмотрел у себя на рассоянии 5 метров RSSI в пределах 180..190 единиц на коаксиальной антенне с обоих сторон. Это около -25dBm. У вас 106 получаем около -70dBm. ( Datasheet Figure31) Разница пирмерно в 45dBm, оч много; так что ищите у себя причину. Понимаю,что причина у меня, сколько не смотрел ни у кого подобных проблем не было,вот и хочется понять для начала,проблема софтварная(настройка SI4432) или железная. Смотрел потребляемый ток в момент передачи- примерно, 110мА вместе с работой контроллера,те передатчик похоже работает на максимуме. Вопрос надо ли делать специфические настройки приемника(девиацию уменьшил). Или все же проблема в корявой антенне
|
|
|
|
|
Sep 12 2014, 09:36
|

Гуру
     
Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463

|
1) Если есть чем смотреть, типа анализатора или сканера, посмотрите участок диапазона половину от вашей частоты 215...215 Мгц, может это у вас только вторая гармоника. 2) Если мощность отдается вся то смотрите цепи или разводку платы. Есть фото платы где чип с обеих сторон? 3) Антенна хоть и корявая но такой большой разницы не даст. Смотрите компоненты антенных цепей, обрывы, трещины и тп. 4) Пробуйте запрограммировать на передачу режим ООК на максимальной мощности и измерьте тем же вашим скопом вблизи и на разных рассояниях, если все ок, переходите на модуляции.
megajohn похоже не в теме чипа Si4432 Энергия одна и та же, но по разному распределена. В чипе полоса частот программируется привязаная к девиации. Про стабильность в AN все расписано, если была проблема она также на малых расстояниях проявлялась. Изменение полосы в малых пределах мало что даст заметного. AGC, AFC не даст многого увидеть. Кстати проверьте, работают ли эти системы в вашем чипе.
|
|
|
|
|
Sep 15 2014, 12:16
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(Aner @ Sep 12 2014, 16:58)  Похоже этот у вас модуль или его клон: http://www.dorji.com/docs/data/DRF4432F20.pdf1) Оч не любят эти модули флюсы особенно по вч, нужно мыть начисто. 2) пробуйте модуль не подключать к вашей плате в месте где вч антенное соединение. И попробуйте подключить вместо антенны 1/4 волновой штырь. У вас это будет прямой провод ~18 см длины. И посмотрите как изменится RSSI при этом. Спасибо,качественно отмыв от флюса, в пределах 2 метров мы получили RSSI в районе 150. Заметил интересную особенность,если передатчик выключить,то приемник все равно показывает уровень RSSI в районе 0x28. Откуда он берет это значение? Кроме того иногда проходят пакеты,которые заполняют FIFO одним и тем же значением 0xFE(0xBE).(при этом они проходят проверку статуса IntStatus2&&0x80,IntStatus2&&0x40,IntStatus1&&0x02). Тем не менее передатчик из соседней комнаты до сих пор не видим.
|
|
|
|
|
Sep 16 2014, 10:18
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(Aner @ Sep 15 2014, 16:44)  Этот уровень от нескольких причин может быть. Другой источник повышенного уровеня RSSi это широкий фильтр у приемника. У силабса на сайте есть калькулятор для этого чипа, проверьте ваши фильры по нему. Я брал из WDS3 Studio от Silabs GSM полностью отключен от питания.Можете поделиться своими значениями указанных регистров,с которыми у вас пробивает 30метров + 4 стены? CODE REGISTER_IF_FILTER_BANDWIDTH 0x1C REGISTER_AFC_LOOP_GEARSHIFT 0x1D REGISTER_AFC_TIMING_CONTROL 0x1E REGISTER_CLK_RCV_OVERSAMP_RATIO 0x20 REGISTER_CLOCK_RECOVERY_OFFSET1 0x21 REGISTER_CLOCK_RECOVERY_OFFSET2 0x22 REGISTER_CLOCK_RECOVERY_OFFSET3 0x23 REGISTER_CLOCK_RECOV_TIME_GAIN1 0x24 REGISTER_CLOCK_RECOV_TIME_GAIN0 0x25 REGISTER_TX_DATA_RATE1 0x6E REGISTER_TX_DATA_RATE0 0x6F REGISTER_MOD_MODE_CONTROL1 0x70 REGISTER_MOD_MODE_CONTROL2 0x71 REGISTER_FREQ_DEVIATION 0x72 0x69 0x2A
Сам я использовал собранную конфигурацию по даташиту самостоятельно(в начале топика) и из студии CODE write(0x1C, 0x1D); // IF filter bandwidth 1d write(0x1D, 0x40); // AFC Loop write(REGISTER_AFC_TIMING_CONTROL,0x0A); write(0x1F,0x03); //write(0x1E, 0x0A); // AFC timing write(0x20, 0xA1); // clock recovery write(0x21, 0x20); // clock recovery write(0x22, 0x4E); // clock recovery write(0x23, 0xA5); // clock recovery write(0x24, 0x00); // clock recovery timing write(0x25, 0x13); // clock recovery timing write(0x2A, 0x1E); write(REGISTER_TX_POWER, 0x1F); write(REGISTER_MOD_MODE_CONTROL1,0x2C); rite(0x69,60); write(REGISTER_FREQUENCY_BAND_SELECT, 0x53); // frequency set to 434MHz write(REGISTER_NOMINAL_CARRIER_FREQ1, 0x64); // frequency set to 434MHz write(REGISTER_NOMINAL_CARRIER_FREQ2, 0x00); // frequency set to 434Mhz
С обоими так и не взлетаю
|
|
|
|
|
Sep 16 2014, 20:00
|
Местный
  
Группа: Свой
Сообщений: 420
Регистрация: 22-12-04
Пользователь №: 1 608

|
Цитата(evsx1 @ Sep 16 2014, 08:02)  Проблему приема решил. Рад, что решили. Меня несколько дней не было, но хочу на всякий случай добавить по полосе пропускания. С одной стороны, чем уже полоса, тем точнее должна быть настройка, т.е. меньше разброс кварцев. На пальцах, если частота 443 МГц и кварцы 100 ppm (совсем дешевые), то в худшем случае будет така ошибка, что полосу придется делать сотни килогерц, и все равно молиться, чтобы работало. А если 10 ppm, что вполне доступно, то можно сделать девиацию и, соответственно, полосу приемника поуже. Тогда полезная мощность в приемнике будет та же, а мощность шума - меньще. Значит лучше с/ш. Как всегда за улучшение дальности надо платить скоростью передачи данных (тут не важно) и качеством кварцев.
|
|
|
|
|
Sep 17 2014, 06:43
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(alexf @ Sep 17 2014, 00:00)  Рад, что решили. Меня несколько дней не было, но хочу на всякий случай добавить по полосе пропускания.
Значит лучше с/ш. Как всегда за улучшение дальности надо платить скоростью передачи данных (тут не важно) и качеством кварцев. Спасибо. To Aner. Да,он подключен на GPIO0 и GPIO1 выводами 4 и 6. Я настраивал саму SI4432 как цифровой вход(с подтягом), на эти ноги. Сами выводы GPIO0,GPIO1 выведены так же на плате модуля, их я подключил к ножкам контроллера и управлял в обход микросхемы(только отслеживал уровень). А в теле передачи/приема, просто выставлял уровни на ножках контроллера.
Сообщение отредактировал evsx1 - Sep 17 2014, 06:44
|
|
|
|
|
Sep 17 2014, 09:05
|

Гуру
     
Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463

|
QUOTE (evsx1 @ Sep 17 2014, 09:43)  Спасибо.
To Aner. Да,он подключен на GPIO0 и GPIO1 выводами 4 и 6. Я настраивал саму SI4432 как цифровой вход(с подтягом), на эти ноги. Сами выводы GPIO0,GPIO1 выведены так же на плате модуля, их я подключил к ножкам контроллера и управлял в обход микросхемы(только отслеживал уровень). А в теле передачи/приема, просто выставлял уровни на ножках контроллера. Понятна ваша промашка. Это лишнее, управлять по этим ногам никак нельзя, поскольку они конфликтуют с выходами чипа SI4432. Эти выходы с модуля нужны для случаев контроля, т.е. входы в проц но не выходы, а также для синхронной коммутации если есть внешние коммутаторы для усилителей, фильтров и тп.
|
|
|
|
|
Sep 18 2014, 09:49
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586

|
Цитата(Aner @ Sep 17 2014, 13:05)  Понятна ваша промашка. Вам спасибо за посильную помощь. Заметка про флюс так же была очень полезной.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|