KnightIgor
Jul 3 2015, 12:52
Привет из форума ARM-щиков.
Главный вопрос - интероперабильность CC1101 и Si446x.
Поискал в сети, набрел на сообщения у TI и здесь на форуме, но ни там, ни тут окончательного ответа не извлек. Возможно, есть новости.
Прежде всего скажу, что не являюсь спецом по RF. Просто перенял наработки конторы, которая создала радиомодуль на CC1101 и растворилась. Я выбросил их AVR, вставил Cortex (EFM32), подровнял библиотеки, затянул Rime протокол. Все работает. Однако, косясь на обсуждения преимуществ и недостатков RF чипов TI и Silabs, пришел к выводу, что Silabs рулит (поправьте меня, если ошибаюсь). Возникла тема заменить CC1101 на Si446x, оставив, однако, совместимость на уровне модема с уже существующими системами.
СС1101 работает на 868.3MHz, GFSK, 10kbps, девиация почти 20kHz, ширина полосы приемника 112kHz. Никакие другие примочки и опции как whitening, interleave и что там еще есть, не включены. Минималистически все. Это согласно SmartRF. Пакет используется переменной длины, не более размера FIFO, при этом длина идет первым байтом в пакете, RSSI и LQI включены в конец. Контрольная сумма насчитывается, но, похоже, в FIFO не попадает, просто проверяется флаг, совпала или нет. По сообщениям на форуме, это контрольная сумма CCIT-16 IBM.
Из форумов, что я проглядывал, следует, что Si446x таки уговорили принять нечно подобное, но контрольная сумма упорно не совпадает. На этом тема закрылась.
Итак, вопрос: есть ли уже готовое и проверенное решение?
Заранее спасибо.
Silabs рулит. Переводил проект с их же Si4432 на Si4463 ... мда да еще та задачка оказалась. Все другое, не как раньше регистровые загрузки. Оказывается у Si4463 внутри проц со своим флешем, программой которую можно менять и которую не дают так просто. Вот тебе макрокоманды и пользуй, вот тебе и засада. Дают тебе табличные значения и пользуй как есть.
Mihey_K
Jul 3 2015, 13:36


Если преамбулу и синхрослово можно настроить одинаково, то софтом для si446x придется иммитировать поля длины пакета, адреса (если используете на cc1101), и вроде все ок, кроме расчета CRC. Вроде на si446x ее можно отключить и подсунуть свою, алгоритм для cc1101 техасовцы
описывали
KnightIgor
Jul 3 2015, 20:09
Цитата(Mihey_K @ Jul 3 2015, 14:36)

Если преамбулу и синхрослово можно настроить одинаково, то софтом для si446x придется иммитировать поля длины пакета, адреса (если используете на cc1101), и вроде все ок, кроме расчета CRC. Вроде на si446x ее можно отключить и подсунуть свою, алгоритм для cc1101 техасовцы
описывалиСпасибо за ответ.
Я где-то так и подозревал. Хотя в Si446x (и WDS от Silabs) есть опция CRC-16 IBM с тем же полиномом, что и в CC1101, какой-то форум писал, что сумма получается иная. Буду пробовать.
Mihey_K
Jul 4 2015, 06:12
AN626 Глава 3.3.1, смотрите бит CRC_ENDIAN, может порядок байт иной, там же CRC_INVERT. Если вам удастся подружить железные механизмы CRC, то это будет круто. Но может проще в 3.3.4. Configuring Field-Specific CRC Calculation отключить расчет CRC в si446x, и программно заполнить поле данных до полей cc1101. Там же 3.3.5. Selection of the CRC Polynomial.
Так в cc1101 в расчет CRC берутся поля длины пакета, адреса, и данных, но не могу ничего сказать по каким полям считается CRC в si446x. Мое мнение - включить cc1101 в режиме сниффера с фиксированной длиной пакета и без адреса, с выключенной опцией очистки FIFO при несовпадении CRC и по прерыванию несовпадения CRC выводить в консоль весь FIFO, там увидите и Field1 и CRC.
Наверняка это лишнее, но тип модуляции, кодирования, ширина канала и скорость должны совпадать.
В паре слов можно описать в чем Силабс рулит? Подбираю RF часть для проекта.. У меня на первом месте потребление на втором дальность. Кто нибудь FEC-ом от TI пользовался?