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

 
 
20 страниц V  « < 12 13 14 15 16 > »   
Reply to this topicStart new topic
> CC2500 Приемопередатчик, Кто-то реально делал?
Methane
сообщение Mar 4 2009, 18:09
Сообщение #196


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Зверюга @ Mar 4 2009, 19:56) *
А емкости на ножках кварца должны быть равны емкости указаной в параметрах кварца? Я правильно понял?

http://focus.ti.com/lit/ds/symlink/cc2500.pdf
Страница 51
Go to the top of the page
 
+Quote Post
andrikk
сообщение Mar 4 2009, 18:10
Сообщение #197


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167



может кто-то подскажет - есть ли в СС2500 ограничительные диоды на входах, в даташите не нашел.
если есть, то на какой ток расчитаны? хочу подключить через токоограничительные резисторы к 5-ти вольтовому контроллеру.
пожалуйста - не посылайте на левелшифтеры...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Mar 4 2009, 19:53
Сообщение #198


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(andrikk @ Mar 4 2009, 21:10) *
хочу подключить через токоограничительные резисторы к 5-ти вольтовому контроллеру.
пожалуйста - не посылайте на левелшифтеры...

Есть почти наверняка (можно прозвонить и выяснить точно), но, поскольку вопрос токоограничения в даташите деликатно обойден вниманием - лучше так не делать, а если уж так не хочется ставить преобразователи - то поставить диоды самому. Причем не на "+" питания трансивера, а чуток ниже, чтобы соблюсти требование из даташита - "Vdd+0.3", и не превышать. А лучше бы все ж поставить преобразователь...
Go to the top of the page
 
+Quote Post
andrikk
сообщение Mar 4 2009, 23:43
Сообщение #199


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167



Цитата(rx3apf @ Mar 4 2009, 21:53) *
Есть почти наверняка (можно прозвонить и выяснить точно), но, поскольку вопрос токоограничения в даташите деликатно обойден вниманием - лучше так не делать, а если уж так не хочется ставить преобразователи - то поставить диоды самому. Причем не на "+" питания трансивера, а чуток ниже, чтобы соблюсти требование из даташита - "Vdd+0.3", и не превышать. А лучше бы все ж поставить преобразователь...

спасибо за ответ, диоды ставить не хочу, т.к. нужно как минимум три шотки(на вход) три резистора на выход + 3 диода на кламп(ограничение) в таком случае проще какой-то НТС поставить.

хотел три токоогранечительных на CS, MOSI, SCK и через шоттки с MISO, GDO0, GDO2 и подпереть пуллапами на атмеге.
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Mar 5 2009, 03:58
Сообщение #200


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Господа, а я видел где-то в даташите строку про входы что-то вроде "inputs are not 5v tolerance". Так что я бы не стал рисковать.
Go to the top of the page
 
+Quote Post
Methane
сообщение Mar 5 2009, 08:33
Сообщение #201


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(andrikk @ Mar 5 2009, 01:43) *
спасибо за ответ, диоды ставить не хочу, т.к. нужно как минимум три шотки(на вход) три резистора на выход + 3 диода на кламп(ограничение) в таком случае проще какой-то НТС поставить.

хотел три токоогранечительных на CS, MOSI, SCK и через шоттки с MISO, GDO0, GDO2 и подпереть пуллапами на атмеге.


Мне почему-то кажется, что диодов, там не может не быть. Главное чтобы оно от 5в входа не запиталось.
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Mar 5 2009, 15:14
Сообщение #202


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



ладно, если я возьму кварц на 30ppm точности и 30 ppm стабильности - работать будет? В чем по сравнению с 10 ppm я проиграю? Если будет шире полоса, то буду ловить помехи с сосединих каналов?
Go to the top of the page
 
+Quote Post
Methane
сообщение Mar 5 2009, 15:43
Сообщение #203


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Зверюга @ Mar 5 2009, 17:14) *
ладно, если я возьму кварц на 30ppm точности и 30 ppm стабильности - работать будет? В чем по сравнению с 10 ppm я проиграю? Если будет шире полоса, то буду ловить помехи с сосединих каналов?

