Перейти к содержанию
    

Si4463 бьются пакеты на 1000 kbps

Использую Si4463 с настройками:

модуляция: 4FSK

скорость 500 ksps (1000 kbps)

девиация частоты (inner) 83,333 кГц

полоса пропускания - Auto (850 МГц максимум)

длина пакета 8192 байта

преамбула при передаче  48 символов

порог срабатывания преамбулы в приёмнике 12 символов

синхрослово 4 байта: 0x5A0FBE66

включено отбеливание данных (Whitening).

мощность передатчика 10 мВт (10 dBm)

 

Проблема: очень много ошибочных пакетов, когда ходишь с приёмником в руках по комнатам помещения.

 

Сделал запись (лог) пакетов и дальнейший их анализ.

 

В ходе анализа установлено (3 минуты ходьбы по помещению):

1. Пакеты, принятые без ошибок - 53%

2. Пакеты, принятые с ошибочными 0..128 байт - 87%

3. Пакеты, принятые с ошибочными 0..256 байт - 92%

4. Пакеты, принятые с ошибочными 0..2048 байт - 99%

5. Ошибочный байт содержит один повреждённый бит либо в старшей либо в младшей тетраде.

 

Вопросы:

1. Какие корректирующие коды здесь  могут быть полезны?  (Голей, Хемминг, BCH, RS, ... ?)

2. Какими настройками в WDS можно улучшить приём паектов? (или какими настройками регистров)

 

Лог принятых пакетов приложил ниже (чёрные пикселы - ошибочные байты. 1 строка - пакет  8192 байт).

log.png

 

 

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сократить размер пакета возможно? 

Термин отбеливание это не про randomizer?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас точно девиация 83 МГц? Есть ограничения на скорость перестройки PLL, тем более на таких высоких скоростях передачи. На 9 стр. описания есть параметр Modulation deviation range = 1.5 MHz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, V_G said:

У вас точно девиация 83 МГц? Есть ограничения на скорость перестройки PLL, тем более на таких высоких скоростях передачи. На 9 стр. описания есть параметр Modulation deviation range = 1.5 MHz

Ошибся.  В кГц.  Поправил нуль-пост.

 

43 minutes ago, GenaSPB said:

Сократить размер пакета возможно? 

Термин отбеливание это не про randomizer?

Я наоборот сделал пакет ровно столько, чтобы в него вместить один сжатый фрейм полностью.

Отбеливание - это Data Whitening - для де-корелляции данных (размазать спектр) - небольшое скремблирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже, вы работаете на пределе скоростных возможностей данной ИС. Есть возможность посмотреть спектр передатчика? Насколько он укладывается в полосу приемника 850 кГц?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, V_G said:

Похоже, вы работаете на пределе скоростных возможностей данной ИС. Есть возможность посмотреть спектр передатчика? Насколько он укладывается в полосу приемника 850 кГц?

К сожалению, спектр не могу посмотреть из-за отсутствия периборов.

Если inner deviation = 83,333 кГц, значит Outer = 250 кГц (в 3 раза больше).  Полоса: 500 ksps + 2*Outer = 1000 kHz > 850 kHz - больше чем 850 кГц полоса не ставится.

Однако, в даташите заявлен режим 4GFSK со скоростью 500 ksps и девиацией 83,333 кГц - даётся чувствительность. Значит, режим имеет место быть.

 

Меня сейчас интересует какой корректирующий код можно применить?  Моделирование показывает, что при исправлении двух бит в одном байте, число успешно исправленных пакетов возрастёт до 90%.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо смотреть, что даст больший эффект: код, исправляющий ошибки на 500 ksps (со снижением эффективной скорости за счет введения избыточности), либо снижение реальной скорости, например, до 400 ksps. По крайней мере, со вторым можно быстро проэкспериментировать, если ИС позволяет установить такую скорость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавил RS(255,239), исправляющий 8 ошибок.  Фрейм разделил на 32 части по 255 байт каждая. Число байт на полезные данные уменьшилось с 8192 до 32*239=7648

Число пакетов, которые успешно исправились + без ошибок - увеличилось до 82% (без RS было 53%).

 

Есть ли длинные коды RS, например RS(8191,7935), исправляющие 128/256  ошибок?  Делить на куски не очень удобно + ограничивает локацию битых данных в пределах одного куска 255 байт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Длинные коды RS не в этом чипе. А зачем вам 4FSK?  ... в вашем варианте с помехами он хуже чем FSK, в плане битых пакетов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, Aner said:

 А зачем вам 4FSK?  ... в вашем варианте с помехами он хуже чем FSK, в плане битых пакетов.

Скорость 1000 kbps только при 4FSK.

1000 kbps нужно, чтобы успевать передавать поток сжатых фреймов видео 320x240 15 FPS (H264) приемлемого качества + четыре фрейма сжатого аудио (24 кбит/c)

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у Вас протокол однонаправленный, без квитирования, можно рассмотреть использование усилителя (хотя это вопрос нарушения требований инспекции эл.связи и стандарта). Передавать с 10 мВт по эфиру скоростной поток длинными пакетами, на расстояние икс, в условиях постоянных/внезапных помех. . . Кроме снижения скорости, избыточного кодирования + вида модуляции - только увеличение мощности. Смотря что у Вас в приоритете - решение прикладной задачи или научные цели.

