架构师_程序员_码农网

P Získanie hesla
Registrácia

QQ登录

Stačí jeden krok, aby ste mohli začať

Vyhľadávanie
Zobrazenie:5250|Odpoveď: 0
打印 上一主题 下一主题

[转]Zigbee之旅(五):几个重要的CC2430基础实验--Sériový port komunikácie

[Kopírovať odkaz]
V 跳转到指定楼层
majiteľovi budovy
发表于 2014-10-30 23:18:18|只看该作者回帖奖励|Reverznéprehliadanie|Režim čítania
I. Prevzatie zodpovednosti

  V bezdrôtovej sieti snímačov musí CC2430 posielať zozbierané údaje do hostiteľského počítača (t. j. PC) na spracovanie a zároveň hostiteľský počítač musí posielať riadiace informácie do CC2430. Toto všetko je neoddeliteľné od prenosu informácií medzi nimi. V tejto časti sa dozvieme, ako implementovať sériovú komunikáciu medzi PC a CC2430.

  CC2430 obsahuje dve sériové komunikačné rozhrania USART0 a USART1, každý sériový port obsahuje dva režimy: režim UART (asynchrónny), režim SPI (synchrónny), táto časť sa zaoberá len režimom UART).

Po druhé, experiment so sériovým komunikačným portom(1) Úvod do experimentu

  Dosiahnite komunikáciu medzi vývojovou doskou a PC: PC pošle určitý reťazec do CC2430 a CC2430 po prijatí vráti tento reťazec do PC.

(2) Príprava experimentu

  Predtým, ako začnete písať kód, musíte nastaviť hardvérové zariadenia: správne pripojenie + nainštalovať ovládač USB na sériový port.

  Hardvérové pripojenie potrebuje dve:

     JTAG port vývojovej dosky CC2430 → ladiaci program → USB port PC (na ladenie a sťahovanie programu)

     sériový port vývojovej dosky CC2430 → USB port PC (na dátovú komunikáciu PC a CC2430)

  Potom je potrebné nainštalovať ovládač USB na sériový port ( adresa na stiahnutie )

  Na odosielanie údajov na sériový port je potrebný aj nástroj na ladenie sériového portu ( adresa na stiahnutie ).

(3) Bloková schéma programu







(
4) Zdrojový kód a analýza experimentu/* Popis experimentu: UART0,prenosová rýchlosť 115200bps, PC posiela reťazec do CC2430 (ukončený znakom @), CC2430 prijíma a vracia reťazec*/#include unsigned char recv_buf[ 300 ] = {0};







u nsigned char recv_count = 0;/* inicializácia systémových hodín-------------------------------------------------------*/void xtal_init( void ) { SLEEP &
amp;= ~0x04; // obidve napájaniawhile (!
(SLEEP & 0x40 )); //kryštálový oscilátor zapnutý a stabilný CLKCON &=~0x47; &





nbsp; //vyber 32MHz kryštálový oscilátor SLEEP |=0x04; }/*Inicializácia komunikácie UART0-------------------------------------------------------*/void Uart0Init(

u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01; &nbsp
; //Vyberte UART0 ako voliteľnú pozíciu jedna, to znamená RXD na P0.2, TXD na P0.3 P0SEL |=0x0C; &nbsp

nbsp; //Inicializujte port UART0, nastavte P0.2 a P0.3 ako IO port externého zariadenia U0CSR =0xC0;   //Nastavte na port UART0.


nbsp; //Nastavte režim UART a povoľte prijímač U0GCR = 11; U0BAUD = 216; & nbsp;//Nastavte port UART0, nastavte P0.2 a P0.3 ako IO port externého zariadenia.

nbsp; //Nastavte prenosovú rýchlosť UART0 na 115200b/s, prečo je 216 a 11, si môžete prečítať v čínskej príručke CC2430 &nbsp



; U0UCR |= StopBits|Parity; //Nastavenie StopBits a parity }/*UART0 posiela dáta----------------------------------------



- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); //Čakanie na nečinnosť UART počas odosielania dát &






