架构师_程序员_码农网

U Pridobitev gesla
Registracija

QQ登录

Samo en korak za začetek

Iskanje
Pogled:5250|Odgovor: 0
打印 上一主题 下一主题

[转]Zigbee之旅(五):几个重要的CC2430基础实验--Serijska komunikacija

[Kopiraj povezavo]
D 跳转到指定楼层
lastnika stavbe
发表于 2014-10-30 23:18:18|只看该作者回帖奖励|Odvratnobrskanje|Način branja
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; &nbsp
; //izberite UART0 kot izbirni položaj ena, to je RXD na P0.2, TXD na P0.3 P0SEL |=0x0C; &nbsp

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 &nbsp



; 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 poskusov

Najprej dokončajte strojno povezavo in odprite zaporedna vrata

.

2011022316522615.jpg
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

.

2011022316560420.jpg
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 "

2011022316581688.jpg
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:

2011022317013210.jpg
g

Samo pričakovano vsebino "Hello Zigbee!" zdaj!

Za konec tega poskusa ~

III. Zaključek

Ta č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.






Prejšnja: [Ponovitev] Zigbee potovanje (4): nekaj pomembnih osnovnih poskusov CC2430 - prekinitev časovnika
Naslednja: [Ponovno]Zigbee potovanje (VI): Nekaj pomembnih osnovnih poskusov CC2430 - ADC enojno vzorčenje
Koda Kmetijsko omrežje, objavljena le v praksi, naleteli na tehnične težave, ne zavajajte drugih.
Preden lahko objavite nazaj, se morate prijaviti Prijava | Registracija

T a različica integralnih pravil


IZJAVA: Vsa programska oprema, programsko gradivo ali članki, ki jih je objavil Code Farmer, so omejeni samo na uporabo v učne in raziskovalne namene; zgoraj navedene vsebine se ne smejo uporabljati v komercialne ali nezakonite namene, sicer vse posledice nosijo uporabniki sami. To spletno mesto informacije iz omrežja, avtorske pravice spor nima nobene zveze s tem spletnim mestom. Zgornjo vsebino morate v celoti odstraniti iz računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljšo pristno storitev. Če pride do kakršne koli kršitve, se obrnite na nas po elektronski pošti, da jo obravnavamo.

Pošta To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:51

Hitri odgovoriNazaj na vrhNazaj na seznam