Например TDA7294

Форум РадиоКот • Просмотр темы - Si4463 не взлетает
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 01:41:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 60 ]  1, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Si4463 не взлетает
СообщениеДобавлено: Вт авг 11, 2015 13:39:12 
Родился

Зарегистрирован: Сб июн 20, 2015 18:16:44
Сообщений: 8
Рейтинг сообщения: 0
Добрый день всем!

Который день бьюсь с этим, казалось бы простым, трансивером.
Суть проблемы - нет передачи. в эфире тишина(анализатор спектра есть). Приёмную сторону пока даже не начинал. В эфир бы просто что-нибудь стрельнуть. Младшенький Si4431 проблем не доставил. Этого прокачали и API добавили по сути...

В качестве контроллера использую STM32L0. Её запустили. SPI настроили. К Si4463 подключили.
POWER_UP выполнили. Кварц завёлся. SDO заработало. Настройку чипа сделали, используя то, что нам выдал WDS.
В FIFO записали нужный нам пакетик. Сделали TX_START. В эфире тишина.

Начал копать. Нашёл образец кода от DORJI, всё вроде так же делаю. Настроил прерывания, читаю регистры состояния. Прерывания с nIRQ говорит, что пакет отправлен, чип находится в READY MODE (хорошо), CHANGE_STATE тоже успешно выполнен (хорошо), и даже GET_INT_STATUS говорит "the TX FIFO were transmitted successfully" (отлично). Проверил, пишется ли что-нибудь в FIFO - читаю FIFO_INFO ->количество пустых битов меняется, значит что-то пишем.

Я В тупике. Ниже ссылки на дропбокс на схему, куски кода и иниты...
P.S. Ревизию проверил. B1, как на чипе написано.
P.P.S. Поиграл с настройкой PA, заменил CLE на SWC, как в принципе и схему спроектировал - ничего.

SCH https://www.dropbox.com/s/rv1kl88j2q2v3pn/sch.JPG?dl=0
code https://www.dropbox.com/s/53qgkavy50bnedf/code.rar?dl=0
WDS https://www.dropbox.com/s/zxnj4slwr14nuom/sets.rar?dl=0

Есть подозрения, что до конца не заводятся внутренние клоки\шины, т.к. получить с GPIO DIV_CLK, 32CLK или BOOT_CLK так и не вышло. Конечно же я их включал. Или где-то не хватает волшебных пауз. В слепую натыкал их - тож ничего.

Буду рад любым подсказкам...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Вт авг 11, 2015 17:51:25 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Пока обнаружил, что в FIFO загружается payload_length=7 байтов а в функции tx_start() запрашивается передача 0x0D=13 байтов (?) Кроме того перед посылкой каждой команды в радио следует проверять сигнал CTS. У Вас это делается неправильно. Именно, в функции spi_write() сначала в радио посылаются байты а потом уже проверяется CTS:
Код:
   nSEL_low; // ×èï ñåëåêò
   for (i = 0; i < tx_length; i++){
      j = *(p+i);
      spi_byte(j);
   }
   while(i!=0xFF){ // Æäåì CLEAR TO SEND
      i = check_cts();}
   nSEL_high; // ×èï ñåëåêò

Если хотите проверять CTS после подачи команд, то в имплементации выше первый вызов функции check_cts() применяется с опущенной линией nSEL, что тоже некорректно. Я-бы поставил while-loop перед for-loop.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Ср авг 12, 2015 09:30:21 
Родился

Зарегистрирован: Сб июн 20, 2015 18:16:44
Сообщений: 8
Рейтинг сообщения: 0
Да, дело было именно в некорректной проверки CTS. Косяк косяков.

Касательно длинны пакета, что 0x0D это я случайно отправил кусок кода, когда "экспериментировал". И проверка CTS хоть коряво, но работает. Просто один цикл он работает "в холостую". Согласен, правильнее было бы написать:

do{
i = check_cts();
} while(i!=0xFF);


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Ср авг 12, 2015 14:53:03 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Я бы еще рекомендовал восстановить дефолтное формирование сигнала CTS на ноге GPIO1 и проверять его наличие именно там. У приемника несколько снижается чувствительность если чип много долбать по SPI.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Ср авг 12, 2015 15:32:20 
Родился

