Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 7554|Atsakyti: 0

Zigbee kelionė (5): keli svarbūs CC2430 pagrindiniai eksperimentai - serijinis ryšys

[Kopijuoti nuorodą]
Paskelbta 2014-10-30 23:18:18 | | | |
1. Viršutinio ir apatinio lygių sujungimas

Belaidžio jutimo tinkle CC2430 turi siųsti surinktus duomenis į pagrindinį kompiuterį (ty kompiuterį) apdoroti, o pagrindinis kompiuteris turi siųsti valdymo informaciją į CC2430. Visa tai neatsiejama nuo informacijos perdavimo tarp jų. Šiame skyriuje sužinosime, kaip įgyvendinti nuosekliojo prievado ryšį tarp kompiuterio ir CC2430.

CC2430 turi 2 nuosekliojo ryšio sąsajasUSART0irUSART1, kiekvienas nuoseklusis prievadas apima du režimus:UART(asinchroninis) režimas,SPI(sinchroninis) režimas, šiame skyriuje kalbama tik apie UART režimą).

2. Nuosekliojo prievado ryšio eksperimentas(1) Įvadas į eksperimentą

Realizuokite ryšį tarp kūrimo plokštės ir kompiuterio: kompiuteris siunčia tam tikrą eilutę į CC2430, o CC2430 grąžina šią eilutę į kompiuterį, kai ją gavo.

(2) Eksperimentinis pasirengimas

Prieš pradėdami rašyti kodą, turite nustatyti aparatūros priemones: teisingas prijungimas + įdiekite USB nuosekliąją tvarkyklę.

Reikalingos dvi aparatūros jungtys:

    CC2430 kūrimo plokštės JTAG prievadas → derintuvas → kompiuterio USB prievadas(Programų derinimui ir atsisiuntimui)

    CC2430 kūrimo plokštės nuoseklusis prievadas → kompiuterio USB prievadas(Duomenų perdavimui tarp kompiuterio ir CC2430)

