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

Вопрос по СС1100.

При отправке пакета после команды STX буфер TXFIFO не очищается,
из записанных в него 11 байт 7 остаются. При этом СС1100 остается в режиме
передачи. В документации написано,что буфер должен очищаться,а СС1100
должен переходить в режим IDLE (именно такой режим и сконфигурирован MCSM1(0х17)=0х30).
На приемнике принимаются 2 первых байта отправленного пакета.

Контроллер - ATTINY2313.

Инициализация СС1100 - согласно документации и советов на этом форуме-мощность и остальные
регистры прописываются корректно.

Алгоритм отправки:
- запись данных в TXFIFO
- чтение регистров статуса - RXBYTES, MARCSTATE, TXBYTES, PKTSTATUS
- включил передачу - STX
- жду "1" (синхрослово передано) на GDO2 (по прерыванию)
- по прерыванию переход на ожидание "0" (пакет передан) на GDO2 (опрос)
- очистка TXFIFO

Помогите,пожалуйста,разобраться в чем дело,что не так. Сам не могу додуматься wacko.gif

Заранее спасибо.


Конфигурация регистров СС1100 - SmartRF® Studio

; Chipcon
; Product = CC1100
; Chip version = F (VERSION = 0x03)
; Crystal accuracy = 10 ppm
; X-tal frequency = 26.48 MHz
; RF output power = 0 dBm
; RX filterbandwidth = 551.666667 kHz
; Phase = 0
; Datarate = 249.704590 kBaud
; Modulation = (7) MSK
; Manchester enable = (0) Manchester disabled
; RF Frequency = 433.919908 MHz
; Channel spacing = 200.006104 kHz
; Channel number = 0
; Optimization = Sensitivity
; Sync mode = (3) 30/32 sync word bits detected
; Format of RX/TX data = (0) Normal mode, use FIFOs for RX and TX
; CRC operation = (1) CRC calculation in TX and CRC check in RX enabled
; Forward Error Correction = (1) FEC enabled
; Length configuration = (2) Enable infinite length packets.
; Packetlength = 11
; Preamble count = (2) 4 bytes
; Append status = 1
; Address check = (0) No address check
; FIFO autoflush = 1
; Device address = 0
; GDO0 signal selection = (12) Serial Synchronous Data Output
; GDO2 signal selection = ( 6) Asserts when sync word has been sent / received, and de-asserts at the end of the packet
1100
RF_SETTINGS code rfSettings = {
0x0A, // FSCTRL1 Frequency synthesizer control.
0x00, // FSCTRL0 Frequency synthesizer control.
0x10, // FREQ2 Frequency control word, high byte.
0x62, // FREQ1 Frequency control word, middle byte.
0xFF, // FREQ0 Frequency control word, low byte.
0x2D, // MDMCFG4 Modem configuration.
0x35, // MDMCFG3 Modem configuration.
0x73, // MDMCFG2 Modem configuration.
0xA2, // MDMCFG1 Modem configuration.
0xEF, // MDMCFG0 Modem configuration.
0x00, // CHANNR Channel number.
0x00, // DEVIATN Modem deviation setting (when FSK modulation is enabled).
0xB6, // FREND1 Front end RX configuration.
0x10, // FREND0 Front end TX configuration.
0x18, // MCSM0 Main Radio Control State Machine configuration.
0x1D, // FOCCFG Frequency Offset Compensation Configuration.
0x1C, // BSCFG Bit synchronization Configuration.
0xC7, // AGCCTRL2 AGC control.
0x00, // AGCCTRL1 AGC control.
0xB0, // AGCCTRL0 AGC control.
0xEA, // FSCAL3 Frequency synthesizer calibration.
0x2A, // FSCAL2 Frequency synthesizer calibration.
0x00, // FSCAL1 Frequency synthesizer calibration.
0x1F, // FSCAL0 Frequency synthesizer calibration.
0x59, // FSTEST Frequency synthesizer calibration.
0x88, // TEST2 Various test settings.
0x31, // TEST1 Various test settings.
0x09, // TEST0 Various test settings.
0x07, // FIFOTHR RXFIFO and TXFIFO thresholds.
0x06, // IOCFG2 GDO2 output pin configuration.
0x0C, // IOCFG0D GDO0 output pin configuration. Refer to SmartRF® Studio User Manual for detailed pseudo register explanation.
0x08, // PKTCTRL1 Packet automation control.
0x04, // PKTCTRL0 Packet automation control.
0x00, // ADDR Device address.
0x11 // PKTLEN Packet length.
Ghost_V
Цитата(Radioman @ Jan 15 2009, 17:01) *
.
0x0C, // IOCFG0D GDO0 output pin configuration. Refer to SmartRF® Studio User Manual for detailed pseudo register explanation.
0x08, // PKTCTRL1 Packet automation control.
0x04, // PKTCTRL0 Packet automation control.
0x00, // ADDR Device address.
0x11 // PKTLEN Packet length.

У вас во первых, заданна фиксированная длинна пакета 17 байт.
во вторых, на приемном конце можно посмотреть число принятых байт данных через регистр.
сегодня только с этими трансиверами упражнялся, странно что два байта данных, похоже что первый поспринимается как длинна пакета а второй как адресс, или еще чтонибудь. у меня всё работает могу написать конфигурацию
Но это тогда в понедельник, всё на работе у меня
ysmat
решил поднять ету тему так как столкнулся с подобной проблемой
не работает bust доступ
например нужно передать 4 байта

CODE

spi(CC1100_TXFIFO); // КОМАНДА ДОСТУПА К БУФЕРУ БУСТ РЕЖИМ
spi(0x04); // ДЛИННА ПАКЕТА
spi(0x01);
spi(0x02);
spi(0x03);
spi(0x04);


после этого ничего дальше не работает
такое впечетление что на дальнейшие команды чипкон реагирует как на продолжение
пакета данных
rx3apf
А кто ChipSelect будет дергать после окончания загрузки пакета ?
ysmat
Цитата(rx3apf @ Jun 5 2012, 22:13) *
А кто ChipSelect будет дергать после окончания загрузки пакета ?

никогда не подумал бы что его нужно передергивать
думал что он нужен только для enable то есть пока он активен идет обмен
rx3apf
Цитата(ysmat @ Jun 5 2012, 23:51) *
никогда не подумал бы что его нужно передергивать
думал что он нужен только для enable то есть пока он активен идет обмен

Там же все в документации в детальных подробностях расписано. А как иначе завершать бурстовый обмен ? А байт длины используется только собственно модемной частью и только для пакетов переменной длины, на загрузку TX FIFO никак не влияет.
ysmat
есть еще одна тонкость
передавать команды нужно только тогда когда чипкон обработал передыдущие
реализуеться это опросом miso
Код
void CC1100_Write(unsigned char adres,unsigned char dat)
{
while (MISO == 1) {} // ОЖИДАНИЕ ГОТОВНОСТИ ЧИПКОНА
spi(adres); // ОТПРАВИТЬ АДРЕС
spi(dat); // ОТПРАВИТЬ ДАННЫЕ
}

rx3apf
Цитата(ysmat @ Jun 13 2012, 15:28) *
есть еще одна тонкость
передавать команды нужно только тогда когда чипкон обработал передыдущие
реализуеться это опросом miso

Не "обработал предыдущие", а "перешел в состояние готовности". Это _совершенно_ разные вещи., никак между собой не связанные.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.