| I. Prevzemanje bremen V brezžičnem senzorskem omrežju mora CC2430 poslati zbrane podatke gostiteljskemu računalniku (tj. osebnemu računalniku) v obdelavo, hkrati pa mora gostiteljski računalnik poslati CC2430 nadzorne informacije. Vse to je neločljivo povezano s prenosom informacij med njima. V tem razdelku bomo izvedeli, kako izvajati serijsko komunikacijo med osebnim računalnikom in CC2430. CC2430 vključuje dva vmesnika za serijsko komunikacijo USART0 in USART1, vsak serijski vhod vključuje dva načina: UART (asinhroni način), SPI (sinhroni način), to poglavje obravnava samo način UART). Drugič, eksperiment s komunikacijo prek serijskih vrat(1) Uvod v eksperiment Izvedite komunikacijo med razvojno ploščo in osebnim računalnikom: osebni računalnik pošlje določen niz CC2430, CC2430 pa po prejemu vrne ta niz osebnemu računalniku. (2) Priprava poskusa Preden začnete pisati kodo, morate nastaviti strojne zmogljivosti: pravilno povezavo + namestitev gonilnika USB na serijski vmesnik. Strojna povezava potrebuje dve strojni opremi: JTAG vrata razvojne plošče CC2430 → razhroščevalnik → vrata USB računalnika (za razhroščevanje in prenos programa) serijska vrata razvojne plošče CC2430 → vrata USB računalnika (za podatkovno komunikacijo med računalnikom in CC2430) Nato morate namestiti gonilnik USB za serijska vrata ( naslov za prenos) Za pošiljanje podatkov v serijska vrata je potrebno tudi orodje za odpravljanje napak v serijskih vratih ( naslov za prenos). (3) Diagram poteka programa
(4) Izvorna koda eksperimenta in analiza/* Opis eksperimenta: UART0, hitrost prenosa 115200 b/s, računalnik pošlje niz CC2430 (zaključi se z znakom @), CC2430 sprejme in vrne niz*/#include unsigned char recv_buf[ 300 ] = {0};
u nsigned char recv_count = 0;/* inicializacija sistemske ure-------------------------------------------------------*/void xtal_init( void ) { SLEEP & amp;= ~0x04; // oba se vklopitawhile (! (SLEEP & 0x40 )); //kristalni oscilator vklopljen in stabilen CLKCON &=~0x47; &
nbsp; //izberite 32MHz kristalni oscilator SLEEP |=0x04; }/*Inicializacija komunikacije UART0-------------------------------------------------------*/void Uart0Init(
u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01;   ; //izberite UART0 kot izbirni položaj ena, to je RXD na P0.2, TXD na P0.3 P0SEL |=0x0C;  
nbsp; //Inicializirajte vrata UART0, nastavite P0.2 in P0.3 kot vrata IO zunanje naprave U0CSR =0xC0; //Nastavite na vrata UART0.
nbsp; //Nastavite način UART in omogočite sprejemnik U0GCR = 11; U0BAUD = 216; & nbsp;//Nastavite vrata UART0, nastavite P0.2 in P0.3 kot vrata IO zunanje naprave. nbsp; //Nastavite hitrost prenosa UART0 na 115200b/s, zakaj 216 in 11, si lahko preberete v kitajskem priročniku CC2430  
; U0UCR |= StopBits|Parity; //Nastavite StopBits in pariteto }/*UART0 pošilja podatke----------------------------------------
- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); // Počakajte, da je UART med pošiljanjem podatkov v mirovanju &
nbsp;U0DBUF = data; }/*UART0SendString-------------------------------------------------------*/void Uart0SendString( unsigned char *s) { & nbsp;while (*s !
= 0 ) //pošiljanje vsakega znaka v nizu s po vrsti Uart0Send(*s++); }/*UART0 sprejema podatke-----------------------------------
- -------------------*/unsigned char Uart0Receive( void ) {unsigned char data;while (!
( U0CSR&0x04 )); //izvedi, ali so podatki prejeti, sicer nadaljuj s čakanjem data=U0DBUF;//izvedi prejete podatkereturn data;&
nbsp; }/* glavna funkcija-------------------------------------------------------*/void main( void ) {
u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //inicializacija UART0, nastavi 1 stop bit, brez paritete & nbsp;Uart0SendString("Prosimo Vnesite niz, ki se konča z '@'!
& quot;); recv_count =0;while( 1) {while ( 1) &
nbsp; { b = Uart0Receive() ;UARTif (b== '@' ) break; //Če je prejet '@', skočite iz
z anke, izpišite niz recv_buf[recv_count] = b;//Če ni '@', nadaljujte z dodajanjem znakov v znakovno polje recv_buf[] &
nbsp; recv_count++; }for ( i=0; i<recv_count; i++)="" [colour="rgb(0," 136,=&
q uot;" 0)] ="" izhodni niz[="" i][="" color] Uart0Send(recv_buf); Uart0SendString ( ""); recv_count=0; &
n bsp; //reset } } }Najprej konfigurirajte vhodno-izhodna vrata, ki ustrezajo USART0: nastavite UART0 na izbirni položaj 1 tako, da PECFRG.0 izčistite na nič, tj. RXD ustreza P0.2 in TXD ustreza P0.3. Nato konfigurirajte P0.2 in P0.3 kot vhodno-izhodne vhode zunanje naprave. UART in omogočite sprejemnik. Nato konfigurirajte parametre USART0: hitrost prenosa 115200, brez paritete, stop bit 1. Nato pošljite niz v računalnik: Please Input string ended with '@'! , nato pa z ukazom while(1) poskuša pridobiti vsak znak, ki ga prejme. Ko ta znak ni '@', to pomeni, da vnos še ni končan, in nadaljuje z dodajanjem tega znaka v polje znakov recv_buf; ko je ta znak točno '@', to pomeni, da je vnos končan, in zato skoči iz zanke, da pošlje vsak znak v recv_buf v PC po vrstnem redu in hkrati ponastavi recv_count. (5) Rezultati poskusovNajprej dokončajte strojno povezavo in odprite zaporedna vrata .
o rodje za odpravljanje napak, nastavite naslednje parametre:
Kliknite "Open Serial Port", nato zaženite odpravljanje napak IAR, omogočite zagon programa, ugotovili boste, da se bo odpravljalnik napak za serijska vrata zagnal .
V ideli boste, da se v polju za sprejem v orodju za odpravljanje napak v serijskem programu pojavi pričakovani niz:
Nato v besedilno polje za pošiljanje na dnu orodja za odpravljanje napak v serijskem programu vnesite "
H ello", kot sledi:
Ko kliknete "Send", se boste morda vprašali, zakaj CC2430 ne vrne vašega sporočila . Ko kliknete "Pošlji", se morda sprašujete, zakaj CC2430 ne vrne tistega, kar ste vnesli, to pa zato, ker sporočila niste končali z @. Še enkrat vnesite "Zigbee!@" in kliknite "Pošlji", rezultat bo naslednji:
g
Samo pričakovano vsebino "Hello Zigbee!" zdaj! Za konec tega poskusa ~ III. ZaključekTa članek predstavlja razvojno ploščo CC2430 in komunikacijo z gostiteljskim računalnikom. Z osnovo serijske komunikacije se v naslednjem razdelku združimo, da se naučimo ADC (analogno-digitalno pretvorbo) enkratnega vzorčenja. Z uporabo ADC lahko zberemo vrednost temperaturnega senzorja na razvojni plošči in pošljemo vrednost temperature prek zaporednih vrat v računalnik, da jo prikažemo.
|