Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 7636|Odgovoriti: 0

Zigbee Journey (5): Več pomembnih osnovnih eksperimentov CC2430 – serijska komunikacija

[Kopiraj povezavo]
Objavljeno na 30. 10. 2014 23:18:18 | | | |
1. Povezava zgornje in spodnje ravni

V brezžičnem senzorskem omrežju mora CC2430 poslati zbrane podatke gostiteljskemu računalniku (tj. PC) za obdelavo, gostiteljski računalnik pa mora poslati kontrolne informacije CC2430. Vse to je neločljivo povezano s prenosom informacij med obema. V tem razdelku se bomo naučili, kako implementirati serijsko komunikacijo med računalnikom in CC2430.

CC2430 vključuje 2 serijska komunikacijska vmesnikaUSART0inUSART1, vsak serijski port vključuje dva načina:UART(asinhroni) način,SPI(sinhroni) način, ta razdelek obravnava le UART način).

2. Eksperiment s serijsko portno komunikacijo(1) Uvod v eksperiment

Zavedajte se komunikacije med razvojno ploščo in računalnikom: Računalnik pošlje določen niz CC2430, CC2430 pa ta niz vrne računalniku po prejemu računalnika.

(2) Eksperimentalna priprava

Preden začneš pisati kodo, moraš nastaviti strojno opremo: pravilno povezavo + namestiti USB serijski gonilnik.

Potrebni sta dve strojni povezavi:

    JTAG port razvojne plošče CC2430 → razhroščevalnik → USB priključku računalnika(Za odpravljanje napak in prenos programov)

    Serijski priključek razvojne plošče CC2430 → USB priključka PC-ja(Za podatkovno komunikacijo med PC in CC2430)

Nato moraš namestiti USB na serijski gonilnik (Naslov za prenos

Za pošiljanje podatkov na serijski priključek je uporabljeno orodje za razhroščevanje serijskih vrat (Naslov za prenos)。

(3) Shema poteka programa

(4) Eksperimentalna izvorna koda in analiza/*
  Eksperimentalni opis: UART0, hitrost prenosa 115200bps, PC pošlje niz na CC2430 (konča se z @ znakom), CC2430 vrne niz po prejemu
*/

#include

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


/*系统时钟初始化
-------------------------------------------------------*/
prazninaxtal_init(praznina)
{
  SPANJE &= ~0x04;            //都上电
  medtem ko(! (SPANJE &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Izberite 32MHz kristalni oscilator
  SPANJE |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
prazninaUart0Init(nepodpisano charStopBits,nepodpisano charPariteta)
{
   PERCFG&= ~0x01;                  Izberite UART0 kot prvo opcijsko pozicijo, torej RXD na P0.2 in TXD na P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Nastavite na način UART in omogočite sprejemnik
   
   U0GCR = 11;
   U0BAUD = 216;                     Nastavite hitrost prenosa UART0 na 115200 bps, za razlog za 216 in 11 prosim glejte kitajski priročnik CC2430
   
   U0UCR |= StopBits| Enakost;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
praznina  Uart0Send(nepodpisano charpodatki)
{
  medtem ko(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = podatki;
}

/*UART0发送字符串
-------------------------------------------------------*/
prazninaUart0SendString(nepodpisano char*s)
{
  medtem ko(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
nepodpisano charUart0Receive(praznina)
{
  nepodpisano charpodatke;
  medtem ko(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Vrnitevpodatke;         
}

/*主函数
-------------------------------------------------------*/
prazninamain(praznina)
{
  nepodpisano chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Prosim, vnesite niz, ki se konča z '@'!");

  recv_count =0;
  
  medtem ko(1)
  {
    medtem ko(1)                           
    {
      b = Uart0Receive(); UART
      če(b=='@')prekinitev;                 Če prejme '@', skoči iz zanke in izhodi niz

      recv_buf[recv_count] = b;        Če ni '@', nadaljujte z dodajanjem znakov v polje znakov recv_buf[]
      recv_count++;
    }
    za(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" izhodni niz[="" i][="" barva]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Najprej konfigurirajte vhodno/izhodni priključek, ki ustreza USART0: prenesite parPECFRG.0Nastavite UART0 na opcijski položaj 1, tj. P0.2 za RXD in P0.3 za TXD. Nato konfiguriraj P0.2 in P0.3 kot zunanji vhodno/izhodni sistem naprav.

Nato izberi način UART in omogoči sprejemnik. Nato konfigurirajte parametre USART0: hitrost prenosa 115200, brez paritete in stop bit 1.

Nato pošlji niz računalniku: Please Input string, ki se konča z'@'! , in nato uporabim while(1), da poskušam pridobiti vse znake. Ko ta lik tega ne počne'@', to pomeni, da vhod ni popoln, in nadaljujte z dodajanjem tega znaka v polje znakov recv_buf; Ta lik je ravno pravi'@', vhod je zaključen, zato se zanka pošlje PC-ju, da se vsak znak v recv_buf pošlje PC-ju, medtem ko se recv_count ponastavi.

(5) Eksperimentalni rezultati

Najprej dokončajte strojno povezavo, odprite orodje za razhroščevanje serijskih vrat in nastavite parametre, kot je prikazano spodaj:

Kliknite "Odpri serijski port", nato začnite z IAR odpravljanjem napak, pustite, da program teče, in pričakovani niz se bo pojavil v sprejemnem polju orodja za razhroščevanje serijskih vrat:

Nato vpišite "Hello" v polje za pošiljanje pod orodjem za razhroščevanje serijskih portov, kot je prikazano spodaj:

Po kliku "Pošlji" se boste morda spraševali, zakaj CC2430 ne vrne tistega, kar ste vpisali, saj niste končali z @.

Ponovno vpišemo "Zigbee!@", kliknemo "Pošlji" in rezultat izgleda takole:

Pričakovana vsebina "Hello Zigbee!" se bo pojavila. Konec je! To je konec eksperimenta~

3. Zaključek

Ta članek opisuje komunikacijo med razvojno ploščo CC2430 in gostiteljskim računalnikom. Zdaj, ko imamo osnove serijske komunikacije, se v naslednjem razdelku poglejmo o ADC (analogno-digitalno pretvorbo) enojnem vzorčenju. Z ADC lahko zbiramo vrednost temperaturnega senzorja na razvojni plošči in jo pošljemo računalniku preko serijskega priključka, da jo prikaže.






Prejšnji:Zigbee Journey (4): Več pomembnih osnovnih eksperimentov CC2430 - prekinitev časovnika
Naslednji:Zigbee Journey (6): Več pomembnih osnovnih eksperimentov CC2430 - ADC enojno vzorčenje
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com