Зарегистрирован: Сб июн 20, 2015 18:16:44
Сообщений: 8
Рейтинг сообщения: 0
О как. Дельный совет. Спасибо!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Вт июл 04, 2017 03:19:29 
Родился

Зарегистрирован: Вт июл 04, 2017 03:14:29
Сообщений: 8
Рейтинг сообщения: 0
Добрый день!
Пытаюсь запустить данный чип(модуль RF4463F30) в режиме DIRECT TX, то есть что пришло на ножку GPIO, то и ушло в эфир. Не могу понять что нужно сделать после загрузки конфига, сгенерированного WDS. Отправить команду start tx? Или что то другое? При отправке start tx в эфире тишина.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Вт июл 04, 2017 07:33:21 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Почитайте силлабовский AN633. Там есть секция 10.3 про direct mode. Как определяете, что в эфире тишина?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Вт июл 04, 2017 11:29:44 
Родился

Зарегистрирован: Вт июл 04, 2017 03:14:29
Сообщений: 8
Рейтинг сообщения: 0
Почитайте силлабовский AN633. Там есть секция 10.3 про direct mode. Как определяете, что в эфире тишина?

Спасибо за ответ!
Посмотрел секцию 10.3, написано что нужно настроить чип и вызвать функцию vRadio_Start_Tx( ). Я так понял это Start TX и есть.
Определяю sdr доглом китайским, выставляю частоту на которую настроен модуль(907 МГц) и смотрю что в эфире творится через SDR Sharp.
Конфиг загружается, после передачи каждой строки CTS падает в 0, после того как выставляется в 1 идёт следующая строка, и так пока не загрузится весь конфиг. Частота spi 8 МГц. По spi чип отвечает, делал команду PART_INFO, чип выдает ревизию и тд.
Кстати какую ревизию ставить в WDS? На команду PART_INFO чип выдает 0х22. На корпусе маркировка 44632A.
Сейчас попробовал настроить GPIO1 на вывод тактов, конфиг загружаю, на GPIO1 тишина. Подскажите, что не так делаю, прилагаю архив с проектом в keil для stm32f103c8t6 и лог обмена по spi(saleae logic).
https://www.sendspace.com/file/u9rgzl


Последний раз редактировалось aen Пн сен 18, 2017 23:29:32, всего редактировалось 1 раз.
Нарушение Правил форума п. 2.7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Вт июл 04, 2017 19:42:10 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Насчёт ревизии чипа см. здесь. На осциллограмме GPIO1 неверно сконфигурирован на вывод тактов командой 0х13. Там должно быть 16 (0х10). Приёмнику верить можно? И его настройки частоты, модуляции, девиации и пр. соответствуют передатчику? Попробуйте сконфигурировать чип на генерацию несущей, если приёмник её определит. С Вашим кодом мне разбираться времени нет, извините.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Вт июл 04, 2017 20:05:27 
Родился

Зарегистрирован: Вт июл 04, 2017 03:14:29
Сообщений: 8
Рейтинг сообщения: 0
Насчёт ревизии чипа см. здесь. На осциллограмме GPIO1 неверно сконфигурирован на вывод тактов командой 0х13. Там должно быть 16 (0х10). Приёмнику верить можно? И его настройки частоты, модуляции, девиации и пр. соответствуют передатчику? Попробуйте сконфигурировать чип на генерацию несущей, если приёмник её определит. С Вашим кодом мне разбираться времени нет, извините.

