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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Мои мучения с CC2500
Alexashka
сообщение Jun 13 2009, 16:14
Сообщение #16


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



А частотомера нет?
Вобщем Вы меряете 135? кГц частоту, при этом частота дискретизации осциллографа - 200кГц. В этом случае должны получится биения с частотой 200-135 = 65кГц, что вобщемто выходит по делениям как Вы ниже написали.
Если возможно -увеличте коэф.деления чтобы было хотябы кГц 20-40
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 13 2009, 16:48
Сообщение #17


Гуру
******

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



192 - максимальный коэффициент деления.
Впрочем, я не вижу причин для того чтобы с GDO шел неправильный сигнал. Номинал кварца подходящий, неисправность? это какая должна быть неисправность в кварце, чтобы ровно в два раза занижать частоту?
ЧТо касается работы чипа - регистр я читал, он соответствует делителю 192, значит чип настроен правиольно. Да и тесты проходит. Ладно, буду дальше ковыряться.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 18 2009, 17:43
Сообщение #18


Гуру
******

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



rx3apf
Цитата
Похоже, "не то" читается. Читаем правильно, бурстовым чтением ? В любом случае, доставать RSSI и LQI из регистров статуса не очень удобно, гораздо проще включить APPEND_STATUS и получать эти байты вместе с принятым пакетом...


А у меня специальная функция (не я автор) чтения статусных регнистров. О различиях судите сами:

Код
void TI_CC_SPIReadBurstReg(char addr, char *buffer, char count)
{
  char i;
  cs=0;
  while (miso);
  TI_CC_SPI_bitbang_out(addr | TI_CCxxx0_READ_BURST);    // Send address
  for (i = 0; i < count; i++){
    buffer[i] = TI_CC_SPI_bitbang_in();// Read data
    }    
  cs=1;                                   // /CS disable
  }

char TI_CC_SPIReadStatus(char addr)
{
  char x;

  cs=0;
  while (miso);                           // Wait CCxxxx ready                                   // /CS enable
  TI_CC_SPI_bitbang_out(addr | TI_CCxxx0_READ_BURST);      // Send address
  x = TI_CC_SPI_bitbang_in();               // Read data
  cs=1;                                   // /CS disable
  return x;
}



УДАЛОСЬ ОСУЩЕСТВИТЬ СЕАНС СВЯЗИ!!!

Выставил мощность по максимуму, дальность не очень - за одной жб стеной уже нет связи.

Пока удалось просто включить передатчик на передачу одного байта. ПРиемник поймал GDO0.
LQI теперь всегда 0, RSSI - 190-210 (в десятичном формате) , но вот только дальность на значение мало влияет.

Да... а вот RXBYTES у меня 0... буду разбираться с настройками. Автор в регистр PKTLEN записал 0xFF Это как, ведь размер буфера всего 64 байт?

Сообщение отредактировал zheka - Jun 18 2009, 17:45
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 19 2009, 15:54
Сообщение #19


Гуру
******

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



Господа, не опустошается буфер FIFO при передаче. ПРиемник постоянно обнаруживает несущую, контролирую через пин GDO2, пин GDO0 настроенный как "Asserts when sync word has been sent / received, and de-asserts at the end of the packet. In RX, the pin will de-assert when the optional address check fails or the RX FIFO overflows. In TX the pin will de-assert if the TX FIFO underflows." тоже моргает как надо. То есть при передаче что-то хватает из воздуха, однако RXBYTES все время равно нулю.

Вот код, когда я пошагово контроллирую с выводом на экран:

