Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 7554|Válasz: 0

Zigbee Journey (5): Több fontos CC2430 alapkísérlet – sorozatos kommunikáció

[Linket másol]
Közzétéve 2014. 10. 30. 23:18:18 | | | |
1. A felső és alsó szintek összekapcsolása

Egy vezeték nélküli érzékelős hálózatban a CC2430-nak a gyűjtött adatokat a gazdagépnek (azaz PC-nek) kell továbbítania feldolgozásra, a host-számítógépnek pedig vezérlő információkat kell továbbítania a CC2430-nak. Mindez elválaszthatatlanul kapcsolódik az információátvitelhez a kettő között. Ebben a részben megtanuljuk, hogyan lehet megvalósítani a sorozatos port kommunikációt a PC és a CC2430 között.

A CC2430 két soros kommunikációs interfészt tartalmazUSART0ésUSART1, minden soros port két módot tartalmaz:UART(aszinkron) mód,SPI(szinkron) mód, ez a rész csak UART móddal foglalkozik).

2. Soros port kommunikációs kísérlet(1) Bevezetés a kísérlethez

Ismerd meg a fejlesztő panel és a PC közötti kommunikációt: a PC egy bizonyos láncsort küld a CC2430-nak, és a CC2430 ezt a sorozatot visszaadja a PC-nek, miután megkapta.

(2) Kísérleti előkészítés

Mielőtt elkezdené a kódot írni, be kell állítanod a hardveres funkciókat: helyes kapcsolat + telepíteni az USB soros drivert.

Két hardverkapcsolat szükséges:

    A CC2430 fejlesztőlap JTAG portja → a hibakereső → a PC USB portja(Hibakereséshez és programok letöltéséhez)

    A CC2430 fejlesztőlap soros portja → PC USB portja(Adatátvitel PC és CC2430 között)

Ezután telepítened kell az USB-t a sorozatos meghajtóra (Letöltési cím

Az adat elküldéséhez a soros porthoz egy soros port hibakereső eszköz (Letöltési cím)。

(3) Programáramlási diagram

(4) Kísérleti forráskód és elemzés/*
  Kísérleti leírás: UART0, baud sebesség 115200bps, PC egy stringet küld CC2430-nak (@ karakterrel végződik), CC2430 pedig visszaadja a láncsort a megérkezése után
*/

#include

Aláírás nélkül charrecv_buf[300] = {0};
Aláírás nélkül charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
Semmixtal_init(Semmi)
{
  ALVÁS &= ~0x04;            //都上电
  miközben(! (ALVÁS &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Válassz egy 32 MHz-es kristályoscillátort
  ALVÁS |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
SemmiUart0Init(Aláírás nélkül charStopBits,Aláírás nélkül charParity)
{
   PERCFG&= ~0x01;                  Válaszd az UART0-t az első opcionális pozíciónak, vagyis az RXD-től P0.2-ig, TXD-től P0.3-ig
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Állítsd UART módra, és engedélyezd a vevőt
   
   U0GCR = 11;
   U0BAUD = 216;                     Állítsd be az UART0 baud sebességet 115200 bps-re, és hogy miért van 216 és 11, kérjük, lásd a CC2430 kínai kézikönyvet
   
   U0UCR |= StopBits| Parititás;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
Semmi  Uart0Send(Aláírás nélkül charadatok)
{
  miközben(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = adat;
}

/*UART0发送字符串
-------------------------------------------------------*/
SemmiUart0SendString(Aláírás nélkül char*s)
{
  miközben(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
Aláírás nélkül charUart0Receive(Semmi)
{
  Aláírás nélkül charadatok;
  miközben(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Visszatérésadatok;         
}

/*主函数
-------------------------------------------------------*/
Semmimain(Semmi)
{
  Aláírás nélkül chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Kérlek, a bemeneti lánc '@'-vel végződött!");

  recv_count =0;
  
  miközben(1)
  {
    miközben(1)                           
    {
      b = Uart0Receive(); UART
      ha(b=='@')Szünet;                 Ha a '@' megérkezik, kiugrik a hurkokból, és kimenetelnek adja a húrt

      recv_buf[recv_count] = b;        Ha nem '@', folytasd a karakterek hozzáadását a karaktertömbbe recv_buf[]
      recv_count++;
    }
    for(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" kimeneti string[="" i][="" szín]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Először konfiguráljuk az USART0-hoz tartozó I/O portot: add át a pártPECFRG.0Állítsd be az UART0-t opcionális 1-es pozícióra, azaz P0.2-t az RXD-hez és P0.3-at a TXD-hez. Ezután konfiguráld a P0.2-t és P0.3-at külső eszköz I/O-ként.

Ezután válaszd az UART módot, és engedélyezd a vevőt. Ezután konfiguráld az USART0 paramétereit: baud sebesség 115200, nincs paritetus, és 1 megállító bit.

Ezután küldj egy stringet a PC-nek: Please Input string véget ér a'@'! , majd a while(1)-et használva, hogy minden karaktert megkapjon. Amikor ez a karakter nem teszi meg'@', ez azt jelenti, hogy a bemenet nem teljes, és folytatjuk ezt a karaktert a karaktertömbbe való hozzáadással recv_buf; Ez a karakter pont tökéletes'@', a bemenet teljes, így a hurkot elküldik a PC-nek, hogy minden karakter a recv_buf része elküldje a PC-nek, miközben a recv_count visszaállítják.

(5) Kísérleti eredmények

Először fejezze be a hardverkapcsolatot, nyissa meg a soros port hibakereső eszközt, és konfigurálja a paramétereket az alábbiak szerint:

Kattints a "Soros portot nyisd ki", majd kezdd el az IAR hibakeresést, hagyd futni a programot, és a sorozat megtalálható a sorozat hibakereső eszközének vevődobozában:

Ezután írja be a "Hello" betűt a soros port hibakereső eszköz alatti küldési szövegmezőbe, ahogy az alábbiakban látható:

Miután rákattintottál a "Küldés" gombra, talán azon tűnődsz, miért nem adja vissza a CC2430 azt, amit írtál, hiszen nem @ jelzéssel zártál.

Újra beírjuk a "Zigbee!@"-t, rákattintunk a "Küldés" gombra, és az eredmény így néz ki:

Megjelenik a várt tartalom: "Hello Zigbee!" Vége! Ez a kísérlet vége~

3. Következtetés

Ez a cikk a CC2430 fejlesztő panel és a hostszámítógép közötti kommunikációt írja le. Most, hogy megvannak a soros kommunikáció alapjai, a következő szakaszban ismerjük meg az ADC (analóg-digitális átalakítás) egyetlen mintavételezést. Az ADC-vel összegyűjthetjük a hőmérséklet-érzékelő értékét a fejlesztő panelen, és elküldhetjük a hőmérséklet értékét a PC-nek a sorozatos porton keresztül, hogy megjelenítsük.






Előző:Zigbee Journey (4): Több fontos CC2430 alap kísérlet – időzítő megszakítás
Következő:Zigbee Journey (6): Több fontos CC2430 alapkísérlet – ADC egy-egy mintavétel
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com