Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 7636|Svar: 0

Zigbee Journey (5): Flere vigtige CC2430 grundlæggende eksperimenter - seriel kommunikation

[Kopier link]
Opslået på 30/10/2014 23.18.18 | | | |
1. Forbindelse mellem øvre og nedre niveauer

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

CC2430 inkluderer 2 serielle kommunikationsgrænsefladerUSART0ogUSART1, hver seriel port indeholder to tilstande:UART(asynkron) tilstand,SPI(synkron) tilstand, denne sektion omhandler kun UART-tilstand).

2. Seriel port kommunikationseksperiment(1) Introduktion til eksperimentet

Indse kommunikationen mellem udviklingskortet og PC'en: PC'en sender en bestemt streng til CC2430, og CC2430 returnerer denne streng til PC'en efter modtagelsen.

(2) Eksperimentel forberedelse

Før du begynder at skrive kode, skal du sætte hardwarefaciliteterne op: korrekt forbindelse + installer USB-seriel driver.

To hardwareforbindelser er nødvendige:

    JTAG-porten på CC2430-udviklingskortet → debuggeren → PC'ens USB-port(Til fejlfinding og download af programmer)

    Seriellport på CC2430 udviklingskort → USB-port på PC(Til datakommunikation mellem PC og CC2430)

Derefter skal du installere USB-nøglen til den serielmæssige driver (Download adresse

For at sende data til den serielle port bruges et seriel port-fejlsøgningsværktøj (Download adresse)。

(3) Programflowchart

(4) Eksperimentel kildekode og analyse/*
  Eksperimentel beskrivelse: UART0, baudrate 115200 bps, PC sender en streng til CC2430 (afslutter med @-tegn), CC2430 returnerer strengen efter modtagelse
*/

#include

Usigneret Charrecv_buf[300] = {0};
Usigneret Charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
tomrumxtal_init(tomrum)
{
  SOV &= ~0x04;            //都上电
  mens(! (SØVN &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Vælg en 32MHz krystaloscillator
  SØVN |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
tomrumUart0Init(Usigneret CharStopBits,Usigneret CharParitet)
{
   PERCFG&= ~0x01;                  Vælg UART0 som den første valgfrie position, det vil sige RXD til P0.2 og TXD til P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Sæt til UART-tilstand og aktivér modtageren
   
   U0GCR = 11;
   U0BAUD = 216;                     Sæt UART0's baudrate til 115200 bps, og for hvorfor det er 216 og 11, se venligst CC2430 kinesiske manual
   
   U0UCR |= StopBits| Paritet;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
tomrum  Uart0Send(Usigneret Chardata)
{
  mens(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = data;
}

/*UART0发送字符串
-------------------------------------------------------*/
tomrumUart0SendString(Usigneret Char*s)
{
  mens(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
Usigneret CharUart0Receive(tomrum)
{
  Usigneret Chardata;
  mens(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Tilbagevendendata;         
}

/*主函数
-------------------------------------------------------*/
tomrumhoved(tomrum)
{
  Usigneret Chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Venligst Input-strengen sluttede med '@'!");

  recv_count =0;
  
  mens(1)
  {
    mens(1)                           
    {
      b = Uart0Modtager(); UART
      hvis(b=='@')Pause;                 Hvis '@' modtages, springer den ud af løkken og sender strengen ud

      recv_buf[recv_count] = b;        Hvis det ikke er '@', fortsæt med at tilføje tegn til tegnarrayet recv_buf[]
      recv_count++;
    }
    for(i=0; Jeg <recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" outputstreng[="" i][="" farve]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Først konfigureres I/O-porten, der svarer til USART0: send parret viderePECFRG.0Sæt UART0 til valgfri position 1, dvs. P0.2 for RXD og P0.3 for TXD. Konfigurer derefter P0.2 og P0.3 som ekstern enheds I/O.

Vælg derefter UART-tilstand og aktiver modtageren. Konfigurer derefter parametrene for USART0: baudrate 115200, ingen paritet, og stopbit 1.

Send derefter en streng til PC'en: Please Input-streng afsluttet med'@'! , og så bruge while(1) til at blive ved med at prøve at få alle karakterer modtaget. Når denne karakter ikke gør det'@', det betyder, at inputtet ikke er komplet, og fortsætter med at tilføje dette tegn til tegnarrayet recv_buf; Denne karakter er lige den rette'@', inputtet er fuldført, så løkken sendes til PC'en, så hver karakter i recv_buf kan sendes til PC'en, mens recv_count nulstilles.

(5) Eksperimentelle resultater

Først fuldender du hardwareforbindelsen, åbner det serielle port-fejlfindingsværktøj, og konfigurerer parametrene som vist nedenfor:

Klik på "Åbn seriel port", start derefter IAR-fejlfinding, lad programmet køre, og du vil finde den forventede streng dukke op i modtagerboksen på seriel port-fejlsøgningsværktøjet:

Indtast derefter "Hallo" i send-tekstboksen under seriel port-fejlfindingsværktøjet, som vist nedenfor:

Efter at have klikket på "Send", undrer du dig måske over, hvorfor CC2430 ikke returnerer det, du har skrevet, fordi du ikke sluttede på @.

Vi skriver "Zigbee!@" igen, klikker på "Send", og resultatet ser sådan ud:

Det forventede indhold "Hej Zigbee!" vil dukke op. Det er slut! Dette er slutningen på eksperimentet~

3. Konklusion

Denne artikel beskriver kommunikationen mellem CC2430-udviklingskortet og værtscomputeren. Nu hvor vi har det grundlæggende i seriel kommunikation, lad os lære om ADC (analog-til-digital konvertering) enkeltprøvetagning i næste afsnit. Med ADC kan vi indsamle værdien af temperatursensoren på udviklingskortet og sende temperaturværdien til PC'en gennem den serielle port for at vise den.






Tidligere:Zigbee Journey (4): Flere vigtige CC2430 grundlæggende eksperimenter - timerafbrydelse
Næste:Zigbee Journey (6): Flere vigtige CC2430 grundeksperimenter - ADC enkeltprøvetagning
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com