架构师_程序员_码农网

B Hent adgangskode
Tilmeld dig

QQ登录

Kun ét skridt for at komme i gang

Søg
架构师_程序员_码农网 "架构' 管理专区&Management Area ' Klager og forslag ' Papirkurv ' 【转】Zigbee之旅(五):A få vigtige CC2430 grundlæggende eksperimenter- ... - ...
View:5250|Reply: 0
打印 上一主题 下一主题

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

[Kopier link]
L 跳转到指定楼层
ejeren af bygningen
2014-10-30 23:18:18|只看该作者回帖奖励|ReverseBrowse|Read Mode
I. At tage slæbet op

  I et trådløst sensornetværk skal CC2430 sende de indsamlede data til værtscomputeren (dvs. pc'en) til behandling, og samtidig skal værtscomputeren sende kontroloplysninger til CC2430. Alt dette er uadskilleligt fra informationsoverførslen mellem de to. I dette afsnit lærer vi, hvordan man implementerer seriel kommunikation mellem pc og CC2430.

  CC2430 indeholder to serielle kommunikationsgrænseflader USART0 og USART1, hver seriel port indeholder to tilstande: UART (asynkron) tilstand, SPI (synkron) tilstand, dette afsnit dækker kun UART-tilstanden).

For det andet, kommunikationseksperimentet med den serielle port(1) Introduktion tileksperimentet

  Opnå kommunikationen mellem udviklingskortet og pc'en: Pc'en sender en bestemt streng til CC2430, og CC2430 returnerer denne streng til pc'en efter at have modtaget den.

(2) Forberedelse af eksperimentet

  Før du begynder at skrive koden, skal du konfigurere hardwarefaciliteterne: den korrekte forbindelse + installere USB til seriel-driveren.

  Der er brug for to hardwareforbindelser:

     JTAG-port på CC2430-udviklingskortet → debugger → pc'ens USB-port (til debugging og download af programmet)

     CC2430-udviklingskortets serielle port → pc'ens USB-port (til datakommunikation mellem pc og CC2430)

  Derefter skal du installere driveren til USB til seriel port ( downloadadresse )

  For at kunne sende data til den serielle port er der også brug for et debugging-værktøj til den serielle port ( download-adresse ).

(3) Flowdiagram for programmet







(
4) Eksperimentkildekode og analyse/* Eksperimentbeskrivelse: UART0, baud rate 115200bps, PC sender en streng til CC2430 (slutter med @-tegn), CC2430 modtager og returnerer strengen*/#include unsigned char recv_buf[ 300 ] = {0};







u nsigned char recv_count = 0;/* initialisering af systemur-------------------------------------------------------*/void xtal_init( void ) { SLEEP &
amp;= ~0x04; // begge tænderwhile (!
(SLEEP & 0x40 )); //krystaloscillator tændt og stabil CLKCON &=~0x47; &





nbsp; //vælg 32MHz krystaloscillator SLEEP |=0x04; }/*UART0-kommunikationsinitialisering-------------------------------------------------------*/void Uart0Init(

u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01; &nbsp
; //Vælg UART0 som valgfri position et, det vil sige RXD til P0.2, TXD til P0.3 P0SEL |=0x0C; &nbsp

nbsp; //Initialiser UART0-port, indstil P0.2 og P0.3 som IO-port for ekstern enhedU0CSR = 0xC0;   //Sæt til UART0-port.


nbsp; //Sæt UART-tilstand og aktiver modtager U0GCR = 11; U0BAUD = 216; & nbsp;//Sæt UART0-port, sæt P0.2 og P0.3 som ekstern enheds IO-port.

nbsp; //Sæt UART0 baud rate til 115200bps, hvorfor 216 og 11, kan du læse i den kinesiske manual til CC2430 &nbsp



; U0UCR |= StopBits|Parity; //Sæt StopBits og Parity }/*UART0 sender data----------------------------------------



- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); //Vent på, at UART er inaktiv, mens der sendes data &






