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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вопросы по трансиверам Si446x
Ruslan-maniak
сообщение Jan 13 2014, 09:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Доброго дня коллеги. Волею судеб начал работать со своим первым трансивером фирмы Silicon Labs. Модель Si4460. И ничего не получается. Для начала пытаюсь связать его с МК. Запрашиваю данные по SPI но в ответ тишина. На шине просматриваются только запрос в сторону трансивера и тактирование SPI. В ответ же ничего. Пробовал разную скорость. В том числе и максимальную 10 МГц. Опрашивал разные регистры, в том числе и Fast Response Registers и другие настроечные регистры. Но везде тишина. Что я могу делать не так? Подскажите пожалуйста.

На любую команду, трансивер отвечает 0xFF. Однако если я отправляю запрос о готовности принять команду по SPI (0x44), то в ответ получаю 0x00. То есть трансивер не готов получать команду.

Сообщение отредактировал Ruslan-maniak - Jan 14 2014, 04:59
Go to the top of the page
 
+Quote Post
Vlad27
сообщение Jan 14 2014, 14:30
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 31-07-05
Из: Полоцк Беларусь
Пользователь №: 7 227



Используете ли Wireless Development Suite для работы с чипом?
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Jan 15 2014, 02:21
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Нет, не использую. Чип просто подключен к МК по SPI. Вчера под вечер я наконец сумел считать данные из регистра PART_INFO (0x01). Чип выдавал пару байт 0x44,0x60. Все остальные регистры равны нулю были. Сегодня пришёл, запустил туже самую программу - чип уже не отвечает. И появился ещё вопрос наперёд: а где взять-то значения регистров для конфигурации? В даташите там как-то туманно всё это описано. Вообще документация странная на мой взгляд.

Сообщение отредактировал Ruslan-maniak - Jan 15 2014, 03:51
Go to the top of the page
 
+Quote Post
Vlad27
сообщение Jan 15 2014, 13:04
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 31-07-05
Из: Полоцк Беларусь
Пользователь №: 7 227



Да как раз из примеров Wireless Development Suite и можно позаимствовать последовательность команд для инициализации трансивера. А также получить содержимое регистров под свой проект. Кроме даташита необходимо ознакомится с Programming Guide и API Description.
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Jan 21 2014, 03:26
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



