架构师_程序员_码农网

B Hent passord
Registrer deg

QQ登录

Bare ett steg for å komme i gang

Søk i
架构师_程序员_码农网 "架构' 管理专区&Management Area ' Klager og forslag ' Papirkurv ' 【转】Zigbee之旅(五) : Noen viktige CC2430 grunnleggende eksperimenter- ... - ...
Vis:5250|Svar: 0
打印 上一主题 下一主题

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

[Kopier lenke]
L 跳转到指定楼层
eieren av bygningen
2014-10-30 23:18:18 | 2014-10-30 23:18:18|只看该作者回帖奖励|ReverseBrowse|Lesemodus
I. Å ta opp slakken

  I et trådløst sensornettverk må CC2430 sende de innsamlede dataene til vertsdatamaskinen (dvs. PC-en) for behandling, og samtidig må vertsdatamaskinen sende kontrollinformasjon til CC2430. Alt dette er uatskillelig fra informasjonsoverføringen mellom de to. I dette avsnittet skal vi lære hvordan man implementerer seriell kommunikasjon mellom PC og CC2430.

  CC2430 inkluderer to serielle kommunikasjonsgrensesnitt USART0 og USART1, hver seriell port inkluderer to moduser: UART (asynkron) modus, SPI (synkron) modus, denne delen dekker bare UART-modus).

For det andre, kommunikasjonseksperimentet med seriell port(1) Introduksjon tileksperimentet

  Oppnå kommunikasjonen mellom utviklingskort og PC: PC sender en bestemt streng til CC2430, og CC2430 returnerer denne strengen til PC etter å ha mottatt den.

(2) Forberedelse av eksperimentet

  Før du begynner å skrive koden, må du sette opp maskinvarefasilitetene: riktig tilkobling + installere USB til seriell driver.

  Maskinvaretilkobling trenger to:

     JTAG-port på CC2430-utviklingskortet → debugger → PC-ens USB-port (for feilsøking og nedlasting av programmet)

     CC2430-utviklingskortets serielle port → PC-ens USB-port (for datakommunikasjon mellom PC og CC2430)

  Deretter må du installere driveren for USB til seriell port ( nedlastingsadresse )

  For å sende data til den serielle porten, er det også nødvendig med et feilsøkingsverktøy for seriell port ( nedlastingsadresse ).

(3) Flytdiagram for programmet







(
4) Eksperiment kildekode og analyse/* Eksperimentbeskrivelse: UART0,baudrate 115200bps, PC sender en streng til CC2430 (avsluttes med @-tegn), CC2430 mottar og returnerer strengen*/#include unsigned char recv_buf[ 300 ] = {0};







u nsigned char recv_count = 0;/* initialisering av systemklokke-------------------------------------------------------*/void xtal_init( void ) { SLEEP &
amp;= ~0x04; // begge slås påwhile (!
(SLEEP & 0x40 )); //krystalloscillator på og stabil CLKCON &=~0x47; &





nbsp; //velg 32MHz krystalloscillator SLEEP |=0x04; }/*UART0-kommunikasjonsinitialisering-------------------------------------------------------*/void Uart0Init(

u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01; &nbsp
; //Velg UART0 som valgfri posisjon én, det vil si RXD til P0.2, TXD til P0.3 P0SEL |=0x0C; &nbsp

nbsp; //Initialiser UART0-port, sett P0.2 og P0.3 som IO-port for ekstern enhet U0CSR =0xC0;   //Sett til UART0-port.


nbsp; //Sett UART-modus og aktiver mottaker U0GCR = 11; U0BAUD = 216; & nbsp;//Sett UART0-port, sett P0.2 og P0.3 som ekstern enhet IO-port.

nbsp; / / Sett UART0 baudrate til 115200bps, hvorfor er 216 og 11, kan du se den kinesiske manualen til CC2430 &nbsp



; U0UCR |= StopBits|Parity; //Sett StopBits og Parity }/*UART0 sender data----------------------------------------



- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); //Vent på at UART skal være inaktiv mens du sender data &






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




= 0 ) //Send hvert tegn i streng s i tur og ordenU art0Send (*s++); }/*UART0 aksepterer data-----------------------------------



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

( U0CSR&0x04 ))); //spør om data er mottatt, ellers fortsett å vente data=U0DBUF;//trekk ut mottatte datareturn data;&






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