nbsp;U0DBUF = data; }/*UART0SendString-------------------------------------------------------*/void Uart0SendString( unsigned char *s) { & nbsp;while (*s !




= 0 ) //Send hvert tegn i streng s efter turU art0Send (*s++); }/*UART0 accepterer data-----------------------------------



- -------------------*/unsigned char Uart0Receive( void ) {unsigned char data;while (!

( U0CSR&0x04 )); //forespørg om data er modtaget, ellers fortsæt med at vente data=U0DBUF;//udtræk modtagne datareturn data;&






nbsp; }/* hovedfunktion-------------------------------------------------------*/void main( void ) {




u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //initialiser UART0, indstil 1 stopbit, ingen paritet & nbsp;Uart0SendString("Indtast venligst en streng, der slutter med '@'!





& quot;); recv_count =0;while( 1 ) {while ( 1 ) &

nbsp; { b = Uart0Receive()
;UARTif (b== '@' ) break; //Hvis '@' er modtaget, spring ud af løkken


l oop, output string recv_buf[recv_count] = b;//Hvis ikke '@', fortsæt med at tilføje tegn til tegnarray recv_buf[] &

nbsp; recv_count++; }for ( i=0; i<recv_count; i++)="" [color="rgb(0," 136,=&


q uot;" 0)] ="" output string[="" i][="" colour] Uart0Send(recv_buf);
Uart0SendString (""); recv_count=0; &


n bsp; //reset } }

Konfigurer

først I/O-porten svarende til USART0: Sæt UART0 til valgfri position 1 ved at rydde PECFRG.0 til nul, dvs. at RXD svarer til P0.2 og TXD svarer til P0.3. Konfigurer derefter P0.2 og P0.3 som eksterne enheds-I/O'er.

Vælg derefter UART-tilstand og aktiver modtageren.

Konfigurer derefter parametrene for USART0: baud rate 115200, ingen paritet, stopbit 1.

Send derefter en streng til pc'en: Please Input string ended with '@'! , og så bruger den while(1) til at blive ved med at prøve at få alle de tegn, den modtager.

Når dette tegn ikke er '@', betyder det, at input endnu ikke er færdigt, og fortsætter med at tilføje dette tegn til tegnarrayet recv_buf; når dette tegn er nøjagtigt '@', betyder det, at input er færdigt, og hopper derfor ud af løkken for at sende hvert tegn i recv_buf til pc'en i rækkefølge og samtidig nulstille recv_count.

(5) Eksperimentelle resultater

For det første skal du afslutte hardwareforbindelsen og åbne den serielle port

.

2011022316522615.jpg

I

AR

debugging tool, configure the parameters as follows:

Click "Open Serial Port", then start IAR debugging, let the program run

, you will find that the serial port

debugger

will

run

.

2011022316560420.jpg
D

u vil se den forventede streng blive vist i modtagelsesboksen på det serielle fejlfindingsværktøj:

Indtast derefter "" i send-tekstboksen nederst på det serielle fejlfindingsværktøj.

2011022316581688.jpg
H

ello" på følgende måde:

Efter at have klikket på "Send

undrer du dig måske over, hvorfor

CC2430 ikke returnerer din besked

. Når du har klikket på "Send", undrer du dig måske over, hvorfor CC2430 ikke returnerer det, du har skrevet, det er fordi, du ikke afsluttede beskeden med @.

  

Lad os skrive "Zigbee!@" igen og klikke på "Send", så bliver resultatet som følger:

2011022317013210.jpg
g

Bare det forventede indhold "Hej Zigbee!" nu!

Til slutningen af dette eksperiment ~

III. Konklusion

Denne artikel introducerer CC2430-udviklingskortet og værtscomputerens kommunikation. Med udgangspunkt i seriel kommunikation samles vi i næste afsnit for at lære ADC (analog-til-digital konvertering) enkelt sampling. Ved hjælp af ADC kan vi indsamle værdien af temperatursensoren på udviklingskortet og sende temperaturværdien via den serielle port til pc'en for at vise den.






Forrige: [Gentag] Zigbee-rejse (4): et par vigtige CC2430-grundeksperimenter - timerafbrydelse
Næste: [Gentag] Zigbee-rejse (VI): Et par vigtige CC2430-grundeksperimenter - ADC single sampling
Kode Farmer netværk, kun offentliggjort i løbet af praksis, stødt på tekniske vanskeligheder, ikke vildlede andre.
Du skal logge ind, før du kan skrive igen Log ind | Registrer dig

D enne version af de integrerede regler


DISCLAIMER: Al software, programmeringsmateriale eller artikler udgivet af Code Farmer er begrænset til kun at blive brugt til lærings- og forskningsformål; ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal alle konsekvenser bæres af brugerne selv. Denne webstedsinformation fra netværket, copyright-tvist har intet at gøre med dette websted. Du skal fjerne ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, bedes du støtte den ægte software, købe registreringen og få bedre ægte service. Hvis der sker en krænkelse, bedes du kontakte os via e-mail for at håndtere det.

Mail To:help@itsvse.com

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

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

Hurtigt svarTilbage til toppenTilbage til listen