Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 7554|Yanıt: 0

Zigbee Yolculuğu (5): Birkaç önemli CC2430 temel deneyi - seri iletişim

[Bağlantıyı kopyala]
Yayınlandı 30.10.2014 23:18:18 | | | |
1. Üst ve alt katların birbirine bağlanması

Kablosuz algılama ağında, CC2430 toplanan verileri işlem için ana bilgisayara (yani PC) göndermelidir ve ana bilgisayar kontrol bilgilerini CC2430'a göndermelidir. Tüm bunlar, ikisi arasındaki bilgi aktarımından ayrılmazdır. Bu bölümde, PC ile CC2430 arasında seri port iletişiminin nasıl uygulanacağını öğreneceğiz.

CC2430, 2 seri iletişim arayüzü içerirUSART0veUSART1, her seri portu iki mod içerir:UART(asenkron) mod,SPI(eşzamanlı) mod, bu bölüm sadece UART modunu ele alır).

2. Seri port iletişim deneyi(1) Deneye giriş

Geliştirme kartı ile PC arasındaki iletişimi fark edin: PC, CC2430'a belirli bir diziyi gönderir ve CC2430, bu diziyi aldıktan sonra PC'ye geri gönderir.

(2) Deneysel hazırlık

Kod yazmaya başlamadan önce donanım ayarlarını ayarlamanız gerekiyor: doğru bağlantı + USB seri sürücüsünü kurun.

İki donanım bağlantısı gereklidir:

    CC2430 geliştirme kartının JTAG portu, PC'nin USB portu → hata ayıklayıcı →(Hata ayıklama ve programları indirmek için)

    CC2430 geliştirme kartının seri portu → PC'nin USB portu(PC ile CC2430 arasındaki veri iletişimi için)

Sonra USB'den seri sürücüye (Adresi indir

Seri porta veri göndermek için, bir seri port hata ayıklama aracı (Adresi indir)。

(3) Program akış şeması

(4) Deneysel kaynak kodu ve analiz/*
  Deneysel açıklama: UART0, baud hızı 115200bps, PC CC2430'a (@ karakteriyle biten) bir dizi gönderiyor, CC2430 diziyi aldıktan sonra döndürüyor
*/

#include

imzasız charrecv_buf[300] = {0};
imzasız charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
Voidxtal_init(Void)
{
  UYKU &= ~0x04;            //都上电
  while(! (UYKU &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            32MHz kristal osilatör seçin
  UYKU |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
VoidUart0Init(imzasız charStopBits,imzasız charEşitlik)
{
   PERCFG&= ~0x01;                  İlk isteğe bağlı pozisyon olarak UART0'ı seçin, yani RXD'den P0.2'ye ve TXD'den P0.3'e
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    UART moduna ayar ve alıcıyı etkinleştir
   
   U0GCR = 11;
   U0BAUD = 216;                     UART0 baud hızını 115200bps olarak ayarlayın, neden 216 ve 11 olduğu için lütfen CC2430 Çin kılavuzuna bakınız
   
   U0UCR |= StopBits| Eşitlik;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
Void  Uart0Send(imzasız charveriler)
{
  while(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = veri;
}

/*UART0发送字符串
-------------------------------------------------------*/
VoidUart0SendString(imzasız char*s)
{
  while(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
imzasız charUart0Receive(Void)
{
  imzasız charveri;
  while(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Dönüşveri;         
}

/*主函数
-------------------------------------------------------*/
Voidmain(Void)
{
  imzasız chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Lütfen Gir dizisi '@' ile bitiyor!");

  recv_count =0;
  
  while(1)
  {
    while(1)                           
    {
      b = Uart0Receive(); UART
      eğer(b=='@')mola;                 Eğer '@' alınırsa, döngüden atlar ve diziyi çıkarır

      recv_buf[recv_count] = b;        Eğer '@' değilse, karakter dizisine karakter eklemeye devam edin recv_buf[]
      recv_count++;
    }
    için(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" çıkış dizisi[="" i][="" color]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Öncelikle, USART0'a karşılık gelen I/O portunu yapılandırın: çifti geçirinPECFRG.0UART0'ı isteğe bağlı 1 pozisyona ayarlayın, yani RXD için P0.2 ve TXD için P0.3. Sonra P0.2 ve P0.3'ü harici cihaz I/O olarak yapılandırın.

Sonra UART modunu seçin ve alıcıyı etkinleştirin. Sonra USART0'ın parametrelerini yapılandırın: baud hızı 115200, eşitlik yok ve stop bit 1.

Sonra PC'ye bir dizi gönderin: Lütfen Input dizisi şu ile bitiyor'@'! , ve sonra while(1)'i kullanarak her karakteri almaya çalışmaya devam eder. Bu karakter bunu yapmadığında'@', bu girişin tamamlanmadığı anlamına gelir ve bu karakteri karakter dizisine eklemeye devam recv_buf; Bu karakter tam olarak tam yerinde'@', giriş tamamlanmıştır, bu yüzden döngü PC'ye gönderilir ve recv_buf'deki her karakter PC'ye gönderilir ve recv_count sıfırlanır.

(5) Deneysel sonuçlar

Öncelikle, donanım bağlantısını tamamlayın, seri port hata ayıklama aracını açın ve parametreleri aşağıda gösterildiği gibi yapılandırın:

"Open Serial Port"a tıklayın, ardından IAR hata ayıklamasını başlatın, programın çalışmasına izin verin ve beklenen diziyi seri port hata ayıklama aracının alıcı kutusunda göreceksiniz:

Sonra, aşağıda gösterildiği gibi seri port hata ayıklama aracının altındaki gönder metin kutusuna "Hello" yazın:

"Gönder" tuşuna tıkladıktan sonra, CC2430'un neden yazdığınız şeyi geri göndermediğini merak edebilirsiniz, çünkü @ ile bitmedi.

Tekrar "Zigbee!@" yazıyoruz, "Gönder"e tıklıyoruz ve sonuç şöyle görünüyor:

Beklenen içerik "Hello Zigbee!" olarak görünecek. Bitti! Deneyin sonu~

3. Sonuç

Bu makale, CC2430 geliştirme kartı ile ana bilgisayar arasındaki iletişimi anlatmaktadır. Artık seri iletişimin temellerini bildiğimize göre, bir sonraki bölümde ADC (analogdan dijitale dönüşüm) tekli örnekleme hakkında bilgi edinelim. ADC ile, geliştirme kartındaki sıcaklık sensörünün değerini toplayabilir ve sıcaklık değerini seri port üzerinden PC'ye gönderip gösterebiliriz.






Önceki:Zigbee Yolculuğu (4): Birkaç önemli CC2430 temel deneyi - zamanlayıcı kesintisi
Önümüzdeki:Zigbee Yolculuğu (6): Birkaç önemli CC2430 temel deneyi - ADC tek örnekleme
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com