Код
if (MODE==TRANSMITTER)    // ДЛЯ ПЕРЕДАЮЩЕГО МОДУЛЯ
  {
  


       while (1)
       {      
         for (i=0;i<64;i++) { RF_TX_Buffer[i]=0x3E;}          //Загоняем данные в переменную
        
         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES);          // Выводим на экран количество байт в FIFO
          lcd_setxy(10,60);
          lcd_str_fl("FIFO BEFORE WRITE ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    
        
         TI_CC_SPIWriteBurstReg(TI_CCxxx0_TXFIFO, RF_TX_Buffer, 64); //  Заполняем  FIFO

         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES);         // Выводим на экран количество байт в FIFO
          lcd_setxy(10,45);
          lcd_str_fl("FIFO BEFORE TX ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    

         TI_CC_SPIStrobe(TI_CCxxx0_STX);         // Включаем передачу

        while (gdo0==1)
         {
         }

         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES);     // Выводим на экран количество байт в FIFO
          lcd_setxy(10,30);
          lcd_str_fl("FIFO AFTER TX ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    


        TI_CC_SPIStrobe(TI_CCxxx0_SFTX);              // опустошаем FIFO


         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES); // Выводим на экран количество байт в FIFO
          lcd_setxy(10,15);
          lcd_str_fl("FIFO AFTER FLUSH ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    

       }  
    
   }


Результаты:

BEFORE WRITE 0
BEFORE TX 64
AFTER TX 64
AFTER FLUSH 0

Ргеистры у меня такие:
Код
TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL1,0x0c);
TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL0,0x00);
TI_CC_SPIWriteReg(TI_CCxxx0_FREQ2,0x5B);
TI_CC_SPIWriteReg(TI_CCxxx0_FREQ1,0xFB);
TI_CC_SPIWriteReg(TI_CCxxx0_FREQ0,0x04);//04 rx    7c jeep
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG4,0x2d);
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG3,0x36);
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG2,0x73);
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG1,0xc2);
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG0,0xEF);
TI_CC_SPIWriteReg(TI_CCxxx0_CHANNR,0x00);
TI_CC_SPIWriteReg(TI_CCxxx0_DEVIATN,0x01);
TI_CC_SPIWriteReg(TI_CCxxx0_FREND1,0x56);
TI_CC_SPIWriteReg(TI_CCxxx0_FREND0,0x10);
TI_CC_SPIWriteReg(TI_CCxxx0_MCSM2,0x07);
TI_CC_SPIWriteReg(TI_CCxxx0_MCSM1,0x3c);//30
TI_CC_SPIWriteReg(TI_CCxxx0_MCSM0,0x18);
TI_CC_SPIWriteReg(TI_CCxxx0_FOCCFG,0x15);
TI_CC_SPIWriteReg(TI_CCxxx0_BSCFG,0x6C);
TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL2,0xc3);
TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL1,0x00);
TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL0,0x91);
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL3,0xea);
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL2,0x0A);
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL1,0x00);
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL0,0x11);
TI_CC_SPIWriteReg(TI_CCxxx0_FSTEST,0x59);
TI_CC_SPIWriteReg(TI_CCxxx0_TEST2,0x8f);
TI_CC_SPIWriteReg(TI_CCxxx0_TEST1,0x21);
TI_CC_SPIWriteReg(TI_CCxxx0_TEST0,0x0B);
TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG2,0x0E);
TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG0,0x06);
TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL1,0x0d);//05
TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL0,0x05);
TI_CC_SPIWriteReg(TI_CCxxx0_ADDR,0x01);
TI_CC_SPIWriteReg(TI_CCxxx0_PKTLEN,0xff);
TI_CC_SPIWriteReg(TI_CCxxx0_FIFOTHR,0x07);



Что делать и кто виноват?
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 20 2009, 02:57
Сообщение #20


Гуру
******

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



Тихо сам с собою я веду беседу...

ДОбавил задержку в 2 мс после строба включения передачи. ВРоде бы буфер опустошается. Но почему то до единицы. Ноль только после специального строба. Но все равно на приемнике ничего не читается. хотя GDO0 сначала включается, а потом выключается. О чем это говорит? Могу ли я быть уверенным, что подстройки частоты не требуется?

Плюс непонятки с RSSI он у меня всегда в районе 210, изменяясь в пределах 10, независимо от того, включен передатчик или нет.

Вот полный код:

Код
#include <mega32.h>
#include <delay.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <disp.h>
#include <spi.h>

void putchar(char c);
unsigned int Clc_tim0=0;
unsigned int Clc_tim0_timout=0;
bit Clc_tim0_timout_b=0;
unsigned char RF_RX_Buffer[64];
unsigned char RF_TX_Buffer[64];