Судя по AN625 вывод тактов сконфигурирован верно. 3.2.6. GPIO_PIN_CFG сналача идет 0x13, потом байты конфигурации каждого из GPIO. На осциллограмме он настроен на вывод Divided MCU clock(0x07). На GPIO1 тишина((
Приемник неоднократно проверен и работает.


Последний раз редактировалось aen Пн сен 18, 2017 23:30:06, всего редактировалось 1 раз.
Нарушение Правил форума п. 2.7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Вт июл 04, 2017 21:44:43 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
ОК, я думал Вы хотите выводить на GPIO1 тактирование для синхронной безпакетной передачи. Я попробовал вывести тактирование частоты кристалла на вывод IRQ такими0же командами, как Вы делаете (GPIO1 у меня занят под сигнал CTS - без него мой код работать не будет). Как видно из осциллограммы, частота выводится.
Вложение:
freq.png [72.44 KiB]
Скачиваний: 722


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Ср июл 05, 2017 01:10:26 
Родился

Зарегистрирован: Вт июл 04, 2017 03:14:29
Сообщений: 8
Рейтинг сообщения: 0
ОК, я думал Вы хотите выводить на GPIO1 тактирование для синхронной безпакетной передачи. Я попробовал вывести тактирование частоты кристалла на вывод IRQ такими0же командами, как Вы делаете (GPIO1 у меня занят под сигнал CTS - без него мой код работать не будет). Как видно из осциллограммы, частота выводится.
Вложение:
freq.png

У Вас какая ревизия микросхемы? Хотя не думаю что тут в ревизии дело, попробую проверить на другом экземпляре модуля. До этой команды Вы что на модуль подаёте? Только Power Up?


Последний раз редактировалось aen Пн сен 18, 2017 23:30:42, всего редактировалось 1 раз.
Нарушение Правил форума п. 2.7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Ср июл 05, 2017 03:19:38 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
У меня 4461 ревизия 1B. Да, до этих команд подаю только команду PoerUp (0х02).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Пт июл 07, 2017 06:54:34 
Родился

Зарегистрирован: Сб май 07, 2016 16:19:58
Сообщений: 13
Рейтинг сообщения: 0
Здравствуйте! Как-то читал даташит и вроде как находил описание, что при передачи данных модуль сначала слушает эфир, на наличии активности, если ее нету, то начинается передача. Сейчас пришли модули, подключил к ардуино, работают. Использовал библиотеки RadioHead и пример от NiceRF. Сейчас что-то не могу найти описание такой функции.. Есть что-то подобное или нет в данных модулях, чтобы несколько модулей не начали передавать данные одновременно, а то на приемнике будет каша. Сейчас буду писать код под AVR хочется это учесть.
И по поводу адресации на уровне модуля, есть примеры, опыт использования?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Пт июл 07, 2017 07:14:43 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Сам по себе модуль до начала передачи эфир не слушает. Может это и запрограммировано в какой-то библиотеке, но в железе изначально и дефолтно такого нет. Более того, несколько разрозненных и независимых модулей, подключенным к разным МК невозможно 100%-но синхронизировать на отсутствие одновременной передачи. Это скорее задача протокола связи, в частности реализовать LBT (Listen Before Talk) поведение модуля, используя значение RSSI.

Насчёт адресации не понял. Имеете в виду как работать с голым модулем без всяких библиотек? Если да, почитайте сначала мою статью здесь. Я лично только так с этими модулями и работаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Пт июл 07, 2017 08:14:49 
Родился

Зарегистрирован: Сб май 07, 2016 16:19:58
Сообщений: 13
Рейтинг сообщения: 0
Насчёт адресации не понял. Имеете в виду как работать с голым модулем без всяких библиотек? Если да, почитайте сначала мою статью здесь. Я лично только так с этими модулями и работаю.


Под адресацией я имел ввиду адреса модулей, чтобы можно было передавать данные конкретному модулю, а не широковещательно. В si4432 там были регистры Transmit Header(0x3A-0x3D), Check Header(0x3F-0x42), Received Heade(0x47-0x4a) и можно было общаться с конкретным модулем, другие модули не реагировали на сообщения. В si4463 находил в апноуте AN626 4.4. Match (Header Check) Functionality, вроде похоже на то что надо, но не смог разобраться что к чему((

Еще есть модули HC-12 на базе si4463. У меня было два модуля на передачу и один на прием. И как часто я бы не посылал сообщения с двух передатчиков на один приемник, пакеты не пересекались т.е. сначала один пакет полностью получили, потом второй. Может конечно я сильно заморачиваюсь и переживаю по этому поводу, так как нет знаний по радиопередатчикам, просто беспокоит тот момент, если во время передачи данных, начнет передачу другой модуль, то будет на приемнике каша.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Пт июл 07, 2017 16:18:15 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 3
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Для передачи данных конкретному модулю есть несколько способов. Можно просто поместить адрес приемника в payload пакета и по приёму пакета проверять его программно. Преимущество этого способа в простоте реализации, если у Вас уже работает приём и передача пакетов. Недостаток его в нагрузке на управляющий МК и в принятии полного пакета приёмником, если даже он ему не предназначен (что выяснится позже МК). Иначе, можно передавать пакеты разным приёмникам на разных каналах (частотах) диапазона. В пределах одного канала можно ограничить вещание пакетов для определённого приёмника передавая синхрослово, на которое этот приёмник настроен. При приёме неправильного синхрослова дальнейший приём пакета приёмником прекращается. Это основной (primary) способ. О нём подробнее написано в секции 4.2 AN626. Наконец, то, что Вы упомянули (секция 4.4). В этом случае достигается значительно более гибкая отбраковка пакета по четырём (максимум) фиксированным байтам в хедере и с логическими операциями над ними.

Если оба передатчика начнут передавать одновременно, приёмник это не поймёт, конечно. Такая проблема существует во всех каналах с множественным доступом. Решается она программно на уровне протокола. Посмотрите, например, на алгоритмы CSMA/CD и CSMA/CA (подробности в Википедии).
СпойлерИзображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Пт июл 28, 2017 18:36:50 
Родился

Зарегистрирован: Сб май 07, 2016 16:19:58
Сообщений: 13
Рейтинг сообщения: 0
Спасибо, наверное остановлюсь на синхрослове.. А подскажите пожалуйста, как зависит частота девиации на скорость передачи? Как правильно ее настроить? И как она влияет на качество сигнала?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Сб июл 29, 2017 04:40:37 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Хороший вопрос! При передаче сигналов определяющую роль играют 2 параметра: полоса пропускания (bandwidth) и коэффициент модуляции (modulation index), которые определяются по формулам dara_rate + 2*deviation и 2*deviation/data_rate, соответственно. При широкой полосе пропускания уменьшается чувствительность приемника, в то время как при малой девиации уменьшается расстояние между сигналами (при FSK модуляции), и, как следствие чувствительность. Кроме всего прочего, в игру вступает точность кварцевых резонаторов для различения частот при малой девиации. Компромиссом выхода из ситуации считается оптимальным передавать при коэффициенте модуляции =1. Одако, это не всегда приемлимо, т.к. из-за дискретности цифровых синтезаторов частоты в радио величина девиация обычно ограчичена снизу. Поэтому при малых скоростях передачи следует установить минимальную поддерживаемую радио девиацию, так чтобы коэффициент модуляции был как можно ближе к 1.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Si4463 не взлетает
СообщениеДобавлено: Пн сен 18, 2017 19:03:24 
Родился

Зарегистрирован: Сб май 07, 2016 16:19:58
Сообщений: 13
Рейтинг сообщения: 0
Доброго времени суток. Есть такая проблемка. Взял библиотеку от NiceRF для ардуино, код перенес на STM32F103. Передатчик передает строку вида T1=10C H=75% T2=10C, а на приемнике бывает иногда часто приходят битые данные: T1=10G!H=75% T1=10C, T1=10C`I=/5%0T9=1ёS.. Где-то один два символа не правильно, когда и больше и по количеству бывает больше. На что можно грешить? Передатчик так передает? Или помехи при считывании с SI4463? Сейчас радиомодуль подключен макетными проводами 10см. Информацию вывожу с помощью ST-Link по SWO интерфейсу.


Вложения:
Комментарий к файлу: Библиотека для ардуино от NiceRF
RF4463-Arduino code-23cba543-60d4-463f-85e7-4d0fae0fe9d4.zip [20.01 KiB]
Скачиваний: 600
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 60 ]  1, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y