реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> SI4432 ошибка CRC, При приёме любых пакетов выдает ошибку CRC
YuryD
сообщение Nov 6 2017, 15:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-08-05
Пользователь №: 7 322



Здравствуйте.
Нужно связать два устройства по беспроводному каналу через SI4432. Вроде всё правильно настроил, передаю пакеты с разной длиной (указываю вручную). Приемник принимает, но с каждым пакетом устанавливается бит icrcerror (CRC Error). На обеих сторона тип CRC одинаковый. Мощность выставлена максимальная, платы лежат рядом.
Даташит курил, вроде всё правильно. Подскажите, пожалуйста, куда вообще копать, какая инфа могла бы пролить свет на проблему?
Спасибо.
Go to the top of the page
 
+Quote Post
Jurenja
сообщение Nov 6 2017, 17:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 456
Регистрация: 7-06-07
Из: Минск
Пользователь №: 28 262



Цитата(YuryD @ Nov 6 2017, 18:48) *
1. Мощность выставлена максимальная.
2. платы лежат рядом.
Сочетание этих двух факторов будет вызывать проблему - перегрузку входных каскадов приемника.
Параметры приёмника гарантируются только при входной мощности не более чем +5 дБм.
А выходная мощность передатчика должна быть не менее чем +20 дБм.


--------------------
Человек учится говорить два года, а молчать - всю жизнь
Go to the top of the page
 
+Quote Post
YuryD
сообщение Nov 6 2017, 18:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-08-05
Пользователь №: 7 322



Я пробовал уменьшать мощность до –1 dBм (установка 000 в регистр 0х6D), результат тот же.
Go to the top of the page
 
+Quote Post
DASM
сообщение Nov 6 2017, 22:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 611
Регистрация: 28-05-05
Пользователь №: 5 493



Пакет то смотрели? Он реально битый или нет?
Go to the top of the page
 
+Quote Post
Corner
сообщение Nov 8 2017, 09:19
Сообщение #5


Профессионал
*****

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



Пока Вы на максимальной мощности работали, могли и припалить приемные цепи.
А Вы их КИТ используете или самопал какой наваяли?
Go to the top of the page
 
+Quote Post
YuryD
сообщение Nov 8 2017, 14:26
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-08-05
Пользователь №: 7 322



Я использую готовые модули. Фото в приложении. Вряд ли я что-то подпалил, т.к. начал испытывать с мощности -1дБм. При минимальной и максимальной мощности результат одинаковый - ошибка CRC. Посмотреть реально ли битый пакет пока не могу, т.к. буду возле "пациента" в четверг. Пока пытаюсь понять, что я мог не так сделать.
Я так понимаю, что CRC модуль формирует на передающей стороне, записывает в конец пакета. А на приёмной стороне другой сам модуль пересчитывает CRC и сравнивает с принятым. Т.е., по сути, я никак не участвую в этом процессе, просто выставляю "включение CRC" и "тип CRC", одинаковые на обоих сторонах. Что тут можно сделать не так?....
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Nov 9 2017, 15:05
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Цитата(YuryD @ Nov 8 2017, 17:26) *
Что тут можно сделать не так?....

Форматы пакетов на передающей и приёмной стороне? Может, он считает CRC правильно, но сравнивает не с тем полем/не по тому смещению?
Go to the top of the page
 
+Quote Post
YuryD
сообщение Nov 9 2017, 17:34
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-08-05
Пользователь №: 7 322



А как я в этом процессе участвую? Я включаю CRC, вид CRC и всё. Дальше он сам всё делает. Он сам знает куда класть CRC и откуда его читать. Я же ни где это не настраиваю.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Nov 10 2017, 08:15
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Цитата(YuryD @ Nov 9 2017, 20:34) *
А как я в этом процессе участвую? Я включаю CRC, вид CRC и всё. Дальше он сам всё делает. Он сам знает куда класть CRC и откуда его читать. Я же ни где это не настраиваю.

Эээ... Вы разработчик или наладчик? Если разработчик, то такие вопросы выглядят ересью. Вникните в суть, ознакомьтесь с механизмами, отвечающими за формирование пакета, сличите переданный и принятый пакет, в конце концов! Или Вы думаете, всё просто обязано работать только по факту того, что Вы так хотите?..
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 10 2017, 10:54
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 101
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Какой размер пакета ? Какой размер буфера трансивера ?
Как считается CRC - трансивером или иначе ? Если трансивером, то размер пакета должен быть не более размера евойного буфера.
(см. док, для Ti CC1101 насколько помню, не более 64 байта, кажется)
Я с Si4432 только начал разбираться, но это общее для подобных девайсов.
Курить даташит.




Цитата(YuryD @ Nov 9 2017, 21:34) *
А как я в этом процессе участвую? Я включаю CRC, вид CRC и всё. Дальше он сам всё делает. Он сам знает куда класть CRC и откуда его читать. Я же ни где это не настраиваю.

Может быть 2 режима, проверьте по DS. (эта инф. по трансиверам Ti, для силабс может быть также или похоже)
Для маленьких пакетов, которые полностью ложаться в буфер трансивера, включая окноечную CRC, он (трансивер)
может быть настроен на их "самопроверку" и соответственно выставить флаг пакет битый или нет.
Для больших пакетов (больше размера буфера) прием-передача организуются по другому. Как я еще не раскуривал.
Go to the top of the page
 