unsigned char LQI,RSSI;
bit RF_TX_b=0;//1-ïåðåäà÷à
bit RF_RX_b=0;//1-ïðèåì
bit RF_TX_END_b=0;//1-ïåðåäà÷à èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ êîíöà îïåðàöèè
bit RF_RX_END_b=0;//1-ïðèåì    èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ êîíöà îïåðàöèè
bit RXD_timer=0;// óñòàíàâëèâàåòñÿ êîãäà íóæíî çàáèðàòü äàííûå èç áóôåðà ÷òåíèÿ ïîðòà 10ms

#define  SPIF    7
#define  SPI2X   1  

#define  SPR0    0  
#define  SPR1    1  
#define  SPHA    2  
#define  SPOL    3  
#define  MSTR    4  
#define  DORD    5  
#define  SPE     6  
#define  SPIE    7  

#define  TRANSMITTER    1  
#define  RECIEVER    0

  
#include "TI_CC_spi.h"
#include "TI_CC_spi.c"
                          
char str, sTEMP, sRSSI, sLQI, sRXBYTES;
u08 variable;  
ui16 textcolor;    // color of text
ui16 backcolor;    // color of background

ui16 varvar;  

void lcd_print_regs()
{
sTEMP=TI_CC_SPIReadStatus(TI_CCxxx0_RSSI);      

if (sTEMP!=sRSSI)
{

lcd_setxy(10,75);
lcd_str_fl("RSSI ",f8x14, textcolor);    
lcd_str_ram(sRSSI,f8x14, textcolor);    
sRSSI=sTEMP;
}

sTEMP=TI_CC_SPIReadStatus(TI_CCxxx0_LQI);      
  if (sTEMP!=sLQI)
   {
    lcd_setxy(10,90);
    lcd_str_fl("LQI ",f8x14, textcolor);    
    lcd_str_ram(sTEMP,f8x14, textcolor);    
    sLQI=sTEMP;
   }

sTEMP=TI_CC_SPIReadStatus(TI_CCxxx0_RXBYTES);
  if (sTEMP!=sRXBYTES)      
    {
      lcd_setxy(10,60);
      lcd_str_fl("RXBYTES ",f8x14, textcolor);    
      lcd_str_ram(sTEMP,f8x14, textcolor);    
     sRXBYTES=sTEMP;
    }  
}

void main(void)
{
int MODE;
int x=10;
int result, i;
long int count=0;
backcolor=0xBDF7;
textcolor=blue;


DDRA.0=1;
DDRA.1=1;
PORTA.0=1;
PORTA.1=1;

PORTB.6=0;                                    
DDRB.2=1;
DDRD.3=0;                            

lcd_init();
lcd_clr();        
fill_screen(0xbdf7);
lcd_setxy(10,120);
lcd_str_fl("StartUp CC2500...",f8x14, textcolor);    


      TI_CC_SPISetup();                         // Initialize SPI port
      TI_CC_PowerupResetCCxxxx();               // Reset CCxxxx


str=TI_CC_SPIReadReg(TI_CCxxx0_IOCFG0 );      


lcd_setxy(10,105);
lcd_str_fl("GDO0 ",f8x14, textcolor);    
lcd_str_ram(str,f8x14, textcolor);    


       writeRFSettings();                        // Write RF settings to config reg
       TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE,paTable,paTableLen );//Write PATABLE  
       TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
       TI_CC_SPIStrobe(TI_CCxxx0_SFRX);
       TI_CC_SPIStrobe(TI_CCxxx0_SFTX);

MODE=TRANSMITTER;

if (MODE==RECIEVER) // ÄËß ÏÐÈÅÌÍÎÃÎ ÌÎÄÓËß
  {

  

    TI_CC_SPIStrobe(TI_CCxxx0_SRX);
    while (gdo0==0)
     {
     }

     while (gdo0==1)
     {
      }


      
         while(1) lcd_print_regs();
}

// -----------------------------------------------------------