Tada turite įdiegti USB į nuosekliąją tvarkyklę (Atsisiuntimo adresas

Norint siųsti duomenis į nuoseklųjį prievadą, nuosekliojo prievado derinimo įrankis (Atsisiuntimo adresas)。

(3) Programos schema

(4) Eksperimentinis šaltinio kodas ir analizė/*
  Eksperimentinis aprašymas: UART0, perdavimo sparta 115200bps, kompiuteris siunčia eilutę į CC2430 (baigiasi @ simboliu), CC2430 grąžina eilutę ją gavus
*/

#include

nepasirašytas anglisrecv_buf[300] = {0};
nepasirašytas anglisrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
tuščiaxtal_init (tuščia)
{
  MIEGAS &= ~0x04;            //都上电
  Nors(! (MIEGO IR0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Pasirinkite 32 MHz kristalinį osciliatorių
  MIEGO REŽIMAS |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
tuščiaUart0Init(nepasirašytas anglisStopBits,nepasirašytas anglisParitetas)
{
   PERCFG&= ~0x01;                  Pasirinkite UART0 kaip pirmąją pasirenkamą padėtį, tai yra, RXD į P0.2 ir TXD į P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Nustatykite UART režimą ir įjunkite imtuvą
   
   U0GCR = 11;
   U0BAUD = 216;                     Nustatykite UART0 perdavimo greitį į 115200 bps, kodėl jis yra 216 ir 11, skaitykite CC2430 kinų kalbos vadovą
   
   U0UCR |= StopBits| Paritetas;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
tuščia  Uart0Siųsti(nepasirašytas anglisduomenys)
{
  Nors(U0CSR &0x01);   //等待UART空闲时发送数据
  U0DBUF = duomenys;
}

/*UART0发送字符串
-------------------------------------------------------*/
tuščiaUart0SendString(nepasirašytas anglis*s)
{
  Nors(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
nepasirašytas anglisUart0Gauti(tuščia)
{
  nepasirašytas anglisduomenys;
  Nors(! (U0CSR &0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  grįžtiduomenys;         
}

/*主函数
-------------------------------------------------------*/
tuščiapagrindinis(tuščia)
{
  nepasirašytas anglisi, b;
  
  xtal_init ();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Prašome įvesti eilutę baigėsi "@"!");

  recv_count =0;
  
  Nors(1)
  {
    Nors(1)                           
    {
      b = Uart0Gauti(); UART
      jei(b =='@')pertrauka;                 Jei gaunamas "@", jis iššoka iš ciklo ir išveda eilutę

      recv_buf[recv_count] = b;        Jei jis nėra '@', toliau įtraukite simbolius į simbolių masyvą recv_buf[]
      recv_count++;
    }
    dėl(i =0; I<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" išvesties eilutė[="" i][="" spalva]
      Uart0Siųsti(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Pirmiausia sukonfigūruokite I/O prievadą, atitinkantį USART0: perduokite porąPECFRG.0Nustatykite UART0 į pasirenkamą 1 padėtį, ty P0.2 RXD ir P0.3 TXD. Tada sukonfigūruokite P0.2 ir P0.3 kaip išorinio įrenginio įvesties / išvesties.

Tada pasirinkite UART režimą ir įjunkite imtuvą. Tada sukonfigūruokite USART0 parametrus: perdavimo sparta 115200, be pariteto ir 1 stabdymo bitas.

Tada nusiųskite eilutę į kompiuterį: Įvesties eilutė baigėsi'@'! , o tada naudokite while(1), kad toliau bandytumėte gauti kiekvieną simbolį. Kai šis simbolis to nedaro'@', tai reiškia, kad įvestis nėra baigta, ir toliau pridėkite šį simbolį prie simbolių masyvo recv_buf; Šis simbolis yra teisingas'@', įvestis baigta, todėl ciklas siunčiamas į kompiuterį, kad kiekvienas recv_buf simbolis būtų siunčiamas į kompiuterį, iš naujo nustatant recv_count.

(5) Eksperimento rezultatai

Pirmiausia užbaikite aparatūros ryšį, atidarykite nuosekliojo prievado derinimo įrankį ir sukonfigūruokite parametrus, kaip parodyta toliau:

Spustelėkite "Atidaryti nuoseklųjį prievadą", tada pradėkite IAR derinimą, leiskite programai paleisti ir rasite laukiamą eilutę, rodomą nuosekliojo prievado derinimo įrankio gavimo laukelyje:

Tada įveskite "Sveiki" siuntimo teksto laukelyje po nuosekliojo prievado derinimo įrankiu, kaip parodyta toliau:

Spustelėję "Siųsti", jums gali kilti klausimas, kodėl CC2430 negrąžina to, ką įvedėte, nes nesibaigėte @.

Dar kartą įvedame "Zigbee!@", spustelėkite "Siųsti" ir rezultatas atrodo taip:

Pasirodys laukiamas turinys "Sveiki, Zigbee!". Viskas baigta! Tai eksperimento pabaiga~

3. Išvada

Šiame straipsnyje aprašomas ryšys tarp CC2430 kūrimo plokštės ir pagrindinio kompiuterio. Dabar, kai turime nuosekliojo ryšio pagrindus, kitame skyriuje sužinokime apie ADC (analoginio skaitmeninio konvertavimo) vienkartinę atranką. Naudodami ADC galime surinkti temperatūros jutiklio vertę kūrimo plokštėje ir nusiųsti temperatūros vertę į kompiuterį per nuoseklųjį prievadą, kad ją parodytume.






Ankstesnis:Zigbee kelionė (4): keli svarbūs CC2430 pagrindiniai eksperimentai - laikmačio pertraukimas
Kitą:Zigbee kelionė (6): Keli svarbūs CC2430 pagrindiniai eksperimentai - ADC vienkartinė atranka
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com