See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 7636|Vastuse: 0

Zigbee teekond (5): Mitmed olulised CC2430 põhieksperimendid – järjestikune side

[Kopeeri link]
Postitatud 30.10.2014 23:18:18 | | | |
1. Ülemiste ja alumiste korruste ühendamine

Traadita andurvõrgus peab CC2430 saatma kogutud andmed perearvutile (st PC-le) töötlemiseks ning hostarvuti peab saatma juhtimisinfo CC2430-le. Kõik see on lahutamatult seotud info edastamisega nende kahe vahel. Selles osas õpime, kuidas rakendada jadapordi suhtlust PC ja CC2430 vahel.

CC2430 sisaldab kahte jadakommunikatsiooniliidestUSART0jaUSART1, iga seriaalport sisaldab kahte režiimi:UART(asünkroonne) režiim,SPI(sünkroonne) režiim, see osa käsitleb ainult UART režiimi).

2. Seriaalpordi sideeksperiment(1) Sissejuhatus eksperimendile

Mõista suhtlust arendusplaadi ja arvuti vahel: arvuti saadab CC2430-le teatud stringi ja CC2430 tagastab selle stringi PC-le pärast selle kättesaamist.

(2) Eksperimentaalne ettevalmistus

Enne koodi kirjutamise alustamist tuleb seadistada riistvaralised võimalused: õige ühendus + USB seriaaldraiveri paigaldamine.

Vaja on kahte riistvaraühendust:

    CC2430 arendusplaadi JTAGi port → silurit → arvuti USB-pordi(Silumiseks ja programmide allalaadimiseks)

    CC2430 arendusplaadi jadaport → PC USB port(Andmeside jaoks PC ja CC2430 vahel)

Seejärel pead paigaldama USB-jadadraiveri (Laadi aadress alla

Andmete saatmiseks seriaalpordile on olemas seriaalpordi silumistööriist (Laadi aadress alla)。

(3) Programmi vooskeem

(4) Eksperimentaalne lähtekood ja analüüs/*
  Eksperimentaalne kirjeldus: UART0, baudikiirus 115200bps, PC saadab stringi CC2430-le (lõpeb @ märgiga), CC2430 tagastab stringi pärast selle saamist
*/

#include

Allkirjastamata charrecv_buf[300] = {0};
Allkirjastamata charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
tühixtal_init(tühi)
{
  UNI &= ~0x04;            //都上电
  samal ajal(! (UNI &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Vali 32MHz kristall-ostsillaator
  UNI |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
tühiUart0Init(Allkirjastamata charStopBits,Allkirjastamata charPariteet)
{
   PERCFG&= ~0x01;                  Vali UART0 esimeseks valikuliseks positsiooniks, st RXD P0.2-ks ja TXD P0.3-ks
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Sea UART-režiimile ja luba vastuvõtja
   
   U0GCR = 11;
   U0BAUD = 216;                     Sea UART0 baudi kiirus 115200 bps peale, miks see on 216 ja 11, palun vaata CC2430 Hiina käsiraamatut
   
   U0UCR |= StopBits| võrdsus;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
tühi  Uart0Send(Allkirjastamata charandmed)
{
  samal ajal(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = andmed;
}

/*UART0发送字符串
-------------------------------------------------------*/
tühiUart0SendString(Allkirjastamata char*s)
{
  samal ajal(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
Allkirjastamata charUart0Receive(tühi)
{
  Allkirjastamata charandmed;
  samal ajal(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Tagasitulekandmed;         
}

/*主函数
-------------------------------------------------------*/
tühipea(tühi)
{
  Allkirjastamata chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Palun, sisendstring lõppes '@'-ga!");

  recv_count =0;
  
  samal ajal(1)
  {
    samal ajal(1)                           
    {
      b = Uart0Receive(); UART
      kui(b=='@')paus;                 Kui '@' vastu võetakse, hüppab see ahelast välja ja väljastab stringi

      recv_buf[recv_count] = b;        Kui see ei ole '@', jätkake märkide lisamist tähemärkide massiivile recv_buf[]
      recv_count++;
    }
    for(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" väljundstring[="" i][="" color]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Esiteks seadistage USART0-le vastav I/O port: edastage paarPECFRG.0Sea UART0 valikuliseks positsiooniks 1, st P0.2 RXD jaoks ja P0.3 TXD jaoks. Seejärel seadista P0.2 ja P0.3 välise seadme I/O-ks.

Seejärel vali UART-režiim ja luba vastuvõtja. Seejärel seadista USART0 parameetrid: baudi kiirus 115200, pariteeti puudub ja stoppbitt 1.

Seejärel saada arvutile string: Please Input string, mis lõpeb'@'! , ja siis kasuta while(1), et püüda iga tegelane kätte saada. Kui see tegelane seda ei tee'@', see tähendab, et sisend ei ole täielik ja jätkab selle märgi lisamist tähemärgimassiivi recv_buf; See tegelane on täpselt õige'@', sisend on lõpetatud, seega saadetakse tsükkel PC-le, et iga recv_buf tegelane saadetaks PC-le, samal ajal kui recv_count lähtestatakse.

(5) Eksperimentaalsed tulemused

Esiteks lõpeta riistvaraühendus, ava seriaalpordi silumistööriist ja seadista parameetrid allpool näidatud:

Klõpsa "Open Serial Port", alusta IAR silumist, lase programmil käivituda ja ootav string ilmub seriaalpordi silumistööriista vastuvõtukastis:

Seejärel sisesta "Hello" saatmise tekstikasti seriaalipordi silumistööriista alla, nagu allpool näidatud:

Pärast "Saada" klõpsamist võid imestada, miks CC2430 ei tagasta seda, mida sa kirjutasid, sest sa ei lõpetanud @.

Kirjutame uuesti "Zigbee!@", klõpsame "Saada" ja tulemus näeb välja selline:

Oodatud sisu "Tere, Zigbee!" ilmub. See on läbi! See on eksperimendi lõpp~

3. Kokkuvõte

See artikkel kirjeldab suhtlust CC2430 arendusplaadi ja hostarvuti vahel. Nüüd, kui meil on jadakommunikatsiooni põhialused, õpime järgmises osas ADC (analoog-digitaalne konverteerimine) ühe proovivõtu kohta. ADC abil saame koguda temperatuurianduri väärtuse arendusplaadil ja saata temperatuuri väärtuse arvutile läbi seriaalpordi, et seda kuvada.






Eelmine:Zigbee teekond (4): Mõned olulised CC2430 põhikatsed – taimeri katkestus
Järgmine:Zigbee teekond (6): Mitmed olulised CC2430 põhieksperimendid – ADC ühe proovivõtu
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com