Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 7636|Vastaus: 0

Zigbee Journey (5): Useita tärkeitä CC2430-peruskokeita – sarjaviestintä

[Kopioi linkki]
Julkaistu 30.10.2014 23.18.18 | | | |
1. Ylä- ja alakerrosten yhdistäminen

Langattomassa tunnistusverkossa CC2430:n täytyy lähettää kerätty data isäntätietokoneelle (eli PC:lle) käsiteltäväksi, ja isäntätietokoneen täytyy lähettää ohjaustiedot CC2430:lle. Kaikki tämä on erottamatonta tiedonvälityksestä näiden kahden välillä. Tässä osiossa opimme, miten toteuttaa sarjaporttiviestintä PC:n ja CC2430:n välillä.

CC2430 sisältää kaksi sarjaliitäntääUSART0jaUSART1, jokaisessa sarjaportissa on kaksi tilaa:UART(asynkroninen) tila,SPI(synkroninen) tila, tämä osio käsittelee vain UART-tilaa).

2. Sarjaporttiviestintäkokeilu(1) Johdanto kokeeseen

Ymmärrä viestintä kehityskortin ja PC:n välillä: PC lähettää tietyn merkkijonon CC2430:lle, ja CC2430 palauttaa tämän merkkijonon PC:lle vastaanotettuaan.

(2) Kokeellinen valmistelu

Ennen koodin kirjoittamisen aloittamista sinun täytyy asettaa laitteistotoiminnot: oikea yhteys + asenna USB-sarjaajuri.

Tarvitaan kaksi laitteistoliitäntää:

    CC2430-kehityskortin JTAG-portti → debuggerin → PC:n USB-portin(Virheenkorjaukseen ja ohjelmien lataamiseen)

    CC2430-kehityskortin sarjaportti → PC:n USB-portti(Dataviestintään PC:n ja CC2430:n välillä)

Sitten sinun täytyy asentaa USB-sarjaajuri (Lataa osoite

Datan lähettämiseksi sarjaportille käytetään sarjaportin virheenkorjaustyökalua (Lataa osoite)。

(3) Ohjelman kaavio

(4) Kokeellinen lähdekoodi ja analyysi/*
  Kokeellinen kuvaus: UART0, baudinopeus 115200bps, PC lähettää merkkijonon CC2430:lle (päättyen @-merkkiin), CC2430 palauttaa merkkijonon vastaanotettuaan sen
*/

#include

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


/*系统时钟初始化
-------------------------------------------------------*/
voidxtal_init(void)
{
  UNI &= ~0x04;            //都上电
  kun(! (UNI &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Valitse 32MHz:n kideoskillaattori
  UNI |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
voidUart0Init(Allekirjoittamaton charStopBits,Allekirjoittamaton charParity)
{
   PERCFG&= ~0x01;                  Valitse UART0 ensimmäiseksi valinnaiseksi paikaksi, eli RXD:stä P0.2:een ja TXD:stä P0.3:een
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Aseta UART-tilaan ja ota vastaanotin käyttöön
   
   U0GCR = 11;
   U0BAUD = 216;                     Aseta UART0:n baudinopeudeksi 115200 bps, ja miksi se on 216 ja 11, katso CC2430:n kiinalainen käsikirja
   
   U0UCR |= StopBits| Tasavertaisuus;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
void  Uart0Send(Allekirjoittamaton chardata)
{
  kun(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = data;
}

/*UART0发送字符串
-------------------------------------------------------*/
voidUart0SendString(Allekirjoittamaton char*s)
{
  kun(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
Allekirjoittamaton charUart0Receive(void)
{
  Allekirjoittamaton chardataa;
  kun(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Paluudataa;         
}

/*主函数
-------------------------------------------------------*/
voidpää(void)
{
  Allekirjoittamaton chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Ole hyvä ja syötä merkkijono, joka päättyy '@'!");

  recv_count =0;
  
  kun(1)
  {
    kun(1)                           
    {
      b = Uart0Receive(); UART
      jos(b=='@')Tauko;                 Jos '@' vastaanotetaan, se hyppää silmukasta ulos ja tuottaa merkkijonon

      recv_buf[recv_count] = b;        Jos se ei ole '@', jatka merkkien lisäämistä merkkitaulukkoon recv_buf[]
      recv_count++;
    }
    for(i=0; minä<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" ulostulomerkkijono[="" i][="" väri]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Ensiksi konfiguroi USART0:n mukainen I/O-portti: välitä pariPECFRG.0Aseta UART0 valinnaiseen paikkaan 1, eli P0.2 RXD:lle ja P0.3 TXD:lle. Sitten konfiguroi P0.2 ja P0.3 ulkoiseksi laitteen I/O:ksi.

Valitse sitten UART-tila ja ota vastaanotin käyttöön. Sitten konfiguroi USART0:n parametrit: baudinopeus 115200, ei pariteettia ja stop-bitti 1.

Lähetä sitten merkkijono PC:lle: Please Input -merkkijono, joka päättyy'@'! , ja käytä while(1):tä yrittääkseni saada jokaisen hahmon vastaanotettua. Kun tämä hahmo ei tee sitä'@', se tarkoittaa, että syöte ei ole täydellinen, ja jatkaa tämän merkin lisäämistä merkkitaulukkoon recv_buf; Tämä hahmo on juuri sopiva'@', syöte on valmis, joten silmukka lähetetään PC:lle, jotta jokainen recv_buf:n hahmo lähetetään PC:lle samalla kun recv_count nollataan.

(5) Kokeelliset tulokset

Ensiksi viimeistele laitteistoliitäntä, avaa sarjaportin virheenkorjaustyökalu ja määritä parametrit alla esitetyn mukaisesti:

Klikkaa "Avaa sarjaportti", aloita IAR-virheenkorjaus, anna ohjelman toimia, ja näet odotetun merkkijonon vastaanottolaatikosta sarjaportin debuggaustyökalussa:

Sitten kirjoita "Hello" lähetä-tekstikenttään sarjaportin virheenkorjaustyökalun alapuolelle, kuten alla on esitetty:

Kun olet klikannut "Lähetä", saatat ihmetellä, miksi CC2430 ei palauta kirjoittamaasi tiedostoa, koska et päättänyt @-arvoon.

Kirjoitamme "Zigbee!@" uudelleen, klikkaamme "Lähetä" ja tulos näyttää tältä:

Odotettu sisältö "Hello Zigbee!" ilmestyy. Se on ohi! Tämä on kokeen loppu~

3. Johtopäätös

Tässä artikkelissa kuvataan viestintää CC2430-kehityskortin ja isäntätietokoneen välillä. Nyt kun meillä on sarjaviestinnän perusteet, opitaan seuraavassa osiossa ADC:stä (analogisesta digitaaliseksi muunnos) yksittäisnäytteenotteesta. ADC:n avulla voimme kerätä lämpötila-anturin arvon kehityskortilta ja lähettää sen PC:lle sarjaportin kautta näytettäväksi.






Edellinen:Zigbee Journey (4): Useita tärkeitä CC2430-peruskokeita – ajastimen keskeytys
Seuraava:Zigbee Journey (6): Useita tärkeitä CC2430-peruskokeita – ADC:n yksinäytteenotto
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com