if (MODE==TRANSMITTER)    // ÄËß ÏÅÐÅÄÀÞÙÅÃÎ ÌÎÄÓËß
  {
  


       while (1)
       {      
         for (i=0;i<64;i++) { RF_TX_Buffer[i]=0x3E;}          //Çàãîíÿåì äàííûå â ïåðåìåííóþ áóôåðà    
        
         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES);          // Âûâîäèì íà ýêðàí êîëè÷åñòâî áàéò â FIFO
          lcd_setxy(10,60);
          lcd_str_fl("BEFORE WRITE ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    
        
         TI_CC_SPIWriteBurstReg(TI_CCxxx0_TXFIFO, RF_TX_Buffer, 64); //  Çàïîëíÿåì  FIFO

         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES);         // Âûâîäèì íà ýêðàí êîëè÷åñòâî áàéò â FIFO
          lcd_setxy(10,45);
          lcd_str_fl("BEFORE TX ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    


         TI_CC_SPIStrobe(TI_CCxxx0_STX);         // Âêëþ÷àåì ïåðåäà÷ó
         delay_ms(2);

        while (gdo0==0)
         {
         }

        while (gdo0==1)
         {
         }


         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES);     // Âûâîäèì íà ýêðàí êîëè÷åñòâî áàéò â FIFO
          lcd_setxy(10,30);
          lcd_str_fl("AFTER TX ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    

       TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
        TI_CC_SPIStrobe(TI_CCxxx0_SFTX);              // îïóñòîøàåì FIFO


         str=TI_CC_SPIReadStatus(TI_CCxxx0_TXBYTES);
          lcd_setxy(10,15);
          lcd_str_fl("AFTER FLUSH ",f8x14, textcolor);    
          lcd_str_ram(str,f8x14, textcolor);    

       }  
    
   }



}
Go to the top of the page
 
+Quote Post
woodman
сообщение Jun 20 2009, 08:10
Сообщение #21


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 30-05-05
Пользователь №: 5 537



Цитата(zheka @ Jun 20 2009, 05:57) *
Тихо сам с собою я веду беседу...

}[/code]

Спасибо, порадовали.
Напомнили анекдот про девушку и парня в лифте, короче в конце она ему посоветовала делать Это "тихо сам с собою..".
bb-offtopic.gif
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Jun 20 2009, 09:03
Сообщение #22


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



Цитата(zheka @ Jun 19 2009, 19:54) *
Что делать и кто виноват?

Может быть Вам для начала прочитать внимательно datasheet на приемопередатчик. Или если лень, то почему бы не взять готовые экзамплы где уже сделана и работает передача и прием. А убедившись что она работает у Вас в железе, -уже менять чтото, но опять же - для этого нужно хорошо представлять логику работы конечно автомата приемопередатчика.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 20 2009, 14:51
Сообщение #23


Гуру
******

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



Цитата
Может быть Вам для начала прочитать внимательно datasheet на приемопередатчик. Или если лень, то почему бы не взять готовые экзамплы где уже сделана и работает передача и прием.


А в чем проблема то? Я взял готовый проект. Функции чтения и записи регистров у меня оттуда.
Отличие в том, что в нем контроллер mega88 и используется USART. А у меня mega32 и LCD индикатор. ДОбуквенно повторить не удастся в любом случае, как считаете?

В последнее время неоднократно убеждался, что если отылают читать даташит, значит сам не знают ответа на вопрос. Я думаю, что моя проблема решаема беглым взглядом и небольшим советом опытного человека, чем чтением китайской грамоты на 100 страницах, наверное для того и создан форум, не так ли?

КРоме того, в соседней теме неоднократно говорилось о том что документация на чип оставляет желать лучшего.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 21 2009, 12:51
Сообщение #24


Гуру
******

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



ДОбавил после приема синхрослова и далее приема пакета задержку в 2 мс - приемник стал ловить байты по 65 штук. CRC в порядке.

Байты те самые, что присылал. Наконец-то!

Почему RSSI и LQI читаемые через статус отличаются от тех, что пишутся в пакет?

Сообщение отредактировал zheka - Jun 21 2009, 12:55
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Jun 21 2009, 22:52
Сообщение #25


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



Цитата(zheka @ Jun 20 2009, 18:51) *
А в чем проблема то? Я взял готовый проект. Функции чтения и записи регистров у меня оттуда.
Отличие в том, что в нем контроллер mega88 и используется USART. А у меня mega32 и LCD индикатор. ДОбуквенно повторить не удастся в любом случае, как считаете?

