Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 7554|Odpověď: 0

Zigbee Journey (5): Několik důležitých základních experimentů CC2430 – sériová komunikace

[Kopírovat odkaz]
Zveřejněno 30.10.2014 23:18:18 | | | |
1. Propojení horní a dolní úrovně

V bezdrátové snímací síti musí CC2430 odesílat shromážděná data hostitelskému počítači (tj. PC) k jejich zpracování, zatímco hostitelský počítač musí odeslat řídicí informace CC2430. To vše je neoddělitelné od přenosu informací mezi oběma. V této části se naučíme, jak implementovat komunikaci sériového portu mezi PC a CC2430.

CC2430 obsahuje 2 sériová komunikační rozhraníUSART0aUSART1, každý sériový port obsahuje dva režimy:UART(asynchronní) mód,SPI(synchronní) režim, tato sekce se zabývá pouze režimem UART).

2. Experiment se sériovou portovou komunikací(1) Úvod do experimentu

Uvědomte si komunikaci mezi vývojovou descí a PC: PC odešle určitý řetězec CC2430 a CC2430 tento řetězec vrátí PC po jeho přijetí.

(2) Experimentální příprava

Než začnete psát kód, musíte nastavit hardwarové vybavení: správné připojení + nainstalovat USB sériový ovladač.

Jsou potřeba dvě hardwarová připojení:

    JTAG port vývojové desky CC2430 → debuggerem → USB portu PC(Pro ladění a stahování programů)

    Sériový port vývojové desky CC2430 → USB port PC(Pro datovou komunikaci mezi PC a CC2430)

Pak je potřeba nainstalovat USB na sériový ovladač (Adresa ke stažení

Pro odeslání dat na sériový port je použit nástroj pro ladění sériových portů (Adresa ke stažení)。

(3) Programový diagram

(4) Experimentální zdrojový kód a analýza/*
  Experimentální popis: UART0, rychlost přenosu 115200bps, PC odešle řetězec na CC2430 (končící znakem @), CC2430 řetězec vrátí po jeho přijetí
*/

#include

nepodepsáno charrecv_buf[300] = {0};
nepodepsáno charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
prázdnotaxtal_init(prázdnota)
{
  SPÁT &= ~0x04;            //都上电
  zatímco(! (SPÁT &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Vyberte krystalový oscilátor s frekvencí 32 MHz
  SPÁT |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
prázdnotaUart0Init(nepodepsáno charStopBits,nepodepsáno charParita)
{
   PERCFG&= ~0x01;                  Vyberte UART0 jako první volitelnou pozici, tedy 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 přijímač
   
   U0GCR = 11;
   U0BAUD = 216;                     Nastavte rychlost UART0 na 115200 bps, proč je to 216 a 11, podívejte se prosím na čínský manuál CC2430
   
   U0UCR |= StopBits| Parita;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
prázdnota  Uart0Send(nepodepsáno chardata)
{
  zatímco(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = data;
}

/*UART0发送字符串
-------------------------------------------------------*/
prázdnotaUart0SendString(nepodepsáno char*s)
{
  zatímco(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
nepodepsáno charUart0Receive(prázdnota)
{
  nepodepsáno chardata;
  zatímco(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  návratdata;         
}

/*主函数
-------------------------------------------------------*/
prázdnotamain(prázdnota)
{
  nepodepsáno chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Prosím, zadejte řetězec končící na '@'!");

  recv_count =0;
  
  zatímco(1)
  {
    zatímco(1)                           
    {
      b = Uart0Receive(); UART
      pokud(b=='@')Pauza;                 Pokud je přijato '@', vyskočí ze smyčky a výstup řetězce

      recv_buf[recv_count] = b;        Pokud to není '@', pokračujte v přidávání znaků do pole znaků recv_buf[]
      recv_count++;
    }
    pro(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" výstupní řetězec[="" i][="" barva]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Nejprve nakonfigurujte I/O port odpovídající USART0: předejte dvojiciPECFRG.0Nastavte UART0 na volitelnou pozici 1, tj. P0.2 pro RXD a P0.3 pro TXD. Pak nakonfigurujte P0.2 a P0.3 jako externí zařízení I/O.

Pak zvolte režim UART a zapněte receiver. Poté nakonfigurujte parametry USART0: rychlost přenosu 115200, žádná parita a stop bit 1.

Pak pošlete řetězec PC: Zadejte řetězec končící na'@'! , a pak použij while(1) k tomu, abys se snažil získat všechny znaky. Když to tato postava neudělá'@', to znamená, že vstup není kompletní, a pokračujte v přidávání tohoto znaku do znakového pole recv_buf; Tahle postava je přesně ta pravá'@', vstup je dokončen, takže smyčka je odeslána na PC, aby každý znak v recv_buf byl odeslán PC, přičemž recv_count se resetuje.

(5) Experimentální výsledky

Nejprve dokončit hardwarové připojení, otevřít nástroj pro ladění sériových portů a nastavit parametry podle níže:

Klikněte na "Open Serial Port", poté spusťte ladění IAR, nechte program běžet a očekávaný řetězec se objeví v přijímací krabici v nástroji pro ladění sériových portů:

Poté zadejte "Hello" do textového pole send pod nástrojem pro ladění sériových portů, jak je uvedeno níže:

Po kliknutí na "Odeslat" se možná budete ptát, proč CC2430 nevrátí to, co jste napsali, protože jste neskončili na @.

Znovu napíšeme "Zigbee!@", klikneme na "Odeslat" a výsledek vypadá takto:

Očekávaný obsah "Hello Zigbee!" se objeví. Je konec! Tímto experiment končí~

3. Závěr

Tento článek popisuje komunikaci mezi vývojovou descí CC2430 a hostitelským počítačem. Nyní, když máme základy sériové komunikace, pojďme se v další části seznámit s ADC (analogovo-digitálním převodem) jedním vzorkováním. S ADC můžeme shromáždit hodnotu teplotního senzoru na vývojové desce a poslat ji PC přes sériový port, aby ji zobrazil.






Předchozí:Zigbee Journey (4): Několik důležitých základních experimentů CC2430 – přerušení časovače
Další:Zigbee Journey (6): Několik důležitých základních experimentů CC2430 – jednorázové vzorkování ADC
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com