По идее - да. Или чувствительность упадет (если полосу зажать), или помехи ловить будет (если полосу расширить).
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Mar 5 2009, 16:05
Сообщение #204


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Таки просветите неграмотного:
- узкая полоса нужна в таких-то и такиих-то ситуациях, ее плюсы, ее минусы.
- широкая полоса нужна в таких-то и такиих-то ситуациях, ее плюсы, ее минусы.
Go to the top of the page
 
+Quote Post
andrikk
сообщение Mar 5 2009, 16:21
Сообщение #205


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167



Цитата(Зверюга @ Mar 5 2009, 17:14) *
ладно, если я возьму кварц на 30ppm точности и 30 ppm стабильности - работать будет? В чем по сравнению с 10 ppm я проиграю? Если будет шире полоса, то буду ловить помехи с сосединих каналов?


собирали на обычных HC49-SMD кварцах, 26MHz, работает вроде нормально на 250 kbps с включенным FEC, пробивает через две Ж/Б стены, уровень -80dBm.
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Mar 5 2009, 16:36
Сообщение #206


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



А параметры у этих кварцев какие были?
Go to the top of the page
 
+Quote Post
Methane
сообщение Mar 5 2009, 16:59
Сообщение #207


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Что-то я торможу.


инициализировали как в инструкции итд.


Код
cc2500WriteReg(CCxxx0_MCSM1, (0x03<<4) | (0x03<<2) | (0x03<<0));// Сказал переключаться в RX всегда после приема или после передачи.

while(1)
{

  status = cc2500TxStatus();

  switch (status & CC2500_STATE_BM)
  {
  case CC2500_STATE_TX_UNDERFLOW_BM:
  cc2500Strobe(CCxxx0_SFTX);
  LED_On(1<<2);
  break;

  case CC2500_STATE_RX_OVERFLOW_BM:
  cc2500Strobe(CCxxx0_SFRX);
  LED_On(1<<3);
  break;
  }
// Сказал чтобы в случае чего, флушило очереди.

  cc2500WriteBurstReg(CCxxx0_TXFIFO, strTX, sizeof(strTX)); // записал данные в фифо (30 байт где-то)
  cc2500Strobe(CCxxx0_STX); // запустил передатчик.
  if ( xSemaphoreTake( xSemaphore, 1000 ) == pdTRUE) // ждем спада GDO0 там прерывание итд.
          {
            LED_On(LED_TX);
            if ( xSemaphoreTake( xSemaphore, 1000 ) == pdTRUE) // автоматически перешли в прием, получаем данные.
              {
                LED_On(LED_RX);
                packetLength = cc2500ReadReg(CCxxx0_RXFIFO);
                cc2500ReadBurstReg(CCxxx0_RXFIFO, strRX, packetLength);
                cc2500ReadBurstReg(CCxxx0_RXFIFO, statRX, 2);
                
              }
            else
              {
                LED_Off(LED_RX);
              }
          }
        else
          {
            LED_Off(LED_TX);
          }
  
}


Вот такая система. Запускается. И даже работает некоторое время (сильно не устойчиво). Но через некоторое время впадает в какой-то ступор, на GDO0 никакой реакции, хоть в SPI оно пытается послать. CCxxx0_STX итд. Как можно узнать в какой ступор оно впало, и как его из этого ступора извлечь?

Сообщение отредактировал Methane - Mar 5 2009, 17:14
Go to the top of the page
 
+Quote Post
andrikk
сообщение Mar 5 2009, 18:05
Сообщение #208


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167



Цитата(Зверюга @ Mar 5 2009, 18:36) *
А параметры у этих кварцев какие были?

30 ppm вроде как.
разброс в несущих есть, я частоты програмно калибрую.
Go to the top of the page
 
