|
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ıkKod 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.
|