nbsp;U0DBUF = data; }/*UART0SendString-------------------------------------------------------*/void Uart0SendString( unsigned char *s) { & nbsp;while (*s !




= 0 ) //Odosielanie každého znaku v reťazci s postupne Uart0Send(*s++); }/*UART0 prijíma dáta-----------------------------------



- -------------------*/unsigned char Uart0Receive( void ) {unsigned char data;while (!

( U0CSR&0x04 ); //pýtať sa, či sú dáta prijaté, inak pokračovať v čakaní data=U0DBUF;//vyňať prijaté dátareturn data;&






nbsp; }/* hlavná funkcia-------------------------------------------------------*/void main( void ) {




u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //inicializácia UART0, nastavenie 1 stop bitu, bez parity & nbsp;Uart0SendString("Please Input string ended with '@'!





& quot;); recv_count =0;while( 1) {while ( 1) &

nbsp; { b = Uart0Receive()
;UARTif (b== '@' ) break; //Ak je prijaté '@', vyskočte z


c yklu, výstupný reťazec recv_buf[recv_count] = b;//Ak nie je '@', pokračujte v pridávaní znakov do poľa znakov recv_buf[] &

nbsp; recv_count++; }for ( i=0; i<recv_count; i++)="" [color="rgb(0," 136,=&


q uot;" 0)] ="" výstupný reťazec[="" i][="" farba] Uart0Send(recv_buf);
Uart0SendString ( ""); recv_count=0; &


n bsp; //reset } }

Najprv nakonfigurujte I/O port zodpovedajúci USART0: nastavte UART0 na voliteľnú pozíciu 1 vymazaním PECFRG.0 na nulu, t. j. RXD zodpovedá P0.2 a TXD zodpovedá P0.3. Potom nakonfigurujte P0.2 a P0.3 ako

vstupy/výstupy

externého zariadenia.

UART a povoľte prijímač.

Potom nakonfigurujte parametre USART0: prenosová rýchlosť 115200, bez parity, stop bit 1.

Potom pošlite reťazec do PC: Please Input string ended with '@'! , a potom sa pomocou while(1) pokúsi získať každý prijatý znak.

Keď tento znak nie je "@", znamená to, že vstup ešte nie je ukončený, a pokračuje v pridávaní tohto znaku do poľa znakov recv_buf; keď je tento znak presne "@", znamená to, že vstup je ukončený, a preto vyskočí z cyklu, aby poslal do PC každý znak v recv_buf v poradí a zároveň vynuloval recv_count.

5. Výsledky experimentu

Najprv dokončite hardvérové pripojenie a otvorte sériový port

.

2011022316522615.jpg
l

adiaceho nástroja, nakonfigurujte parametre nasledovne:

Kliknite na "Open Serial Port", potom spustite ladenie IAR, nechajte program bežať

, zistíte, že

sa spustí ladiaci program

sériového portu.

2011022316560420.jpg
U

vidíte, že sa v poli pre príjem v nástroji na ladenie sériového portu objaví očakávaný reťazec:

Potom do textového poľa pre odoslanie v spodnej časti nástroja na ladenie sériového portu zadajte "

2011022316581688.jpg
H

ello" nasledovne:

Po kliknutí na tlačidlo "Send" (Odoslať) sa môžete čudovať, prečo

CC2430 nevráti vašu správu

. Po kliknutí na tlačidlo "Odoslať" sa môžete čudovať, prečo CC2430 nevráti to, čo ste napísali, je to preto, že ste správu neukončili znakom @.

  

Zadajme opäť "Zigbee!@" a kliknite na "Odoslať", výsledok bude nasledovný:

2011022317013210.jpg
g

Len očakávaný obsah "Hello Zigbee!" Teraz!

Na záver tohto experimentu ~

III. Záver

Tento článok predstavuje vývojovú dosku CC2430 a komunikáciu s hostiteľským počítačom. So základmi sériovej komunikácie sa v ďalšej časti stretneme, aby sme sa naučili ADC (analógovo-digitálny prevod) s jedným vzorkovaním. Pomocou ADC môžeme zbierať hodnoty snímača teploty na vývojovej doske a posielať hodnotu teploty cez sériový port do počítača, aby sa zobrazila.






Predchádzajúci: [Opakovanie] Cesta Zigbee (4): niekoľko dôležitých základných experimentov CC2430 - prerušenie časovača
Ďalšie: [Opakovanie] Cesta Zigbee (VI): Niekoľko dôležitých základných experimentov CC2430 - jednoduché vzorkovanie ADC
Kód Farmer network, zverejnený len v priebehu praxe, vyskytli sa technické ťažkosti, neuvádzajte ostatných do omylu.

T áto verzia integrálnych pravidiel


VYHLÁSENIE: Všetok softvér, programové materiály alebo články uverejnené Code Farmer sa môžu používať len na vzdelávacie a výskumné účely; uvedený obsah sa nesmie používať na komerčné alebo nezákonné účely, inak všetky dôsledky znášajú samotní používatelia. Táto stránka informácie zo siete, spor o autorské práva nemá s touto stránkou nič spoločné. Vyššie uvedený obsah musíte do 24 hodín od stiahnutia úplne odstrániť z počítača. Ak sa vám program páči, podporte prosím originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás e-mailom, aby sme to mohli riešiť.

Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Mapa stránok

GMT+8, 2024-9-17 14:51

Rýchla odpoveďSpäť na začiatokSpäť na zoznam