А, ну вот, в API Description более-менее определены регистры. Но по сути с места я не сдвинулся. Сейчас всё обстоит следующим образом. При отправке в 0х44 я получаю в ответ один байт 0xFF а затем нули, при любой другой команде я получаю бесконечно 0xFF. И всё, других вариантов нет. Как достучаться до чипа ума не приложу (

Сообщение отредактировал Ruslan-maniak - Jan 21 2014, 03:26
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Jan 23 2014, 04:25
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Ну что, ни у кого нет ни какаих идей почему так может быть? Как вообще впринципе проверить живой ли чип?

Сообщение отредактировал Ruslan-maniak - Jan 23 2014, 07:11
Go to the top of the page
 
+Quote Post
UnDerKetzer
сообщение Jan 27 2014, 07:39
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 10-03-08
Из: Helsinki
Пользователь №: 35 763



Рискну и спрошу:
настройки модуля SPI верные?
SDN (1) пин прижат к земле?
Go to the top of the page
 
+Quote Post
Vlad27
сообщение Jan 27 2014, 10:20
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 31-07-05
Из: Полоцк Беларусь
Пользователь №: 7 227



Побольше бы информации о подключении, кусок кода, ответственного за инициализацию, обмен по SPI.
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jan 27 2014, 10:42
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(Ruslan-maniak @ Jan 23 2014, 08:25) *
Ну что, ни у кого нет ни какаих идей почему так может быть? Как вообще впринципе проверить живой ли чип?

дно у чипа хорошо припаяно?
как уже выше писали - SDN на gnd подключен?
питание +3.3 и не шумит? хост с SPI на таком же напряжение?
осциллом диаграммы смотрели? все вовремя тактируется? CLKspi<=10MHz?
чудес не бывает..

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

Сообщение отредактировал Jury093 - Jan 27 2014, 10:44
Go to the top of the page
 
+Quote Post
DASM
сообщение Jan 27 2014, 16:05
Сообщение #10


Гуру
******

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



У меня на 4463 SDN просто на землю недостаточно было, подаю импульс пару мс. Хотя может и не в том дело было.
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Feb 3 2014, 04:22
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Извиняюсь что не отвечал. Накосячил я в работе с пином nSel. не отпускал его между отправкой команды и получением ответа. Сейчас всё норм. Но появилась другая проблема. Какие бы данные я не записывал в TX_FIFO, при отправке отправляется пакет с одними и теми же данными. По крайней мере на дублирующем пине TX_DATA, я всегда вижу пакет с одними и теми же данными. При этом преамбула и синхрослово формируются нормально и размер отправляемого пакета изменяется в зависимости от количества отправляемых данных. Но вот сами данные не зависят от того что я записываю в TX_FIFO. Почему так может быть?

Сообщение отредактировал Ruslan-maniak - Feb 3 2014, 04:25
Go to the top of the page
 
+Quote Post
spf
сообщение Feb 3 2014, 05:08
Сообщение #12


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



В качестве примера: открытый проект с использование Si4464 - https://github.com/tkrahn/pecanpico4 (http://kt5tk.wordpress.com/2013/07/24/pecan-pico-4-serial-number-1-built-working/)


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Feb 3 2014, 05:22
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Вы уверены что он рабочий? В библиотеке для Si446x толком ничего не реализовано. Только поверхностные настройки. А связаного с передачей данных там вовсе ничего нет.
И ещё такой вопрос: Реально ли связать трансиверы разных производителей? Не могут ли возникнуть нестыковки? Кто-нибудь пробовал?

Сообщение отредактировал Ruslan-maniak - Feb 3 2014, 10:24
Go to the top of the page
 
+Quote Post
SergNK
сообщение Feb 15 2014, 17:55
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 30-03-11
Из: Фаниполь (Минск)
Пользователь №: 63 991



Цитата(Ruslan-maniak @ Feb 3 2014, 07:22) *
Извиняюсь что не отвечал. Накосячил я в работе с пином nSel. не отпускал его между отправкой команды и получением ответа. Сейчас всё норм. Но появилась другая проблема. Какие бы данные я не записывал в TX_FIFO, при отправке отправляется пакет с одними и теми же данными. По крайней мере на дублирующем пине TX_DATA, я всегда вижу пакет с одними и теми же данными. При этом преамбула и синхрослово формируются нормально и размер отправляемого пакета изменяется в зависимости от количества отправляемых данных. Но вот сами данные не зависят от того что я записываю в TX_FIFO. Почему так может быть?

А производится ли действительно запись данных в FIFO?
Советую поставить WDS3 и заглянуть в c:\Program Files (x86)\SiLabs\WDS3\DemoExample\ и найти там много полезного. В т.ч. драйверы и API.
Go to the top of the page
 
+Quote Post
alux
сообщение Dec 5 2015, 14:58
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Имею проблему с трансивером si4461. Плата с трансивером из фирменного демокита. За основу был взят проект Si446x_BidirectionalPacket из папки с примерами WDS. Микроконтроллер STM32F0. Проблема в том, что не проходит команда POWER_UP в функции Radio_Init(). При ожидании готовности CTS после отправки команды POWER_UP вылетает в таймаут:
CODE
uint8_t radio_comm_GetResp(uint8_t byteCount, uint8_t* pData)
{
uint8_t ctsVal = 0;
uint16_t errCnt = RADIO_CTS_TIMEOUT;
while (errCnt != 0) //wait until radio IC is ready with the data
{
radio_hal_ClearNsel();
radio_hal_SpiWriteByte(0x44); //read CMD buffer
ctsVal = radio_hal_SpiReadByte();
if (ctsVal == 0xFF)
{
if (byteCount)
{
radio_hal_SpiReadData(byteCount, pData);
}

radio_hal_SetNsel();
break;
}
radio_hal_SetNsel();
errCnt--;
}
if (errCnt == 0)
{
while(1)
{
BSP_LED_Toggle(LED_RED);
/* ERROR!!!! CTS should never take this long. */
}
}
if (ctsVal == 0xFF)
{
ctsWentHigh = 1;
}
return ctsVal;
}

При этом команда PART_INFO выполняется без проблем (см. осциллограммы). Аппаратный сброс трансивера также выполняется. Осциллограммы прилагаю. В чем может быть дело? Буду рад любому дельному совету. Спасибо.
Прикрепленные файлы
Прикрепленный файл  osc.7z ( 757.86 килобайт ) Кол-во скачиваний: 13
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:59
Рейтинг@Mail.ru


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