Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Si4463 не взлетает.
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
draksnov
Добрый день всем!

Который день бьюсь с этим, казалось бы простым, трансивером.
Суть проблемы - нет передачи. в эфире тишина(анализатор спектра есть). Приёмную сторону пока даже не начинал. В эфир бы просто что-нибудь стрельнуть. Младшенький 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 так и не вышло. Конечно же я их включал. Или где-то не хватает волшебных пауз. В слепую натыкал их - тож ничего.

Буду рад любым подсказкам...
draksnov
Косяк найден. Ткнули Подсказали умные люди. Не проходила инициализация. А причиной была некорректная проверка CTS после записи байтов. Поменял последовательность и всё пашет.

Пишем RX-ную часть....
drum1987
ооо Егорsm.gif не покидает тебя радио никакsm.gif уже и город сменил, а они все за тобой бегут...то сс430, то теперь si...
draksnov
Цитата(drum1987 @ Aug 12 2015, 10:24) *
ооо Егорsm.gif не покидает тебя радио никакsm.gif уже и город сменил, а они все за тобой бегут...то сс430, то теперь si...

Дык радиоинженер ж! Кстати да, СС430 оказалось тем ещё гамном, которое не усиливается sm.gif А вот к Si прикрутил усилитель и по городу аж 4 километра с хвостиком пробил )Техас курит )
drum1987
Усиливается...готовить надо уметь.
vadimp61
И СС1101 тоже усиливается )) 20 км получали на +27dBm
draksnov
Цитата(vadimp61 @ Aug 12 2015, 17:52) *
И СС1101 тоже усиливается )) 20 км получали на +27dBm

Отдельно трансивер работает отлично. Я говорил именно про СС430, хоть на борту та же СС1101. А с СС430 был косяк именно сильного усиления на частотах 450 МГц. И встречал людей с аналогичной проблемой. А вот Si при тех же вводных гораздо лучше себя показал. Сделал вывод.
Допускаю, что на 868МГц, использую его же СС1190, всё могло быть лучше. Но я использовал сторонние усилители, довольно широкополосные. Хоть и на согласование потратил много, но не достаточно времени.
CEMA
Цитата(draksnov @ Aug 12 2015, 09:41) *
Косяк найден. Ткнули Подсказали умные люди. Не проходила инициализация. А причиной была некорректная проверка CTS после записи байтов. Поменял последовательность и всё пашет.

Пишем RX-ную часть....


А исходники на TX-ную часть рабочую можешь кинуть? А то тоже проблема с запуском этой штуки...
draksnov
Цитата(CEMA @ Aug 20 2015, 10:36) *
А исходники на TX-ную часть рабочую можешь кинуть? А то тоже проблема с запуском этой штуки...


В двух словах: очищаем фифо. пишем в фифо пакет. передаём.
Если настройки все правильные, то передача пакета примерно такая:

Код
void tx_data(void){    
    fifo_reset();  //очищаем фифо
    spi_write_fifo(); // пишем в фифо пакетик        
    enable_tx_interrupt();    // опционально. должно в настройках делаться. Смотри настройки 0x11
    clr_interrupt();  //  опционально. Если нужно. Скорее всего да. Смотри настройки 0x11
    tx_start();    // в ТХ мод идём и передаём пакет     
    delay_ms(20);    // люблю паузы ^^)
}

void fifo_reset(void){
    U8 p[2];
    
    //в READY режим  //ВАЖНО. Очистка фифо не возможна в RX\TX режимах. Надо выходить.
    p[0] = 0x34;         // Команда смены режима
    p[1] = 0x03;
    spi_write(2,p);
    
    //Очищаем FIFO
    p[0] = 0x15;     //FIFO_INFO
    p[1] = 0x03;       // reset tx и rx fifo
    spi_write(2,p);
}

