Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 7636|Svare: 0

Zigbee Journey (5): Flere viktige CC2430 grunnleggende eksperimenter - seriell kommunikasjon

[Kopier lenke]
Publisert på 30.10.2014 23:18:18 | | | |
1. Sammenkobling av øvre og nedre nivåer

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

CC2430 inkluderer 2 serielle kommunikasjonsgrensesnittUSART0ogUSART1, hver seriell port inkluderer to moduser:UART(asynkron) modus,SPI(synkron) modus, denne delen omhandler kun UART-modus).

2. Eksperiment med seriell portkommunikasjon(1) Introduksjon til eksperimentet

Forstå kommunikasjonen mellom utviklingskortet og PC-en: PC-en sender en bestemt streng til CC2430, og CC2430 returnerer denne strengen til PC-en etter mottak.

(2) Eksperimentell forberedelse

Før du begynner å skrive kode, må du sette opp maskinvarefasilitetene: korrekt tilkobling + installere USB-serielle driver.

To maskinvaretilkoblinger kreves:

    JTAG-porten på CC2430-utviklingskortet → debuggeren → USB-porten på PC-en(For feilsøking og nedlasting av programmer)

    Seriellport på CC2430 utviklingskort → USB-port på PC(For datakommunikasjon mellom PC og CC2430)

Deretter må du installere USB-til-seriell driveren (Nedlastingsadresse

For å sende data til den serielle porten, brukes et seriell portfeilsøkingsverktøy (Nedlastingsadresse)。

(3) Programflytskjema

(4) Eksperimentell kildekode og analyse/*
  Eksperimentell beskrivelse: UART0, baudrate 115200 bps, PC sender en streng til CC2430 (avslutter med @-tegn), CC2430 returnerer strengen etter å ha mottatt den
*/

#include

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


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

/*UART0通信初始化
-------------------------------------------------------*/
TomromUart0Init(Usignert CharStopBits,Usignert CharParitet)
{
   PERCFG&= ~0x01;                  Velg UART0 som første valgfrie posisjon, det vil si RXD til P0.2 og TXD til P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Sett til UART-modus og aktiver mottakeren
   
   U0GCR = 11;
   U0BAUD = 216;                     Sett UART0 baudrate til 115200 bps, for hvorfor det er 216 og 11, vennligst se CC2430 kinesiske manual
   
   U0UCR |= StopBits| Paritet;        //设置停止位与奇偶校验
}

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

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

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

/*主函数
-------------------------------------------------------*/
Tomromhoved(Tomrom)
{
  Usignert Chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Vær så snill, Input-strengen endte på '@'!");

  recv_count =0;
  
  mens(1)
  {
    mens(1)                           
    {
      b = Uart0Motta(); UART
      hvis(b=='@')Pause;                 Hvis '@' mottas, hopper den ut av løkken og sender ut strengen

      recv_buf[recv_count] = b;        Hvis det ikke er '@', fortsett å legge til tegn i tegnarrayet recv_buf[]
      recv_count++;
    }
    for(i=0; Jeg <recv_count; i++)="" [farge="rgb(0," 136,="" 0)]="" utgangsstreng[="" i][="" farge]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Først, konfigurer I/O-porten som tilsvarer USART0: send paretPECFRG.0Sett UART0 til valgfri posisjon 1, altså P0.2 for RXD og P0.3 for TXD. Deretter konfigurerer du P0.2 og P0.3 som ekstern enhets-I/O.

Velg deretter UART-modus og aktiver mottakeren. Deretter konfigurer du parameterne til USART0: baudrate 115200, ingen paritet, og stoppbit 1.

Send deretter en streng til PC-en: Please Input-streng avsluttet med'@'! , og så bruke while(1) for å fortsette å prøve å få alle karakterene mottatt. Når denne karakteren ikke gjør det'@', det betyr at inputen ikke er komplett, og fortsetter å legge til dette tegnet i tegnmatrisen recv_buf; Denne karakteren er akkurat passe'@', inputen er fullført, så løkken sendes til PC-en for at hver karakter i recv_buf skal sendes til PC-en, samtidig som recv_count tilbakesettes.

(5) Eksperimentelle resultater

Først, fullfør maskinvaretilkoblingen, åpne verktøyet for feilsøking av serielle porter, og konfigurere parameterne som vist nedenfor:

Klikk på "Open Serial Port", start IAR-feilsøkingen, la programmet kjøre, og du vil finne den forventede strengen som vises i mottakerboksen på seriell port-feilsøkingsverktøyet:

Skriv deretter inn "Hallo" i send-tekstboksen under feilsøkingsverktøyet for seriell port, som vist nedenfor:

Etter å ha klikket på «Send», lurer du kanskje på hvorfor CC2430 ikke returnerer det du skrev, fordi du ikke endte på @.

Vi skriver "Zigbee!@" igjen, klikker "Send" og resultatet ser slik ut:

Det forventede innholdet «Hello Zigbee!» vil dukke opp. Det er over! Dette er slutten på eksperimentet~

3. Konklusjon

Denne artikkelen beskriver kommunikasjonen mellom CC2430-utviklingskortet og vertsmaskinen. Nå som vi har det grunnleggende om seriell kommunikasjon, la oss lære om ADC (analog-til-digital konvertering) enkeltprøving i neste avsnitt. Med ADC kan vi samle inn verdien til temperatursensoren på utviklingskortet og sende temperaturverdien til PC-en gjennom den serielle porten for å vise den.






Foregående:Zigbee Journey (4): Flere viktige CC2430 grunnleggende eksperimenter – tidsavbrudd
Neste:Zigbee Journey (6): Flere viktige CC2430 grunnleggende eksperimenter - ADC enkeltprøvetaking
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com