Например TDA7294

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





Текущее время: Чт апр 18, 2024 21:07:52

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


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



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Сб мар 18, 2017 15:55:41 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
Всем привет,

не могу понять в чем дело, настраиваю регистр MCSM1.RXOFF_MODE = 11 (3) чтоб он оставался в RX после приема пакета, но он постоянно выходит в IDLE.
Что может быть причиной такого?
Изображение


Вложения:
2017-03-18_1601.png [40.23 KiB]
Скачиваний: 360
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Вс мар 19, 2017 23:02:12 
Мудрый кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 5
Зарегистрирован: Ср янв 23, 2008 22:11:54
Сообщений: 1867
Откуда: Калининград
Рейтинг сообщения: 0
Давайте для начала взглянем на полную процедуру инициализации регистров. Покажите свои настройки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Пн мар 20, 2017 11:37:50 
Говорящий с текстолитом
Аватар пользователя

Карма: 17
Рейтинг сообщений: 185
Зарегистрирован: Пт дек 12, 2008 21:12:14
Сообщений: 1604
Откуда: Moscow
Рейтинг сообщения: 0
На форуме www.kazus.ru там полно про него написано.

_________________
Еси хочешь чтоб комп был быстрым - ставь Пингвин,- он будет чистым


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Вт мар 21, 2017 19:40:31 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
Да я перечитал много инфы, но все в основном сходится к тому, что если настройка есть - значит должно работать.

GRAF
Код:
Сброс:
Код:
void CC1101_Reset(void) {
    CSN_LOW();
    Delay_us(5);
    CSN_HIGH();
    Delay_us(40);
    CC1101_WriteStrobe(0x30);
    Delay_us(2);
}

Настройка:
Код:
void CC1101_Configure(void)
{
    CC1101_WriteReg(CCxxx0_IOCFG0,0x06); //IOCFG0 - GDO0 Output Pin Configuration
    CC1101_WriteReg(CCxxx0_FIFOTHR,0x47); //FIFOTHR - RX FIFO and TX FIFO Thresholds
    CC1101_WriteReg(CCxxx0_PKTLEN,0x3E); //PKTLEN - Packet Length
    CC1101_WriteReg(CCxxx0_PKTCTRL1,0x0C); //PKTCTRL1 - Packet Automation Control
    CC1101_WriteReg(CCxxx0_PKTCTRL0,0x05); //PKTCTRL0 - Packet Automation Control
    CC1101_WriteReg(CCxxx0_ADDR,0x23); //ADDR - Device Address
    CC1101_WriteReg(CCxxx0_CHANNR,0x01); //CHANNR - Channel Number
    CC1101_WriteReg(CCxxx0_FSCTRL1,0x06); //FSCTRL1 - Frequency Synthesizer Control
    CC1101_WriteReg(CCxxx0_FREQ2,0x10); //FREQ2 - Frequency Control Word, High Byte
    CC1101_WriteReg(CCxxx0_FREQ1,0xA7); //FREQ1 - Frequency Control Word, Middle Byte
    CC1101_WriteReg(CCxxx0_FREQ0,0x62); //FREQ0 - Frequency Control Word, Low Byte
    CC1101_WriteReg(CCxxx0_MDMCFG4,0xF9); //MDMCFG4 - Modem Configuration
    CC1101_WriteReg(CCxxx0_MDMCFG3,0x93); //MDMCFG3 - Modem Configuration
    CC1101_WriteReg(CCxxx0_MDMCFG2,0x43); //MDMCFG2 - Modem Configuration
    CC1101_WriteReg(CCxxx0_DEVIATN,0x15); //DEVIATN - Modem Deviation Setting
    CC1101_WriteReg(CCxxx0_MCSM0,0x18); //MCSM0 - Main Radio Control State Machine Configuration
    CC1101_WriteReg(CCxxx0_MCSM1,0x0F); //MCSM1 - Main Radio Control State Machine Configuration
    CC1101_WriteReg(CCxxx0_FOCCFG,0x16); //FOCCFG - Frequency Offset Compensation Configuration
    CC1101_WriteReg(CCxxx0_WORCTRL,0xFB); //WORCTRL - Wake On Radio Control
    CC1101_WriteReg(CCxxx0_FSCAL3,0xE9); //FSCAL3 - Frequency Synthesizer Calibration
    CC1101_WriteReg(CCxxx0_FSCAL2,0x2A); //FSCAL2 - Frequency Synthesizer Calibration
    CC1101_WriteReg(CCxxx0_FSCAL1,0x00); //FSCAL1 - Frequency Synthesizer Calibration
    CC1101_WriteReg(CCxxx0_FSCAL0,0x1F); //FSCAL0 - Frequency Synthesizer Calibration
    CC1101_WriteReg(CCxxx0_TEST2,0x81); //TEST2 - Various Test Settings
    CC1101_WriteReg(CCxxx0_TEST1,0x35); //TEST1 - Various Test Settings
    CC1101_WriteReg(CCxxx0_TEST0,0x09); //TEST0 - Various Test Settings
}

