|
1. Prepojenie hornej a dolnej úrovne V bezdrôtovej snímacej sieti musí CC2430 odoslať zozbierané dáta hostiteľskému počítaču (t. j. PC) na spracovanie a hostiteľský počítač musí poslať riadiace informácie CC2430. To všetko je neoddeliteľné od prenosu informácií medzi nimi. V tejto časti sa naučíme, ako implementovať sériovú portovú komunikáciu medzi PC a CC2430. CC2430 obsahuje 2 sériové komunikačné rozhraniaUSART0aUSART1, každý sériový port obsahuje dva režimy:UART(asynchrónny) režim,SPI(synchronný) režim, táto sekcia sa zaoberá iba režimom UART). 2. Experiment so sériovou portovou komunikáciou(1) Úvod do experimentuUvedomte si komunikáciu medzi vývojovou doskou a PC: PC pošle určitý reťazec CC2430 a CC2430 tento reťazec vráti PC po jeho prijatí. (2) Experimentálna prípravaPredtým, než začnete písať kód, musíte nastaviť hardvérové vybavenie: správne pripojenie + nainštalovať USB sériový ovládač. Sú potrebné dve hardvérové pripojenia: JTAG port vývojovej dosky CC2430 → debuggerom → USB porte PC(Na ladenie a sťahovanie programov) Sériový port vývojovej dosky CC2430 → USB port PC(Pre dátovú komunikáciu medzi PC a CC2430) Potom je potrebné nainštalovať USB na sériový ovládač (Adresa na stiahnutie) Na odoslanie dát na sériový port sa používa nástroj na ladenie sériových portov (Adresa na stiahnutie)。 (3) Diagram toku programu
(4) Experimentálny zdrojový kód a analýza/*
Experimentálny popis: UART0, rýchlosť prenosu 115200bps, PC posiela reťazec na CC2430 (končiaci na znak @), CC2430 reťazec vráti po prijatí
*/
#include
nepodpísané charrecv_buf[300] = {0};
nepodpísané charrecv_count =0;
/*系统时钟初始化
-------------------------------------------------------*/
prázdnotaxtal_init(prázdnota)
{ SPAJ &= ~0x04; //都上电
zatiaľ čo(! (SLEEP &0x40)); //晶体振荡器开启且稳定 CLKCON &= ~0x47; Vyberte 32MHz kryštálový oscilátor SPAK |=0x04;
}
/*UART0通信初始化
-------------------------------------------------------*/
prázdnotaUart0Init(nepodpísané charStopBits,nepodpísané charParita)
{ PERCFG&= ~0x01; Vyberte UART0 ako prvú voliteľnú pozíciu, teda RXD na P0.2 a TXD na P0.3 P0SEL |= 0x0C; //初始化UART0端口,设置P0.2与P0.3为外部设备IO口
U0CSR =0xC0; Nastavte režim UART a povolte prijímač
U0GCR = 11; U0BAUD = 216; Nastavte rýchlosť UART0 na 115200 bps, prečo je to 216 a 11, pozrite si čínsky manuál CC2430
U0UCR |= StopBits| Parita; //设置停止位与奇偶校验
}
/*UART0发送数据
-------------------------------------------------------*/
prázdnota Uart0Send(nepodpísané chardáta)
{
zatiaľ čo(U0CSR&0x01); //等待UART空闲时发送数据 U0DBUF = dáta;
}
/*UART0发送字符串
-------------------------------------------------------*/
prázdnotaUart0SendString(nepodpísané char*s)
{
zatiaľ čo(*s !=0) //依次发送字符串s中的每个字符 Uart0Send(*s++);
}
/*UART0接受数据
-------------------------------------------------------*/
nepodpísané charUart0Receive(prázdnota)
{
nepodpísané chardáta;
zatiaľ čo(! (U0CSR&0x04));//查询是否收到数据,否则继续等待 data=U0DBUF; //提取接收到的数据
návratdáta;
}
/*主函数
-------------------------------------------------------*/
prázdnotamain(prázdnota)
{
nepodpísané chari,b;
xtal_init();
Uart0Init(0x00,0x00); //初始化UART0,设置1个停止位,无奇偶校验 Uart0SendString("Prosím, zadajte reťazec končiaci na '@'!");
recv_count =0;
zatiaľ čo(1) {
zatiaľ čo(1) { b = Uart0Receive(); UART
ak(b=='@')Prestávka; Ak je prijaté '@', vyskočí zo slučky a výstupne reťazec
recv_buf[recv_count] = b; Ak to nie je '@', pokračujte v pridávaní znakov do poľa znakov recv_buf[] recv_count++; }
pre(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" výstupný reťazec[="" i][="" color] Uart0Send(recv_buf);
Uart0SendString(""); recv_count =0; //重置 }
}
Najprv nakonfigurujte I/O port zodpovedajúci USART0: prejdite dvojicuPECFRG.0Nastavte UART0 na voliteľnú pozíciu 1, teda P0.2 pre RXD a P0.3 pre TXD. Potom nakonfiguruj P0.2 a P0.3 ako externé zariadenia I/O. Potom vyberte režim UART a zapnite prijímač. Potom nakonfigurujte parametre USART0: rýchlosť 115200, žiadna parita a stop bit 1. Potom pošli reťazec do PC: Prosím, zadaj reťazec končiaci na'@'! , a potom použiť while(1) na to, aby som sa snažil získať všetky znaky. Keď táto postava to nerobí'@', znamená to, že vstup nie je kompletný, a pokračujte v pridávaní tohto znaku do poľa znakov recv_buf; Táto postava je presne taká ako'@', vstup je dokončený, takže slučka sa pošle PC, aby každý znak v recv_buf bol odoslaný PC, pričom sa resetuje recv_count. (5) Experimentálne výsledkyNajprv dokončite hardvérové pripojenie, otvorte nástroj na ladenie sériových portov a nakonfigurujte parametre podľa nižšie:
Kliknite na "Open Serial Port", potom začnite IAR ladenie, nechajte program bežať a očakávaný reťazec sa objaví v prijímacom okne v nástroji na ladenie sériových portov:
Potom zadajte "Hello" do textového poľa odoslať pod nástroj na ladenie sériových portov, ako je uvedené nižšie:
Po kliknutí na "Odoslať" sa možno budete čudovať, prečo CC2430 nevráti to, čo ste napísali, pretože ste neskončili na @. Znova napíšeme "Zigbee!@", klikneme na "Odoslať" a výsledok vyzerá takto:
Objaví sa očakávaný obsah "Ahoj Zigbee!". Je koniec! Toto je koniec experimentu~ 3. ZáverTento článok popisuje komunikáciu medzi vývojovou doskou CC2430 a hostiteľským počítačom. Teraz, keď máme základy sériovej komunikácie, poďme sa v ďalšej časti dozvedieť o ADC (analógovo-digitálnej konverzii) jednorazovom vzorkovaní. S ADC môžeme zbierať hodnotu teplotného senzora na vývojovej doske a posielať teplotu PC cez sériový port, aby ju zobrazil.
|