u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //initialiser UART0, sett 1 stoppbit, ingen paritet & nbsp;Uart0SendString("Vennligst skriv inn streng som slutter med '@'!





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

nbsp; { b = Uart0Receive()
;UARTif (b== '@' ) break; //Hvis '@' mottas, hopp ut av løkken


l økken, skriv ut streng recv_buf[recv_count] = b;//Hvis ikke '@', fortsett å legge til tegn i tegnmatrisen recv_buf[] & nbsp; recv_count

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


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


n bsp; //reset } } }

Konfigurer

først I/O-porten som tilsvarer USART0: Sett UART0 til valgfri posisjon 1 ved å nullstille PECFRG.0, dvs. at RXD tilsvarer P0.2 og TXD tilsvarer P0.3. Konfigurer deretter P0.2 og P0.3 som eksterne enhets-I/O.

Velg deretter UART-modus og aktiver mottakeren.

Konfigurer deretter parametrene til USART0: baudrate 115200, ingen paritet, stoppbit 1.

Send deretter en streng til PC-en: Please Input string ended with '@'! , og deretter bruker den while(1) for å fortsette å prøve å få hvert tegn den mottar.

Når dette tegnet ikke er '@', betyr det at inngangen ennå ikke er ferdig, og fortsetter å legge til dette tegnet i tegnmatrisen recv_buf; når dette tegnet er nøyaktig '@', betyr det at inngangen er ferdig, og hopper derfor ut av løkken for å sende hvert tegn i recv_buf til PC-en i rekkefølge, og samtidig tilbakestille recv_count.

(5) Eksperimentelle resultater

For

det

første, fullfør maskinvaretilkoblingen, og åpne den serielle porten

.

2011022316522615.jpg
f

eilsøkingsverktøyet, konfigurer parametrene som følger:

Klikk på "Åpne seriell port", start deretter IAR-feilsøking, la programmet kjøre,

du vil oppdage at

feilsøkingsprogrammet for

seriell port vil

kjøre

.

2011022316560420.jpg
D

u vil se den forventede strengen vises i mottaksboksen på det serielle feilsøkingsverktøyet:

Deretter skriver du

"" i send-tekstboksen nederst i det serielle feilsøkingsverktøyet.

2011022316581688.jpg
H

allo" på følgende måte:

Etter at du har klikket på "Send"

lurer du kanskje på hvorfor

CC2430 ikke returnerer meldingen din

Etter at du har klikket på "Send", lurer du kanskje på hvorfor CC2430 ikke returnerer det du har skrevet, det er fordi du ikke avsluttet meldingen med @.

  

La oss skrive "Zigbee!@" igjen og klikke på "Send", og resultatet blir som følger:

2011022317013210.jpg
g

Akkurat det forventede innholdet "Hallo Zigbee!" nå!

Til slutten av dette eksperimentet ~

III. konklusjon

Denne artikkelen introduserer CC2430-utviklingskortet og vertsdatamaskinkommunikasjonen. Med grunnlag i seriell kommunikasjon, den neste delen vi kommer sammen for å lære ADC (analog-til-digital konvertering) enkelt prøvetaking. Ved hjelp av ADC kan vi samle inn verdien av temperatursensoren på utviklingskortet og sende temperaturverdien gjennom den serielle porten til PC-en for å vise den.






Forrige: [Gjenta] Zigbee-reise (4): noen få viktige CC2430 grunnleggende eksperimenter - timeravbrudd
Neste: [Re-] Zigbee Journey (VI): Noen få viktige CC2430 grunnleggende eksperimenter - ADC enkelt sampling
Code Farmer nettverk, bare publisert i løpet av praksis, oppstått tekniske vanskeligheter, ikke villede andre.
Du må logge inn før du kan legge inn innlegg igjen Logg inn | Registrer deg

D enne versjonen av de integrerte regleneR


ANSVARSFRASKRIVELSE: All programvare, programmeringsmateriell eller artikler publisert av Code Farmer er begrenset til kun å brukes til lærings- og forskningsformål; innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal alle konsekvensene bæres av brukerne selv. Dette nettstedet informasjon fra nettverket, copyright tvist har ingenting å gjøre med dette nettstedet. Du må fjerne innholdet ovenfor helt fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt den ekte programvaren, kjøp registreringen og få bedre ekte service. Hvis det er noen overtredelse, vennligst kontakt oss via e-post for å håndtere det.

Mail To:help@itsvse.com

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

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

HurtigsvarTilbake til toppenTilbake til listen