Сгенеренная студией.

После инициализации периферии в МК идет такой вызов:
Код:
    CC1101_Reset();
    CC1101_Configure();

Далее в прерывании по падающему фронту ноги GDO0 настроенной на получение пакета попадаем в обработчик:
Код:
void uEXTI_IRQHandler(uint32_t Pin)
{
    HandleStatus = 1;
}


И в основном цикле как только в обработчике выставили флаг:
Код:
while (1)
    {
        if (HandleStatus)
        {
            HandleStatus = 0x00;
            CC1101_HandleStatus();
        }
    }


Сам CC1101_HandleStatus:

Код:
void CC1101_HandleStatus(void) {
    uint8_t Length = CC1101_ReadStatusReg(CCxxx0_RXBYTES);

    if (Length & BYTES_IN_RXFIFO) {
        CC1101_ReadBurstReg(CCxxx0_RXFIFO, CC1101_Data, Length);
//        CC1101_RxMode();
    }
   
}


если вызов CC1101_RxMode(); как сейчас закоменчен, то больше приема нет.

Код:
void CC1101_RxMode(void) {
    CC1101_WriteStrobe(CCxxx0_SFRX);
    CC1101_WriteStrobe(CCxxx0_SRX);
}

Параметры студии:
Вложение:
2017-03-21_1949.png [16.95 KiB]
Скачиваний: 641


Последний раз редактировалось greeka Вт мар 21, 2017 22:13:08, всего редактировалось 1 раз.

Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Вт мар 21, 2017 21:57:08 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Похоже, что проблема, как минимум, в том, что используется дефолтное значение регистра MCSM1, согласно которому чип после RX переходит в IDLE. Запишите в биты 3:2 этого регистра значение 11b.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Вт мар 21, 2017 22:14:22 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
Извините, не то скопипастил. Обновил. Конечно же этот регистр устанавливается в значение 0x0F (переход в RX после отправки и получения).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Вт мар 21, 2017 23:30:10 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Вообще, в режиме приёма пакета по GDO0, падающий уровень на нём сигнализирует о принятии лишь слова синхронизации. Для момента окончания принятия пакета следует дождаться нарастастающего уровня после того как он упал. Я это делаю обычно так (код для MSP430):
Спойлер
Код:
      P1IES_bit.GDO0 = 0;         // set INT on low-to-high transition
      P1IFG = 0;               // clear port IF
      P1IE = RST_BTN + GDO0;      // enable port pin interrupts
      __low_power_mode_3();      // wait for receiving the sync word
      
      P1IES_bit.GDO0 = 1;         // sync word received - set INT on high-to-low transition
      P1IFG = 0;               // clear IF
      P1IE_bit.GDO0 = 1;         // enable GDO0 pin INT
      __low_power_mode_3();      // wait for receiving packet in FIFO


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Ср мар 22, 2017 01:19:18 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
Как говорит даташит:
Цитата:
6 (0x06) - Asserts when sync word has been sent / received, and de-asserts at the end of the packet.