void tx_start(void){
    U8 p[5];
    
    p[0] = 0x31; //START_TX start command
    p[1] = 0; //freq_channel 0
    p[2] = 0x30; // 30 return to ready mode after tx // 10 return to STANDBY after tx
    p[3] = 0; // lenght Нулевая, ибо передаём столько, сколько пишем.  
    p[4] = 0; // lenght
    spi_write(5, p);
}
CEMA
Цитата(draksnov @ Aug 12 2015, 09:41) *
А причиной была некорректная проверка CTS после записи байтов.


А с CTS что было не так? А то в исходнике из поста №1 ничего криминального тоже не вижу...

Судя по скринам WDS ты настраиваешь Direct Mode TX. Вот тут у меня тоже вопрос... Если ты работаешь через FIFO, то зачем тогда настраиваешь пины ны TX_DATA и TX_DATA_CLOCK? Либо я чего-то не понимаю, либо смотрю в даташиты и аппноуты и вижу "фигу"... Уже голова от них кругом идет :-D
draksnov
Цитата(CEMA @ Aug 20 2015, 12:35) *
А с CTS что было не так? А то в исходнике из поста №1 ничего криминального тоже не вижу...

Судя по скринам WDS ты настраиваешь Direct Mode TX. Вот тут у меня тоже вопрос... Если ты работаешь через FIFO, то зачем тогда настраиваешь пины ны TX_DATA и TX_DATA_CLOCK? Либо я чего-то не понимаю, либо смотрю в даташиты и аппноуты и вижу "фигу"... Уже голова от них кругом идет :-D

Ну про CTS не, есть косяк. Надо его сначала проверять, а потом писать. У меня наоборот было. Поэтому часть команд просто "не глоталось".

А WDS это экспериментальный. Пины, т.е. эти самые ДЖПИО у меня выведены на пады на плате для отладки. Я просто смотрю их осцилом, в данном случае состояния в момент передачи:TX_DATA и TX_DATA_CLOCK.
CEMA
Цитата(draksnov @ Aug 20 2015, 13:00) *
Ну про CTS не, есть косяк. Надо его сначала проверять, а потом писать. У меня наоборот было. Поэтому часть команд просто "не глоталось".

У тебя в коде так же как и в AN633: отправляешь команду, и, отправляя команду 0x44, ждешь, когда в ответ придет 0xFF.

А надо так: Убеждаемся, что на команду 0x44 придет ответ 0xFF и только потом отправляем команду.

Я тебя правильно понял?
draksnov
Цитата(CEMA @ Aug 20 2015, 13:12) *
У тебя в коде так же как и в AN633: отправляешь команду, и, отправляя команду 0x44, ждешь, когда в ответ придет 0xFF.

А надо так: Убеждаемся, что на команду 0x44 придет ответ 0xFF и только потом отправляем команду.

Я тебя правильно понял?

Не очень понял, но вроде ДА. Каждый раз надо ждать FF, о чём мы понимаем, что чип готов принимать дальше наши команды. Там в коде, честно говоря куча косяков. Я уже после начал его вылизывать. Правильно делать так: https://www.dropbox.com/s/q24993qu8ljr6s7/CTS.JPG?dl=0
CEMA
Цитата(draksnov @ Aug 20 2015, 13:37) *
Не очень понял, но вроде ДА. Каждый раз надо ждать FF, о чём мы понимаем, что чип готов принимать дальше наши команды. Там в коде, честно говоря куча косяков. Я уже после начал его вылизывать. Правильно делать так: https://www.dropbox.com/s/q24993qu8ljr6s7/CTS.JPG?dl=0

Где-то я уже видел эту картинку :-D Слушай... Может у тебя мессенджер какой есть? Там время ответов быстрее sm.gif
draksnov
ЛС мне пока недоступны. Молод и зелен для форума) Асько 307198379 или тут http://vk.com/draksnov
CEMA
Цитата(draksnov @ Aug 20 2015, 14:02) *
ЛС мне пока недоступны. Молод и зелен для форума) Асько 307198379 или тут http://vk.com/draksnov

Та же ситуация, только я и аску свою уже забыл :-D Сейчас чего-нибудь придумаю...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.