В последнее время неоднократно убеждался, что если отылают читать даташит, значит сам не знают ответа на вопрос. Я думаю, что моя проблема решаема беглым взглядом и небольшим советом опытного человека, чем чтением китайской грамоты на 100 страницах, наверное для того и создан форум, не так ли?

КРоме того, в соседней теме неоднократно говорилось о том что документация на чип оставляет желать лучшего.


1. Добуквенно может и не получится, но покрайней мере в моем случае (я работал с двумя приемопередатчиками вплотную и еще с двумя менее плотно) запуск и работа приемопередатчика по примерам проходила без проблем, если инициализация самого контроллера была сделана корректно.
2. Ваш СС2500 я не знаю (различия в этом приемопередатчике и тех что мне довелось использовать весьма велико), а логика работы с тем или иным чипом очень разница, поэтому "беглый взгляд" на Вашу программу мне ничего не говорит. Опытный человек не всегда есть под рукой, и вообще может я не прав, но я привык читать "китайскую грамоту" если чтото не работает, а не заниматься шаманством с вставлянием задержек "авось заработает?" в разные места программы. smile.gif Но это чисто ИМХО как говорится, больше не навязываюсь, удачи...
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 22 2009, 02:32
Сообщение #26


Гуру
******

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



Вы вообще мои сообщения читаете?
Я написал, что взял готовый проект, инициализация, общение с регистрами и отправка взяты оттуда ДОБУКВЕННО. И все работает. ПРоблема возникла с приемом. И даже если взять готовую функцию, она начинается с проверки RXBYTES, которая у меня и без этой оригинальной функции не работает. А помогли действительно задержки.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 28 2009, 17:51
Сообщение #27


Гуру
******

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



Я так и не понял, почему длина пакета может быть больше длины буфера? Как с буфером в 64 байта передаются пакеты длиной в 200 с чем-то байт?
Go to the top of the page
 
+Quote Post
Sergei_B
сообщение Jun 29 2009, 10:10
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 17-04-06
Пользователь №: 16 200



Цитата(zheka @ Jun 28 2009, 21:51) *
Я так и не понял, почему длина пакета может быть больше длины буфера? Как с буфером в 64 байта передаются пакеты длиной в 200 с чем-то байт?

Пакет же не мгновенно передаётся по каналу связи. По мере передачи и опустошения буфера подкачивай данные да и всё. А примет столько, сколько указал байтов.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jun 29 2009, 13:07
Сообщение #29


Гуру
******

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



Насколько я понял, длина пакета - это вещь аппаратная. Так я после сказанного Вами что-то не вижу этой аппаратности. Если я должен вручную подкачивать в буфер, следить за этим, в чем тогда фишка? Я с тем же успехом могу и 1000 байт передать по 64 штуки.
Ладно, установил я длину 256 байт, откуда мне их читать на стороне приема? ОГбычно данные берутся из буфера, который равен 64 байтам.
Go to the top of the page
 
+Quote Post
Sergei_B
сообщение Jun 30 2009, 03:28
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 17-04-06
Пользователь №: 16 200



Цитата(zheka @ Jun 29 2009, 17:07) *
Насколько я понял, длина пакета - это вещь аппаратная. Так я после сказанного Вами что-то не вижу этой аппаратности. Если я должен вручную подкачивать в буфер, следить за этим, в чем тогда фишка? Я с тем же успехом могу и 1000 байт передать по 64 штуки.
Ладно, установил я длину 256 байт, откуда мне их читать на стороне приема? ОГбычно данные берутся из буфера, который равен 64 байтам.

Аппаратно формируется заголовок и рассчитывается CRC - в этом и фишка. А читать так же как и передавать. Да, есть механизм формирования пакета и произвольной длины, но лично я, не сторонник передачи длинных пакетов. Короткие пакеты легче без ошибки передать, а при ошибке передать пакет повторно. Много данных всегда передаю разбивая их на пакеты небольшой длины и контролирую целостность последовательности их передачи/приёма.
Go to the top of the page
 
+Quote Post

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

 


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


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