На диаграмме не видно, но уровень становится = 1, потом через 1,5 ms падает. Полагаю когда 1 - это прием синк слова, когда 0 - окончание пакета.
У меня настроена автоочистка FIFO по битому пакету (CRC) и собственно пакет как видно на картинке читается корректно.

UPD: Я понял про что вы: настройка инверсии сигнала на линии:
Цитата:
0x02: IOCFG0 – GDO0 Output Pin Configuration
Bit 6: Invert output, i.e. select active low (1) / high (0)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Ср мар 22, 2017 03:52:39 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Да, пожалуй Вы правы насчёт GDO0, я уже подзабыл. Однако, я сейчас настроил один из чипов в Studio на передачу CC-дебаггером, другой на приём в дефолтной конфигурации (в ZIP архиве внизу) без выхода из режима RX. И он действительно из этого режима не выходит по приёму пакета (см. осциллограмму). Пакет состоит из слова "test" с 2 предшествующими байтами номера пакета и байтами RSSI и CRC в конце. Почитайте еррату на свою версию. Чип случаем не китайская подделка? Интересно, что у Вас лежит в регистре 0х31? У меня 0х14 - покупал его года 4 назад.
СпойлерИзображение

Кстати, после чтения длины принятого пакета командой 0xFB следует передёрнуть CS и уже потом в следующей сессии читать RX FIFO командой 0xFF.
Вложение:
cc1101rx.png [66.36 KiB]
Скачиваний: 831
Вложение:
CC1101.zip [1.48 KiB]
Скачиваний: 205


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Ср мар 22, 2017 10:14:42 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
А есть подделки CC1101? Как их распознать?

У меня на таких модулях:
Изображение

Цитата:
Кстати, после чтения длины принятого пакета командой 0xFB следует передёрнуть CS и уже потом в следующей сессии читать RX FIFO командой 0xFF.

У меня так и есть, см. самый первый пост, там сразу после ответа от FB дергается верхняя линия - это CSN

В регистре 0x31 (0xF1) лежит 0x14


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Ср мар 22, 2017 14:56:56 
Друг Кота
Аватар пользователя

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Ср мар 22, 2017 18:04:08 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
На али вестимо. Цена средняя по палате 2.5 на момент покупки.
https://ru.aliexpress.com/item/433M-CC1 ... 0.0.SX5e1j


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Ср мар 22, 2017 18:20:10 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Ну не знаю, что и сказать... Похожи на мои, купленные у официального дистрибъютора.
Вложение:
SV400510.JPG [23.82 KiB]
Скачиваний: 647


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Чт мар 23, 2017 15:04:03 
Встал на лапы

Зарегистрирован: Пн июн 13, 2016 10:41:52
Сообщений: 129
Рейтинг сообщения: 0
Хорошо же вам. У меня вон с Si4432 одни баги.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Чт мар 23, 2017 16:55:05 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Хммм, и с силлабовскими у меня никогда проблем не было - работают как часы. Правда, дело довелось иметь только с Si446x серией, приёмником Si4362, передатчиком 4060 и ещё не помню точно какими, но точно не со старой серией Si443x. Сейчас делаю проект на Si4468 с выходной мощностью +20dBm, пока он в стадии разработки. У меня тут, кстати, несколько статей в шерсти про модули на Si найдте. Модули всегда делал под них сам с одним лишь исключением в последней статье. Но в любом случае использовал некитайские модули (в последней статье) и покупал все Si чипы только у официальных дистрибъюторов. С покупкой на Али у меня нулевой опыт, только со слухов знаю, что там бывают подделки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Чт мар 23, 2017 20:35:58 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
Цитата:
greeka - если то, о чём пишите, единственная проблема, что мешает Вам подать команду перевода модуля в RX после выгрузки из него пакета? Или имеется опасность пропустить какой-то пакет за время выгрузки?

