| 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;   ; //Vælg UART0 som valgfri position et, det vil sige RXD til P0.2, TXD til P0.3 P0SEL |=0x0C;  
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  
; 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 resultaterFor det første skal du afslutte hardwareforbindelsen og åbne den serielle port .
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 .
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.
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:
g
Bare det forventede indhold "Hej Zigbee!" nu! Til slutningen af dette eksperiment ~ III. KonklusionDenne 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.
|