+Quote Post
Methane
сообщение Mar 5 2009, 18:09
Сообщение #209


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(andrikk @ Mar 5 2009, 20:05) *
30 ppm вроде как.
разброс в несущих есть, я частоты програмно калибрую.

Контролируя частотомером выход GDO0?
Go to the top of the page
 
+Quote Post
andrikk
сообщение Mar 5 2009, 18:55
Сообщение #210


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167



Цитата(Methane @ Mar 5 2009, 20:09) *
Контролируя частотомером выход GDO0?

нет,
GDO0 настроен как -Asserts when RX FIFO is filled at or above the RX FIFO threshold or the end of packet is
reached. De-asserts when the RX FIFO is empty.
GDO2 - low when receive is active
трансивер всегда находится в режиме приема, для передачи используется CCA.

настроил так, что бы лишний раз не дергать статус по SPI, так как в этом случае падает чувствительность приемника.

калибрую - мастер в непрерывной передаче пакета, а клиент пытается принять пакеты и перестраивает синтезатор на дельту, нахожу Fmin и Fmax, при которых пакеты нормально принимаются. результат Fcal = (Fmin + Fmax) /2


Цитата(Methane @ Mar 5 2009, 18:59) *
Что-то я торможу.


инициализировали как в инструкции итд.


Код
cc2500WriteReg(CCxxx0_MCSM1, (0x03<<4) | (0x03<<2) | (0x03<<0));// Сказал переключаться в RX всегда после приема или после передачи.

while(1)
{

  status = cc2500TxStatus();

  switch (status & CC2500_STATE_BM)
  {
  case CC2500_STATE_TX_UNDERFLOW_BM:
  cc2500Strobe(CCxxx0_SFTX);
  LED_On(1<<2);
  break;

  case CC2500_STATE_RX_OVERFLOW_BM:
  cc2500Strobe(CCxxx0_SFRX);
  LED_On(1<<3);
  break;
  }
// Сказал чтобы в случае чего, флушило очереди.

  cc2500WriteBurstReg(CCxxx0_TXFIFO, strTX, sizeof(strTX)); // записал данные в фифо (30 байт где-то)
  cc2500Strobe(CCxxx0_STX); // запустил передатчик.
  if ( xSemaphoreTake( xSemaphore, 1000 ) == pdTRUE) // ждем спада GDO0 там прерывание итд.
          {
            LED_On(LED_TX);
            if ( xSemaphoreTake( xSemaphore, 1000 ) == pdTRUE) // автоматически перешли в прием, получаем данные.
              {
                LED_On(LED_RX);
                packetLength = cc2500ReadReg(CCxxx0_RXFIFO);
                cc2500ReadBurstReg(CCxxx0_RXFIFO, strRX, packetLength);
                cc2500ReadBurstReg(CCxxx0_RXFIFO, statRX, 2);
                
              }
            else
              {
                LED_Off(LED_RX);
              }
          }
        else
          {
            LED_Off(LED_TX);
          }
  
}


Вот такая система. Запускается. И даже работает некоторое время (сильно не устойчиво). Но через некоторое время впадает в какой-то ступор, на GDO0 никакой реакции, хоть в SPI оно пытается послать. CCxxx0_STX итд. Как можно узнать в какой ступор оно впало, и как его из этого ступора извлечь?

мои насторойки модема
0x16, 0x07, //[MCSM2]
0x17, 0x3F, //[MCSM1] TX on CCA; Stay in Rx after Rx and Tx
0x18, 0x18, //[MCSM0] automaticaly calibrate when going from idle to rx/tx

и все работает.

как Вы статус вычитываете? нужно так:
Код
  ret = cc_strobe(CC2500_SNOP);
  while((chk = cc_strobe(CC2500_SNOP)) != ret) //wait untilwe read the same value twice - cxx00 bug
  {
    ret = chk;
  }


строб STX в режиме CCA начинает передачу только, если канал чист иначе трансивер остается в режиме приема.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:39
Рейтинг@Mail.ru


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