Łącze radiowe w paśmie 2,4 GHz
Piątek, 01 Październik 2010
Do niedawna wykorzystywanie
łączy radiowych było
możliwe po uzyskaniu
niezbędnych zezwoleń
na używanie nadajników
radiowych. Wydzielenie
pasm nielicencjonowanych
i ograniczenie mocy
promieniowania nadajników
umożliwiło swobodne korzystanie
z połączenia radiowego. Dlatego
jest to jeden z segmentów
elektroniki, który przeżywa
bardzo burzliwy rozwój.
88 ELEKTRONIKA PRAKTYCZNA 10/2010
NOTATNIK KONSTRUKTORA
Połączenie bezprzewodowe jest nie tylko
?wygodne? w użyciu, ale stało się też ?mod-
ne?. Dzisiaj wielu internautów nie wyobraża
sobie połączenia komputera z Internetem
inaczej, niż poprzez bezprzewodowy inter-
fejs WiFi, a połączenia telefonu komórkowego
z zestawem słuchawkowym, zewnętrznym
odbiornikiem GPS, komputerem lub innym
telefonem, za pomocą interfejsu Bluetooth.
W nowoczesnych łączach radiowych
jest stosowane pasmo wielkiej częstotliwości
(kilka GHz), a nadajniki wypromieniowują
bardzo małą moc. Oprócz typowo radiowych
parametrów, standard definiuje szereg pro-
tokołów sieciowych, ujętych w model war-
stwowy. Zapewnia to dużą elastyczność przy
łączeniu różnych urządzeń, ale wymaga od
konstruktora użycia albo specjalizowanych
modułów ze sprzętową realizacją niezbęd-
nych protokołów, albo zastosowania mikro-
kontrolerów o odpowiednio dużych zaso-
bach, aby można było zaimplementować te
protokoły programowo.
W praktyce zazwyczaj potrzebujemy
łącza radiowego dla konkretnej aplikacji
niewymagającej użycia wszystkich proto-
kołów. Nie jest więc istotna, zapewniona
przez standard transmisji, kompatybilność
z innymi urządzeniami. Inaczej mówiąc ?
potrzebujemy prostego, pewnego, taniego
rozwiązania, zapewniającego łącze punkt-
punkt. W takich sytuacjach warto rozważyć
zastosowanie modułu radiowego TLX2401
pracującego w paśmie 2,4 GHz. Jego budowę
oparto o układ nRF2401 produkcji Nordic
Semiconductor.
Przy przesyłaniu danych łączem radio-
wym należy zastosować modulację analo-
Łącze radiowe w paśmie
2,4 GHz
Do niedawna wykorzystywanie
łączy radiowych było
możliwe po uzyskaniu
niezbędnych zezwoleń
na używanie nadajników
radiowych. Wydzielenie
pasm nielicencjonowanych
i ograniczenie mocy
promieniowania nadajników
umożliwiło swobodne korzystanie
z połączenia radiowego. Dlatego
jest to jeden z segmentów
elektroniki, który przeżywa
bardzo burzliwy rozwój.
gowego sygnału nośnej. Od rodzaju i para-
metrów tej modulacji oraz szerokości kana-
łu zależy szybkość transmisji. W układzie
nRF2401 zastosowano modulację GFSK.
Dzięki temu uzyskano stosunkowo dużą
prędkość transmisji ? do 1 Mbit/s.
Całe dostępne pasmo radiowe podzie-
lono na 125 kanałów. Tak duża liczba kana-
łów pozwala na bezproblemową pracę wie-
lu urządzeń zlokalizowanych blisko siebie.
Zmiana kanału następuje w czasie krótszym
niż 200 ms.
Oprócz kompletnej części radiowej, wy-
magającej tylko kilku zewnętrznych elemen-
tów, układ wyposażono w bloki logiczne:
sterowania oraz 3-przewodowy interfejs sze-
Rysunek 1. Schemat blokowy układu nRF2401 z elementami zewnętrznymi
89ELEKTRONIKA PRAKTYCZNA 10/2010
Łącze radiowe w paśmie 2,4 GHz
wyłączyć zerując bit CRC_EN w rejestrze
konfiguracyjnym. Następnie po wyzerowa-
niu poziomu na wejściu CE, logika sterująca
nadajnikiem dodaje do pakietu preambu-
łę, włącza nadajnik i wysyła pakiet danych
z prędkością 1 Mbps lub 250 kbps (do wy-
boru). W porównaniu z tradycyjną metodą
transmisji ciągłej, powoduje to znaczną re-
dukcję poboru energii. Na rysunku 5 poka-
zano schemat czynnościowy procesu wysy-
łania danych.
Dane te mogą być prawidłowo odebrane
przez inny układ nRF2401 również pracują-
cy w trybie ShockBurst. Odbiornik jest ak-
tywowany przez ustawienie sygnału CE. Po
czasie 200 mk od ustawienia CE zaczyna on
nasłuchiwać na zaprogramowanym kanale.
W przychodzących danych są sprawdzane
adres, obecność i wartość CRC. Jeżeli ode-
brane dane są prawidłowe, czyli pakiet jest
opatrzony prawidłowym adresem i ma pra-
widłową wartość CRC, to są z niego usuwane
dane nadmiarowe, aby do odbiorcy dotarło
tylko pole danych (PAYLOAD). Gotowość da-
nych do odbioru jest sygnalizowana pozio-
mem wysokim na wyprowadzeniu DR1.
Mikrokontroler może odczytać dane
z wewnętrznego bufora FIFO z dowolną
prędkością. W czasie odczytu, jeżeli nie spo-
dziewamy się odbioru kolejnych danych,
można wyłączyć układ odbiornika przez
wyzerowanie poziomu CE. Po odczytaniu
wszystkich danych DR1 zmienia poziom na
niski. Schemat blokowy poszczególnych faz
odbioru danych w trybie ShockBurst pokaza-
no na rysunku 6.
Tryb bezpośredni
W trybie bezpośrednim nRF2401 pracu-
je jak klasyczny układ nadawczo-odbiorczy.
Dane mogą być przesyłane z maksymalną
prędkością 1 Mbps ?200 ppm lub 250 kbps
?200 ppm, zależną od wprowadzonych na-
staw. Prędkość transmisji odpowiada pręd-
kości przesyłania interfejsu szeregowego.
W tym trybie nadawanie rozpoczyna się
po ustawieniu linii CE. Po upływie 200 ms,
mikrokontroler może rozpocząć transmisję
do nRF2401. Uwaga: nadajnik może prze-
ponieważ nRF2401 może być zasilany typo-
wym napięciem +3,3 V. Pobór prądu zależy
od tego czy układ nadaje (ok. 10,5 mA), czy
odbiera (ok. 18 mA). Niski pobór prądu i ni-
skie napięcie zasilania sprawiają, że układ
może być z powodzeniem zasilany z baterii.
W tabeli 1 zamieszczono najważniejsze pa-
rametry układu nRF2401.
Chociaż układ nRF2401 nie wymaga wie-
lu elementów zewnętrznych, to ze względu
na bardzo duże częstotliwości jego użycie
wymaga sporego doświadczenia. Producent
w nocie katalogowej umieścił przykłady apli-
kacji łącznie z projektami PCB. Jednak dla ko-
goś nawet te informacje mogą okazać się nie-
wystarczające. W takiej sytuacji najlepiej jest
skorzystać z gotowego minimodułu TLX2401
produkowanego przez polską firmę eMOD.
Moduł ma wymiary 29×16,5 mm (foto-
grafia 2). Na płytce jest umieszczony scalony
generator 16 MHz, antena nadawczo/odbior-
cza i pozostałe elementy niezbędne do pra-
widłowej pracy. Linie zasilania i wszystkie
sygnałowe niezbędne do połączenia modułu
z mikrokontrolerem zostały wyprowadzone
na dwurzędowe złącze goldpin (rysunek 3).
Tryb ShockBurst
W trybie ShockBurst (rysunek 4) dane
są gromadzone w buforze o pojemności 256
bitów. Wielkość bufora musi wystarczyć na
przetrzymanie pól: adresu odbiorcy, danych
i sumy kontrolnej. Za odpowiednią wielkość
pakietu odpowiada mikrokontroler nadrzęd-
ny. Suma kontrolna CRC ma długość 8 lub
16 bitów (do wyboru) i może być wyliczana
przez nRF2401. Funkcję tę można również
regowy. Bloki sterowania mają wbudowane
mechanizmy detekcji adresu i generowania
wartości wielomianu kontrolnego CRC. Poza
tym, można programować dwa tryby trans-
misji danych: bezpośredni i ShockBurst. Jest
też możliwość odbierania jednocześnie da-
nych z dwóch kanałów radiowych (oddalo-
nych od siebie o min. 8 MHz). Firma nazwała
to rozwiązanie DuoCeiver. W tym celu układ
wyposażono w dwa niezależne interfejsy
szeregowe (rysunek 1).
Układ przeznaczony do nowoczesnych
urządzeń mikroprocesorowych powinien
być zasilany niskim napięciem i pobierać
tak mało prądu, jak to tylko możliwe. Na-
pięcie zasilania nRF2401 jest z przedziału
1,9...3,6 V. Wyraźnie sugeruje to przezna-
czenie do zasilania z baterii. Jest korzystne,
Tabela 1. Podstawowe parametry układu nRF2401
Parametr Wartość Jednostka
Minimalne napięcie zasilania 1,90 V
Maksymalna moc wyjściowa 0 dBm
Maksymalna prędkość przesyłu danych 1000 kbps
Pobór prądu
? nadawanie z PWY
= ?5 dBm
? odbiór
10,5
18,0
mA
mA
Zakres temperatury ?40 do +85 °C
Czułość -90 dBm
Pobór prądu w trybie Power Down 400 nA
Fotografia 2. Moduł TLX2401
Rysunek 3. Wyprowadzenia modułu
TLX2401
Opis Funkcja
GND
+3V
Masa zasilania
Zasilanie +1,9...+3,5 V
PWR_UP Tryb uśpienia (0-uśpienie, 1-praca)
CE
Chip Enable, włączenie trybu Rx
lub Tx
DR2
Dane z kanału gotowe do odczytu
(tylko w trybie ShockBurst)
CLK2 Wejście/wyjście zegara dla kanału 2
DOUT2 Dane wyjściowe z kanału 2
CS
DR1
Chip Select 1- włączenie trybu
konfigurowania układu
Dane z kanału 1 gotowe do odczy-
tu (tylko w trybie ShockBurst)
CLK1
DATA
Wejście/wyjście zegara dla kanału 1
(tylko w trybie ShockBurst)
Dane wyjściowe z kanału 1/dane
wejściowe nadajnika
Rysunek 4. Tryb ShockBurst
90 ELEKTRONIKA PRAKTYCZNA 10/2010
NOTATNIK KONSTRUKTORA
słać pakiet o maksymalnym czasie trwania
wynoszącym 4 ms. W tym trybie nie ma
wsparcia kontroli adresu, CRC i dodawania
preambuły. Wszystkie te elementy powinny
być zaimplementowane w oprogramowaniu
sterującym.
Większy problem sprawia odbiór. Po
ustawieniu linii CE, jeżeli odbiornik odbiera
prawidłowo zmodulowaną nośną, to na jego
wyjściu danych pojawia się sygnał. Program
mikrokontrolera odbiorcy musi wyszukać
z tych danych preambułę. Dopiero po ode-
braniu preambuły, demodulator jest w stanie
odtwarzać z sygnału dane i sygnał zegara.
Jedynym sensownym zastosowaniem
trybu bezpośredniego jest konieczność prze-
syłania długich pakietów (do 4000 bitów)
z prędkością 1 Mbps lub innych z niewielką
prędkością, na przykład z powodu dużych
zakłóceń w paśmie 2,4 GHz.
Strukturę typowego pakietu transmito-
wanego przez nRF2401 pokazano na rysun-
ku 6.
Konfigurowanie układu
Wszystkie funkcje nRF2401 są konfigu-
rowane przez nastawy rejestru kontrolne-
go. Rejestr ma długość 15 bajtów dla trybu
ShockBurst i 2 bajtów dla trybu bezpośred-
niego.
Słowo konfigurujące trybu ShockBurst
jest dzielone na sekcje:
? długość pola danych. Określa liczbę bi-
tów w polu danych użytkownika (PAY-
LOAD). Jeżeli jest zdefiniowane oblicza-
nie CRC, to rozmiar pola danych razem
z bitami CRC i długością pola adresu nie
może przekroczyć 256 bitów (rysunek 6),
? długość adresu odbiorcy,
? adres odbiorcy,
? blokowanie/odblokowanie obliczania
CRC przez układ nRF2401.
W trybie bezpośrednim są używane 2
pierwsze bajty słowa konfigurującego.
W tabeli 2 zamieszczono opis nastaw
bitów słowa konfigurującego dla obu trybów.
Przykłady wykorzystania
TLX2401
Do praktycznych prób łącza radiowego
w paśmie 2,4 GHz wykorzystano dwa modu-
ły TLX2401 sterowane przez mikrokontrole-
ry z płytek ewaluacyjnych ZL1ARM z mikro-
kontrolerami LPC2114 (ARM7). Jeden z ze-
stawów nazwałem umownie ?nadajnikiem?,
a drugi ?odbiornikiem?.
Na listingu 1 pokazano podprogram wysy-
łania danych, łącznie z makrami manipulacji
poziomami linii: danych i zegarowej. Na listin-
gu 2 zamieszczono funkcję odbioru danych.
Ponieważ dla kanału pierwszego linia danych
jest dwukierunkowa, to przed wywołaniem
funkcji nadawania lub odbioru, należy określić
kierunek transmisji przez linię portu. Funkcję
odpowiedzialną za to zawiera listing 3.
Tabela 2. Nastawy rejestru konfigurującego układu nRF2401
Tryb Pozycja
Liczba
bitów
Nazwa funkcja
Tylko
Shock-
Burst
143:120 24 TEST Zarezerwowane
119:112 8 DATA2_W Długość pola danych (PAYLOAD) odbiornika 2
111:104 8 DATA1_W Długość pola danych (PAYLOAD) odbiornika 1
103:64 40 ADDR2 Adres odbiorcy kanału 2 (maks. 5 bajtów)
63:24 40 ADDR1 Adres odbiorcy kanału 1 (maks. 5 bajtów)
23:18 6 ADDR_W Liczba bitów adresu dla obu kanałów
17 1 CRC_L
CRC 8 lub 16 bitów
(0=8 bitów, 1=16 bitów)
16 1 CRC_EN
Zezwolenie na obliczanie CRC
(0=obliczanie CRC zabronione, 1=obliczanie CRC dozwo-
lone)
Shock-
Burst
i tryb
bezpo-
średni
15 1 RX2_EN Włączanie trybu DuoCeiver (1=właczony, 0=wyłączony)
14 1 CM
Wybór ShockBurst/tryb bezpośredni
(0=tryb bezpośredni, 1=ShockBurst)
13 1 RFDR_SB
Maksymalna prędkość transmisji
(0=256 kbps, czułość odbiornika lepsza o 10 dB,
1=1 Mbps, wymaga XO_F=16 MHz)
12:10 3 XO_F
Nastawa częstotliwości kwarcu podłączonego do nRF2401
(000=4 MHz, 001=8 MHz, 010=12 MHz, 011=16 MHz,
100=20 MHz)
9:8 2 RF_PWR
Ustawienie mocy wyjściowej
(00= -20 dBm, 01= -10 dBm, 10= -5 dBm,
11=0 dBm)
7:1 7 RF_CH Określanie numeru kanału
0 1 RX_EN Wybór nadawanie (RX_EN=0)/odbiór (RX_EN=1)
Rysunek 5. Wysyłanie danych ShockBurst
91ELEKTRONIKA PRAKTYCZNA 10/2010
Łącze radiowe w paśmie 2,4 GHz
Rysunek 6. Odbiór danych w trybie ShockBurst
Przed wysyłaniem i odbiorem danych
trzeba do układu nRF2401 wysłać słowo
konfigurujące. W testach używano trybu
ShockBurst z prędkością 250 kbps i dla po-
równania ? 1 Mbps. W przygotowanym pro-
gramie słowo konfigurujące jest zapisywane
w tablicy INIT_nRF[] (listing 4).
Bufory odbiornika mają długość 6 baj-
tów. Razem z 5 bajtami pola adresu daje to
88 bitów odbieranych w trybie ShockBurst.
Ponieważ będziemy używali tylko jednego
kanału odbiorczego (DuoCeiver jest wyłą-
czony), to adres kanału drugiego nie ma zna-
czenia. W polu adresu kanału pierwszego
wpisujemy 5-bajtowy adres, który musi być
Listing 1. Funkcja wysyłająca bajt przez SPI do nRF2401
//makra manipulacji stanami linii interfejsu SPI
#define DATA_1 {IOSET0|=DATA; delay1();}
#define DATA_0 {IOCLR0|=DATA; delay1();}
#define CLK1_1 {IOSET0|=CLK1; delay1();}
#define CLK1_0 {IOCLR0|=CLK1; delay1();}
//procedura wysyłania danych
void SendSPI(unsigned char data){
char i;
CLK1_0
for(i=0;i<8;i++)
{
if(data&0x80) DATA_1 else DATA_0
CLK1_1
data<<=1;
CLK1_0
}
}
Listing 2. Funkcja odbierająca bajt przez SPI z nRF2401
unsigned char RecSPI(void){
char i;
unsigned char data=0;
CLK1_0
for(i=0;i<8;i++)
{
data=data<<1;
CLK1_1 CLK1_1
if(test_DATA1()==1) data|=1;
CLK1_0 CLK1_0
}
return(data);
}
Listing 3. Ustalanie kierunku linii danych mikrokontrolera
void DATA_in(void)
{IODIR0 = 0x0FDE0000;}//linia danych wejściowa
void DATA_out(void)
{IODIR0 = 0x0FDF0000;}//linia danych wyjściowa
Listing 4. Bufor ze słowem konfiguracyjnym
const unsigned char INIT_nRF[]={
48, //rozmiar bufora odbiornika kanalu 2
48, //rozmiar bufora odbiornika kanalu 1
0x02, //adres kanału 2
0xaa, 0xaa, 0x55, 0x55,
0xa2, //adres kanału 1
0x23, 0x88, 0x17, 0x6c,
0xA0, //40 bitów pola adresu, 8 bit CRC, bez CRC
0x4f, //moc 00dBm, Fxtal 16MHz, jeden kanał odbiornika,
tryb Shock Burst, 250kBps
0x07, //kanał 3, tryb RX
};
Rysunek 7. Struktura typowego pakietu
przesyłanego przez nRF2401
Preambuła
(pre-amble)
Pole preambuły jest wymagane
w obu trybach transmisji.
W ShockBurst dodawane auto-
matycznie w nadajniku i usu-
wane w odbiorniku. W trybie
bezpośrednim preambuła zależy
od wartości pierwszego bitu
pola danych
Preambuła:
= 01010101 dla pierwszego
bitu 1
= 10101010 dla pierwszego
bitu 0
W tym trybie preambuła jest
widoczna w polu danych.
Adres
(address)
Adres (numer) odbiorcy. W try-
bie ShockBurst ma programowa-
ną długość: od 8 do 40 bitów.
W trybie bezpośrednim adres
odbiorcy powinien być genero-
wany przez mikrokontroler.
Dane
(payload)
Pole danych użytkownika
W trybie ShockBurst całkowita
długość pola danych wynosi
256 bitów minus długość adresu
(8 do 40 bitów) i opcjonalnej
sumy CRC (8 lub 16 bitów)
W trybie bezpośrednim długość
pola danych zależy od pręd-
kości transmisji, bo nadajnik
może pracować przez 4 ms.
Dla 1 Mbps można przesłać
4000 bitów
CRC
Opcjonalne pole sumy kontrolnej
w trybie ShockBurst, nieużywa-
ne w trybie bezpośrednim
Preambuła Adres Dane CRC
92 ELEKTRONIKA PRAKTYCZNA 10/2010
NOTATNIK KONSTRUKTORA
Listing 6. Funkcja inicjalizacji
//inicjalizacja nRF2401
void InitnRF(void){
char i;
CE_0 //CE=0, RX
CS_1 //CS=1, konfiguracja układu
for(i=0;i<15;i++) SendSPI(INIT_
nRF[i]);
CS_0
DATA_0
}
Listing 7. Ustawienie nadawania ?
włączony nadajnik
//ustawienie bitu kierunku
transmisji -> Rx
void Rx_mode(void){
CE_0; //Rx
CS_1 //konfiguracja
DATA_1 //tryb Rx
CLK1_1 //tick zegara
CLK1_1
CLK1_0
CS_0
CE_1
}
Listing 8. Ustawienie odbioru ?
włączony odbiornik
//ustawienie bitu kierunku
transmisji -> Tx
void Tx_mode(void){
CE_0; //Tx
CS_1 //konfiguracja
DATA_0 //tryb Tx
CLK1_1 //tick zegara
CLK1_1
CLK1_0
CS_0
CE_1
}
Listing 9. Podprogram nadawania danych
//wysłanie danej do nRF2401
void SendnRF(unsigned char ld){
char i;
unsigned short int crc;
DATA_out(); // wyjściowa linia danych
buf_tx[0]=ADDR_SLAVE[0];//0xa1;
buf_tx[1]=ADDR_SLAVE[1];//0x23; //bajty adresu modułu odb.
buf_tx[2]=ADDR_SLAVE[2];//0x88;
buf_tx[3]=ADDR_SLAVE[3];//0x17;
buf_tx[4]=ADDR_SLAVE[4];//0x6c;
buf_tx[5]=ld;
for(i=6;i<5+ld;i++)
buf_tx[i]=buf_snd_data[i-6];
crc=CRC(ld,buf_tx+5); //wyliczenie CRC
buf_tx[i++]=crc>>8;
buf_tx[i]=crc;
CS_0
CE_1
for(i=0;i>8)^zfcs));
fcs=((pomfcs&0xff00)^(fcs<<8))|(pomfcs&0x00ff);
}
fcs=(fcs^0xffff);
return (fcs);
}
przesyłany w odebranym pakiecie w polu
ADDR. Długość tego pola jest w następnym
bajcie ustawiana na wartość na 40 bitów.
Funkcja obliczenia CRC jest wyłączona.
Tu należy się wyjaśnienie. W tego typu
transmisjach CRC jest niezbędne. Wyłączono
tę funkcję, ponieważ trakcie wielu prób, gdy
obliczanie CRC przez nRF2401 było włączo-
ne w formatach 8- lub 16 bitowym, nie udało
prawidłowo przesłać pakietu danych. Być
może był popełniany jakiś błąd, a może jest
jakaś nieścisłość w dokumentacji dostarcza-
nej przez producenta. Bez CRC transmisja
radiowa jest trudna do zaakceptowania i dla-
tego użyto sprawdzonej procedury obliczają-
cej 16-bitowe CRC na podstawie wielomianu
G(x)=x^16+x^15+x^2+1. Przy wylicza-
niu stosowano tablicowane współczynniki
16-bitowe. Dzięki temu podprogram obli-
czający jest prosty i co ważne - wykonuje się
szybko (listing 5).
Następny bajt określa moc wyjściową,
częstotliwość taktowania nRF2401, tryb pra-
cy i maksymalną prędkość transmisji. Próby
transmisji przeprowadzano z różnymi moca-
mi. Przy odległościach rzędu 1...2 m trans-
misja z najniższą mocą i 250 kbps działa bez
problemów. Docelowo została ustawiono
najwyższa moc, a częstotliwość taktowania
ustawiono na 16 MHz, bo taką częstotliwość
ma scalony generator zamontowany na płyt-
ce modułu TLX2401. Prędkość transmisji
ustawiono na 250 kbps. Układ był mniej
wrażliwy na zakłócenia i miał większą czu-
łość. W ostatnim bajcie ustawiono kanał
trzeci i tryb odbioru danych.
Stosując moduły TLX2401 moc trzeba
dobrać mając na uwadze wymagania apli-
kacji: odległość pomiędzy nadajnikiem i od-
biornikiem, poziom szumów tła, wielkość
przesyłanych pakietów danych itp.
Słowo konfigurujące jest wpisywane po-
przez umieszczoną na listingu 6 funkcję Ini-
tRF(). Układ wpisuje dane z interfejsu SPI do
rejestru konfigurującego, gdy linia CS jest na
poziomie wysokim, a linia CE niskim.
Aby ustawić układ w trybie nada-
wania lub odbioru, co może się zdarzać
w trakcie pracy, trzeba przeprogramowy-
wać tylko najmłodszy bit słowa konfigu-
rującego (tabela 2). Bloki kontroli nastaw
nRF2401 są tak skonstruowane, że można
wpisywać do nich niepełną liczbę bitów,
w tym również tylko jeden bit. Funkcje
pokazane na listingach 7 i 8 wykorzy-
stują tę właściwość i przeprogramowują
kierunek przesyłania danych przez układ
nadawczo-odbiorczy, wpisując do rejestru
konfigurującego tylko jeden, ostatni bit.
Wskutego tego przełączanie nadawanie-
odbiór jest wykonywane tak szybko, jak to
możliwe.
93ELEKTRONIKA PRAKTYCZNA 10/2010
Łącze radiowe w paśmie 2,4 GHz
Listing 11. Pętla testowania przesyłania danych
InitnRF(); //wyślij sekwencję inicjalizacji
CE_1 //aktywacja odbioru
while(1){
Tx_mode();
SendnRF(25); //wyślij dane
delay_ms(1); //opcjonalnie
Rx_mode();
if(RecnRF()==0) //czekaj na dane do odbioru {
LED_1
delay_ms(20);
LED_0
} else {
LED1_1
delay_ms(20);
LED1_0
}
}
while(1);
Listing 10. Podprogram odbioru danych
//odbiór danych z nRF
char RecnRF(void){
char i;
unsigned char ld;
unsigned short crcr,crc;
for(i=0;i
Zobacz więcej w kategorii Notatnik konstruktora