+Quote Post
YuryD
сообщение Nov 11 2017, 13:20
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-08-05
Пользователь №: 7 322



Я проверил, что приемник принимает. Принимается мусор, но всегда то же самое количество байт, что отправлено. Т.е. ошибка контрольной суммы не врёт, в принятом пакете действительно не те данные, что передавались, но, что примечательно, количество принятых байт всегда (я пробовал несколько вариантов) совпадает с длиной передаваемого пакета.
Может быть проблема в частотных настройках модулей? Функциональные настройки я проверил, вроде всё по даташиту, но я не особо разбираюсь в ВЧ, поэтому взял RF настройки из первого попавшегося в И-нете примера.
Может кто-то поделится ссылкой или примером корректной настройки модуля на частоту 434МГц?
Спасибо.
Go to the top of the page
 
+Quote Post
DASM
сообщение Nov 11 2017, 14:57
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 611
Регистрация: 28-05-05
Пользователь №: 5 493



Вы там whitening не включили случайно?
Или манчестер какой нибудь..
А количество принятых байт не показатель в случае fixed packet length, он примет сколько задано и все.
Но сам факт приема говорит о том, что синхрослово принимается верно, а это уже хорошо
Возьмите второй попавшийся пример, лучше от производителя. А конфиг делайте сами через WDS
Go to the top of the page
 
+Quote Post
YuryD
сообщение Nov 11 2017, 15:15
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-08-05
Пользователь №: 7 322



Цитата(DASM @ Nov 11 2017, 16:57) *
Вы там whitening не включили случайно?
Или манчестер какой нибудь..

Не ничего такого не включено.
Цитата(DASM @ Nov 11 2017, 16:57) *
А количество принятых байт не показатель в случае fixed packet length, он примет сколько задано и все.

У меня плавающая длина пакета. Я меняю на передающей стороне количество передаваемых байт, и на приемной стороне принимается аккурат столько же. Но при этом выставляется флаг error CRC. Если я выключаю CRC, то принимается чётко переданное количество байт, но там мусор, вообще ни один байт не совпадает. От приема к приему это содержимое меняется, т.е. явно шум какой-то.
Чертовщина какая-то!....

Сообщение отредактировал YuryD - Nov 11 2017, 15:19
Go to the top of the page
 
+Quote Post
DASM
сообщение Nov 11 2017, 15:32
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 611
Регистрация: 28-05-05
Пользователь №: 5 493



Если принимаете то же самое количество байт каждый раз, то первый байт точно верен, в нем длина и передается. Похоже что в эфир передатчик излучает обрезок от пакета. Такое может быть, например, если запустить tx, а далее по коду перевести чип в идле. Преамбулу, синхру и первый байт.. несколько уйдут, а далее в эфире тишина. Симптомы совпадут. Посмотрите что код делает после того, как дал команду передачи. Пока не сработает tx done ничего делать с чипом не надо

Кроме того, возможно ошибка в коде, переменна, длина это втрой этап. Поставьте фиксед для начала, может вы данные на отправку мусорите сами, а тут уже миллион причин может быть, в завимости от "таланта". Напишите предельно тупой код заполнения буфера передачи для начала, типа for(i=0;i<len;i++) put_si4432(i). Кстати а длину пакета в этом чипе указывают вместе с байтом самой длины и црц, или только длину payload? Тож могут быть грабли

Примеров в сети ведь полно, берите от самого Силабса, а потом портить можно как хочется уже
Go to the top of the page
 
+Quote Post
Corner
сообщение Nov 11 2017, 16:42
Сообщение #15


Профессионал
*****

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



Цитата(DASM @ Nov 11 2017, 18:32) *
Если принимаете то же самое количество байт каждый раз, то первый байт точно верен, в нем длина и передается. Похоже что в эфир передатчик излучает обрезок от пакета. Такое может быть, например, если запустить tx, а далее по коду перевести чип в идле. Преамбулу, синхру и первый байт.. несколько уйдут, а далее в эфире тишина. Симптомы совпадут. Посмотрите что код делает после того, как дал команду передачи. Пока не сработает tx done ничего делать с чипом не надо
Кроме того, возможно ошибка в коде, переменна, длина это втрой этап. Поставьте фиксед для начала, может вы данные на отправку мусорите сами, а тут уже миллион причин может быть, в завимости от "таланта". Напишите предельно тупой код заполнения буфера передачи для начала, типа for(i=0;i<len;i++) put_si4432(i). Кстати а длину пакета в этом чипе указывают вместе с байтом самой длины и црц, или только длину payload? Тож могут быть грабли
Примеров в сети ведь полно, берите от самого Силабса, а потом портить можно как хочется уже

Еще вариант, рядом с ТСом кто то излучает на 434 МГц. Или КИТы бракованные. Но, идея скопировать что то с интернета не глядя и не разбираясь, мне очень нравится))).
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th August 2018 - 14:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.00955 секунд с 7
ELECTRONIX ©2004-2016