Google (пока не забанили) "Усилитель мощности BLT53A с si4463"  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, k155la3 said:

Если у Вас протокол однонаправленный, без квитирования, можно рассмотреть использование усилителя (хотя это вопрос нарушения требований инспекции эл.связи и стандарта). Передавать с 10 мВт по эфиру скоростной поток длинными пакетами, на расстояние икс, в условиях постоянных/внезапных помех. . . Кроме снижения скорости, избыточного кодирования + вида модуляции - только увеличение мощности. Смотря что у Вас в приоритете - решение прикладной задачи или научные цели.

Проблема не  в недостатке мощности.  Если приемник и передатчик в одной комнате, то битые пакеты возникают в зависимости от положения приемника или передатчика.  Может переотражение?

 

19 minutes ago, k155la3 said:

Google (пока не забанили) "Усилитель мощности BLT53A с si4463"  

Такой будет лучше:

image.thumb.jpeg.918aa605ba8613ad48c4af2aa75939b8.jpeg

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, repstosw сказал:

Проблема не  в недостатке мощности.  Если приемник и передатчик в одной комнате, то битые пакеты возникают в зависимости от положения приемника или передатчика.  Может переотражение ?

При "пользовании" RFM69 наблюдалось, что если 2 трансивера находились на очень близком расстоянии (в пределах метра), возникали сбои при приеме. Переотражение в одной комнате - сомневаюсь, хотя оно имеет место быть. А вот если в соседней, особенно если стена жб или много металлических отражающих-экранирующих поверхностей - даже "очень и очень", интерференционные "ямы" наблюдаются даже для вещательного FM. В более ВЧ диапазоне это будет более явно.

Неплохо было бы промониторить взаимосвязь уровня сигнала RSS и уровня ошибок в разных точках приема.

Если зона работы постоянная, можно протянуть рч-кабель - пассивный ретранслятор. Есть и спец-кабели для этих целей. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал перемежение. Число битых пакетов упало до 7%.

K=239

N=255

L=32

image.png.0de40a23242b06cc018d7f2382a535a1.png

 

Передатчик:

 //Interleaver
 for(int j=0;j<L;j++)for(int i=0;i<K;i++)RS[j][i]=Frame[(L*i)+j];

 //RS Encoder
 for(int j=0;j<L;j++)encode_data(&RS[j][0],K,&RS[j][0]);

 //Former
 for(int i=0;i<N;i++)for(int j=0;j<32;j++)Frame[(L*i)+j]=RS[j][i];
                                                          
 //TX
 Si4463TX(Frame,sizeof(Frame));

 

Приёмник:

//RX
Si4463RX(RXBuffer);

//...

//De-Former
for(int i=0;i<N;i++)for(int j=0;j<L;j++)RS[j][i]=RXBuffer[(L*i)+j];

  for(int j=0;j<L;j++)
  {
   //RS Decoder
   decode_data(&RS[j][0],N);

   if(check_syndrome()!=0)
   {

    if(correct_errors_erasures(&RS[j][0],N)==FALSE)
    {
    // bad++;
    }
    else OK=1;
   }
   // else bad++;
  }

  //De-Interleaver
  for(int j=0;j<L;j++)for(int i=0;i<K;i++)Frame[(L*i)+j]=RS[j][i];

 

Подсчёт и запись статистики:

  if(OK==1)
  {
   if(*((u64*)&Frame[F-CRC64])==crc64(Frame,F-CRC64)) //CRC64 OK
   {
   }
   else bad++;
  }
  OK=0;

//---

nf++;
  if(nf==15*60*3)
  {
   DMA_Stop();

   FatFs_Init();

   FIL *f=Fopen("log.raw","wb");
   Fwrite((void*)&bad,1,sizeof(bad),f);
   Fclose(f);

   while(1)
   {
    ToggleLED();
    DelayMS(20);
   }

  }

 }

 

Что ещё можно придумать?  Может CIRC попробовать - когда RS() по строкам и столбцам.

 

42 minutes ago, k155la3 said:

Переотражение в одной комнате - сомневаюсь, хотя оно имеет место быть. А вот если в соседней, особенно если стена жб или много металлических отражающих-экранирующих поверхностей - даже "очень и очень", интерференционные "ямы" наблюдаются даже для вещательного FM. В более ВЧ диапазоне это будет более явно.

Так и есть: много стен из железо-бетона.

Бытовой радиовещательный приёмник также в некоторых местах не работает (+/- пол-длины волны).

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На графическом логе видно довольно регулярные "волны". Неплохо было-бы послушать что там в эфире творится в режиме тишины.

Попробуйте сдвинуться по частоте. Если помеха, то ее частота (после демодуляции) может накладываться на полезный сигнал в различных соотношениях, как частоты так и амплитуды.

Другой вариант - разместите комплекты приемника и передатчика на допустимо-близком расстоянии (метр-2-3) и тестируйте на ошибки при последовательном снижении мощности TX .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...