Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 7636|Odpoveď: 0

Zigbee Journey (5): Niekoľko dôležitých základných experimentov CC2430 – sériová komunikácia

[Kopírovať odkaz]
Zverejnené 30. 10. 2014 23:18:18 | | | |
1. Prepojenie hornej a dolnej úrovne

V bezdrôtovej snímacej sieti musí CC2430 odoslať zozbierané dáta hostiteľskému počítaču (t. j. PC) na spracovanie a hostiteľský počítač musí poslať riadiace informácie CC2430. To všetko je neoddeliteľné od prenosu informácií medzi nimi. V tejto časti sa naučíme, ako implementovať sériovú portovú komunikáciu medzi PC a CC2430.

CC2430 obsahuje 2 sériové komunikačné rozhraniaUSART0aUSART1, každý sériový port obsahuje dva režimy:UART(asynchrónny) režim,SPI(synchronný) režim, táto sekcia sa zaoberá iba režimom UART).

2. Experiment so sériovou portovou komunikáciou(1) Úvod do experimentu

Uvedomte si komunikáciu medzi vývojovou doskou a PC: PC pošle určitý reťazec CC2430 a CC2430 tento reťazec vráti PC po jeho prijatí.

(2) Experimentálna príprava

Predtým, než začnete písať kód, musíte nastaviť hardvérové vybavenie: správne pripojenie + nainštalovať USB sériový ovládač.

Sú potrebné dve hardvérové pripojenia:

    JTAG port vývojovej dosky CC2430 → debuggerom → USB porte PC(Na ladenie a sťahovanie programov)

    Sériový port vývojovej dosky CC2430 → USB port PC(Pre dátovú komunikáciu medzi PC a CC2430)

Potom je potrebné nainštalovať USB na sériový ovládač (Adresa na stiahnutie

Na odoslanie dát na sériový port sa používa nástroj na ladenie sériových portov (Adresa na stiahnutie)。

(3) Diagram toku programu

(4) Experimentálny zdrojový kód a analýza/*
  Experimentálny popis: UART0, rýchlosť prenosu 115200bps, PC posiela reťazec na CC2430 (končiaci na znak @), CC2430 reťazec vráti po prijatí
*/

#include

nepodpísané charrecv_buf[300] = {0};
nepodpísané charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
prázdnotaxtal_init(prázdnota)
{
  SPAJ &= ~0x04;            //都上电
  zatiaľ čo(! (SLEEP &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Vyberte 32MHz kryštálový oscilátor
  SPAK |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
prázdnotaUart0Init(nepodpísané charStopBits,nepodpísané charParita)
{
   PERCFG&= ~0x01;                  Vyberte UART0 ako prvú voliteľnú pozíciu, teda RXD na P0.2 a TXD na P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Nastavte režim UART a povolte prijímač
   
   U0GCR = 11;
   U0BAUD = 216;                     Nastavte rýchlosť UART0 na 115200 bps, prečo je to 216 a 11, pozrite si čínsky manuál CC2430
   
   U0UCR |= StopBits| Parita;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
prázdnota  Uart0Send(nepodpísané chardáta)
{
  zatiaľ čo(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = dáta;
}

/*UART0发送字符串
-------------------------------------------------------*/
prázdnotaUart0SendString(nepodpísané char*s)
{
  zatiaľ čo(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
nepodpísané charUart0Receive(prázdnota)
{
  nepodpísané chardáta;
  zatiaľ čo(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  návratdáta;         
}

/*主函数
-------------------------------------------------------*/
prázdnotamain(prázdnota)
{
  nepodpísané chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Prosím, zadajte reťazec končiaci na '@'!");

  recv_count =0;
  
  zatiaľ čo(1)
  {
    zatiaľ čo(1)                           
    {
      b = Uart0Receive(); UART
      ak(b=='@')Prestávka;                 Ak je prijaté '@', vyskočí zo slučky a výstupne reťazec

      recv_buf[recv_count] = b;        Ak to nie je '@', pokračujte v pridávaní znakov do poľa znakov recv_buf[]
      recv_count++;
    }
    pre(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" výstupný reťazec[="" i][="" color]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Najprv nakonfigurujte I/O port zodpovedajúci USART0: prejdite dvojicuPECFRG.0Nastavte UART0 na voliteľnú pozíciu 1, teda P0.2 pre RXD a P0.3 pre TXD. Potom nakonfiguruj P0.2 a P0.3 ako externé zariadenia I/O.

Potom vyberte režim UART a zapnite prijímač. Potom nakonfigurujte parametre USART0: rýchlosť 115200, žiadna parita a stop bit 1.

Potom pošli reťazec do PC: Prosím, zadaj reťazec končiaci na'@'! , a potom použiť while(1) na to, aby som sa snažil získať všetky znaky. Keď táto postava to nerobí'@', znamená to, že vstup nie je kompletný, a pokračujte v pridávaní tohto znaku do poľa znakov recv_buf; Táto postava je presne taká ako'@', vstup je dokončený, takže slučka sa pošle PC, aby každý znak v recv_buf bol odoslaný PC, pričom sa resetuje recv_count.

(5) Experimentálne výsledky

Najprv dokončite hardvérové pripojenie, otvorte nástroj na ladenie sériových portov a nakonfigurujte parametre podľa nižšie:

Kliknite na "Open Serial Port", potom začnite IAR ladenie, nechajte program bežať a očakávaný reťazec sa objaví v prijímacom okne v nástroji na ladenie sériových portov:

Potom zadajte "Hello" do textového poľa odoslať pod nástroj na ladenie sériových portov, ako je uvedené nižšie:

Po kliknutí na "Odoslať" sa možno budete čudovať, prečo CC2430 nevráti to, čo ste napísali, pretože ste neskončili na @.

Znova napíšeme "Zigbee!@", klikneme na "Odoslať" a výsledok vyzerá takto:

Objaví sa očakávaný obsah "Ahoj Zigbee!". Je koniec! Toto je koniec experimentu~

3. Záver

Tento článok popisuje komunikáciu medzi vývojovou doskou CC2430 a hostiteľským počítačom. Teraz, keď máme základy sériovej komunikácie, poďme sa v ďalšej časti dozvedieť o ADC (analógovo-digitálnej konverzii) jednorazovom vzorkovaní. S ADC môžeme zbierať hodnotu teplotného senzora na vývojovej doske a posielať teplotu PC cez sériový port, aby ju zobrazil.






Predchádzajúci:Zigbee Journey (4): Niekoľko dôležitých základných experimentov CC2430 – prerušenie časovača
Budúci:Zigbee Journey (6): Niekoľko dôležitých základných experimentov CC2430 - jednorazové vzorkovanie ADC
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com