Odbiór pakietów testowych (Zybo+CC1000)

W laboratorium działa nadajnik wzorcowy, który co 1 sekundę wysyła pakiety o następującej strukturze danych: 

  • 96 bitów preambuły
  • SFD: Start of Frame Delimiter: 0xE39B
  • SIZ: Packet Size (8 bitów) – rozmiar pakietu (w bajtach), razem z nagłówkiem, ale bez SDF.
  • DST: Destination Address (8 bitów) – adres węzła docelowego lub 255 (= broadcast).
  • SRC: Source Address (8 bitów) – adres węzła nadającego dane (0=węzeł wzorcowy).
  • TYP: Data Type (8 bitów) – typ danych – do dowolnego wykorzystania.
  • INF: Node informations (8 bitów) – informacje o węźle nadającym dane – do dowolnego wykorzystania.
  • AUX: : Auxiliary Data (8 bitów) – do dowolnego wykorzystania.
  • SEQ: Sequence Number (8 bitów) – kolejny numer nadanego pakietu.
  • CRC: Suma kontrolna CRC8 całego pakietu (bez preambuły i SFD).
  • DATA: Dane o długości (SIZ-7) x 8 bitów.

Należy napisać oprogramowanie, które umożliwi ciągły odbiór pakietów nadawanych przez węzeł wzorcowy. Na konsoli systemu (port RS232) należy wyświetlić wartości wszystkich pól odbieranych pakietów wraz z danymi. Do sygnalizacji faktu odbioru danych można wykorzystać diodę LED.

Przydatne funkcje (szczegóły w plikach źródłowych bloku IP core oraz sterowników):

Inicjalizacja transceivera:

void Init_CC1000(void)

Włączenie trybu odbioru danych

void TurnOn_RX(void)

Czekanie na odebrane dane (flaga RXTX_RX_DONE świadczy o odebraniu pakietu):

while(!(Rd_CC1000_Status() & RXTX_RX_DONE_MASK)) {}

Odczytanie 4 bajtów odebranych danych z FIFO odbiornika:

int Rd_CC1000_Data(uint32_t* dataFromCC100)

Funkcja zwraca: 0=OK, -1=timeout.

Należy odczytać pierwsze słowo (4 bajty) z FIFO odbiornika, aby odczytać warość polia SIZ (długość pakietu). Następnie należy dokonać odpowiedniej liczby (zależnej od SIZ) kolejnych odczytów po 4 bajty.

Obliczenie sumy kontrolnej:

Xuint8 GenerateCRC8(Xuint8 *Buf, Xuint8 Size)

Sprawdzanie poprawności CRC odebranego pakietu:

  • zapamiętanie CRC z odebranego pakietu do zmiennej tymczasowej;
  • wyzerować CRC w odebranym pakiecie;
  • obliczyć CRC odebranego pakietu;
  • porównać obliczone CRC z zapamiętaną wartością CRC, która przyszła w pakiecie.

Opracował: dr hab. inż. M. Wójcikowski, 2020 r.

Współpraca: mgr inż. B. Durski