Ser60 отвечу вам в своей теме.
Вообщем-то проблемы нет, так и делаю. Более того, приемник не рекомендуется долго держать в состоянии приема т.к. он уплывает. Но насторожила эта ситуация, думал что я что-то упустил, ведь должно же работать как заявлено.

Еще мне непонятен такой момент - если я сразу после падения импульса на линии GDO0 буду не пытаться выгрузить пакет, а переключать в режим приема и потом выгружать текущий принятый пакет, при этом будет передаваться новый пакет, будут ли битые данные в RX FIFO?

Цитата:
У меня тут, кстати, несколько статей в шерсти про модули на Si найдте.

Подскажите как статьи искать по автору? Или дайте ссылки на них.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Чт мар 23, 2017 20:56:51 
Мудрый кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 5
Зарегистрирован: Ср янв 23, 2008 22:11:54
Сообщений: 1867
Откуда: Калининград
Рейтинг сообщения: 0
Страница 2

Details
If a received data byte is written to the RX FIFO at the exact same time as the last byte in the RX FIFO is read over the SPI interface, the RX FIFO pointer is not properly updated and the last read byte is duplicated.

Workaround(s)
For packets below 64 bytes, it is recommended to wait until the complete packet has been received before reading it out.

Цитата:
Более того, приемник не рекомендуется долго держать в состоянии приема т.к. он уплывает.

Если используются не амплитудная модуляция, то уход частоты можно компенсировать, в пункте 14.1 даташита сказано. Здесь пример.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Чт мар 23, 2017 21:43:31 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
greeka писал(а):
будут ли битые данные в RX FIFO?

Не будут. По модулю hardware бага, что GRAF указал.
greeka писал(а):
Подскажите как статьи искать по автору? Или дайте ссылки на них.

У меня тут несколько статей на тему. Быстрее будет Вам нажать кнопку Профиль под этим моим сообщением, чтобы получить доступ к статьям.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Чт мар 23, 2017 22:57:04 
Первый раз сказал Мяу!

Зарегистрирован: Чт янв 12, 2017 14:13:48
Сообщений: 24
Рейтинг сообщения: 0
GRAF писал(а):
Страница 2

Details
If a received data byte is written to the RX FIFO at the exact same time as the last byte in the RX FIFO is read over the SPI interface, the RX FIFO pointer is not properly updated and the last read byte is duplicated.

Workaround(s)
For packets below 64 bytes, it is recommended to wait until the complete packet has been received before reading it out.

Не понял как это относится к тому, о чем я писал.
Вот пример - у меня пакет на 60 байт + системные 2 байта которые добавляет сам чип. Я получил пакет, CRC сошлось, чип дернул ногой. Я начинаю читать данные из RX FIFO и в этот же момент модуль начинает получать данные (тоже пакет на 60 байт). Под баг этот мы не попадаем, но что будет с данными, которые я еще не прочитал из буфера?

Добавлено after 4 minutes 4 seconds:
Ser60 писал(а):
У меня тут несколько статей на тему. Быстрее будет Вам нажать кнопку Профиль под этим моим сообщением, чтобы получить доступ к статьям.

А слона-то я и не заметил :)
Благодарочка!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CC1101 выходит в IDLE после приема пакета а не должен
СообщениеДобавлено: Пт мар 24, 2017 02:03:12 
Друг Кота
Аватар пользователя

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

Они там и будут сидеть пока их не прочитаете или не очистите FIFO. Насколько я помню, последний организован как кольцевой буфер. Если для вновь принимаемых байтов не будет места в нём, чип перейдет в режим RXFIFO_OVERFLOW и приём прекратит.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

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


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

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


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

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


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