| I. Võta kinni Juhtmevabas andurivõrgus peab CC2430 saatma kogutud andmed töötlemiseks vastuvõtvale arvutile (st arvutile) ja samal ajal peab vastuvõttev arvuti saatma CC2430-le juhtimisteavet. Kõik see on lahutamatult seotud omavahelise teabeedastusega. Selles jaotises õpime, kuidas rakendada jadaühendust arvuti ja CC2430 vahel. CC2430 sisaldab kahte jadaliideseadet USART0 ja USART1, iga jadaliides sisaldab kahte režiimi: UART (asünkroonne) režiim, SPI (sünkroonne) režiim, selles jaotises käsitletakse ainult UART-režiimi). Teiseks, jadapordi sideeksperiment(1) Sissejuhatus eksperimendi kohta Saavutada side arendusplaadi ja arvuti vahel: arvuti saadab CC2430-le teatud stringi ja CC2430 tagastab selle stringi pärast selle vastuvõtmist arvutile. (2) Eksperimendi ettevalmistamine Enne koodi kirjutamise alustamist tuleb seadistada riistvaralised vahendid: õige ühendus + paigaldada USB-juhejuht jadapidi. Riistvaraline ühendus vajab kahte: CC2430 arendusplaadi JTAG-port → silumisseade → arvuti USB-port (silumiseks ja programmi allalaadimiseks). CC2430 arendusplaadi jadaport → arvuti USB-port (arvuti ja CC2430 andmeside jaoks). Seejärel tuleb paigaldada USB ja jadapordi vaheline draiver ( allalaadimise aadress ). Andmete saatmiseks jadaporti on vaja ka jadapordi silumisvahendit ( allalaadimisaadress ). (3) Programmi vooskeem
(4) Eksperimendi lähtekood ja analüüs/* Eksperimendi kirjeldus: UART0, baudikiirus 115200bps, PC saadab CC2430-le stringi (lõpp @ märgiga), CC2430 võtab stringi vastu ja tagastab selle*/#include unsigned char recv_buf[ 300 ] = {0};
u nsigned char recv_count = 0;/* süsteemi kella initsialiseerimine-------------------------------------------------------*/void xtal_init( void ) { SLEEP & amp;= ~0x04; // mõlemad toiteallikadwhile (! (SLEEP & 0x40 )); //kristallostsillaator on sisse lülitatud ja stabiilne CLKCON &=~0x47; &
nbsp; // valime 32MHz kristallostsillaatori SLEEP |=0x04; }/*UART0 side initsialiseerimine-------------------------------------------------------*/void Uart0Init(
u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01;   ; //Valige UART0 valikuliseks positsiooniks üks, st RXD P0.2, TXD P0.3 P0SEL |=0x0C;  
nbsp; //Initialiseeri UART0 port, määra P0.2 ja P0.3 välise seadme IO-portiks U0CSR =0xC0; //Set UART0-porti.
nbsp; //Seadame UART-režiimi ja aktiveerime vastuvõtja U0GCR = 11; U0BAUD = 216; & nbsp;//Seadame UART0-porti, seadme P0.2 ja P0.3 välise seadme IO-porti. nbsp; //Set UART0 baudikiirus 115200bps, miks on 216 ja 11, võite vaadata CC2430 Hiina käsiraamatut  
; U0UCR |= StopBits|Parity; //Set StopBits and Parity }/*UART0 send data----------------------------------------
- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); //Oota, et UART oleks andmete saatmise ajal tühikäigul &
nbsp;U0DBUF = data; }/*UART0SendString-------------------------------------------------------*/void Uart0SendString( unsigned char *s) { & nbsp;while (*s !
= 0 ) //Saatke kordamööda iga märk stringis s Uart0Send(*s++); }/*UART0 võtab andmeid vastu-----------------------------------
- -------------------*/unsigned char Uart0Receive( void ) {unsigned char data;while (!
( U0CSR&0x04 )); //küsitakse, kas andmed on vastu võetud, muidu jätkatakse ootamist data=U0DBUF;//saadud andmete väljavõtminereturn data;&
nbsp; }/* põhifunktsioon-------------------------------------------------------*/void main( void ) {
u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //initialiseeri UART0, sea 1 stopbit, no parity & nbsp;Uart0SendString("Palun sisesta string, mis lõpeb '@'!
& quot;); recv_count =0;while( 1 ) {while ( 1 ) &
nbsp; { b = Uart0Receive() ;UARTif (b== '@' ) break; //Kui '@' on vastu võetud, hüpake välja.
l oop, väljund string recv_buf[recv_count] = b;//Kui '@' ei ole, jätkame märkide lisamist tähemassiivi recv_buf[] &
nbsp; recv_count++; }for ( i=0; i<recv_count; i++)="" [color="rgb(0," 136,=&
q uot;" 0)] ="" väljund string[="" i][="" color] Uart0Send(recv_buf); Uart0SendString ( ""); recv_count=0; &
n bsp; //reset } }Kõigepealt konfigureerige USART0-le vastav I/O port: seadke UART0 valikulisse positsiooni 1, tühjendades PECFRG.0 nulliks, st RXD vastab P0.2-le ja TXD vastab P0.3-le. Seejärel konfigureerige P0.2 ja P0.3 välise seadme I/O-deks. Seejärel valige UART-režiimi ja aktiveerige vastuvõtja. Seejärel konfigureerige USART0 parameetrid: baudikiirus 115200, pariteedita, stopbit 1. Seejärel saatke PC-le string: Please Input string ended with '@'! , ja seejärel kasutab while(1), et püüda jätkuvalt saada iga saadud märki. Kui see märk ei ole '@', tähendab see, et sisend ei ole veel lõppenud, ja jätkab selle märgi lisamist märgimassiivi recv_buf; kui see märk on täpselt '@', tähendab see, et sisend on lõppenud, ja seetõttu hüppab tsüklist välja, et saata iga märk recv_bufis järjestikku arvutisse, ja samal ajal nullib recv_count. (5) KatsetulemusedEsiteks, lõpetage riistvaraline ühendus ja avage jadaport .
s ilumise tööriist, konfigureerige parameetrid järgmiselt:
Klõpsake "Open Serial Port", seejärel käivitage IAR debugging, laske programm käivitada , leiate, et jadapordi silumine käivitub .
S a näed, et jadavigastustööriista vastuvõtukasti ilmub oodatav string:
Seejärel sisesta jadavigastustööriista allosas olevasse saatmise tekstikasti "
H ello" järgmiselt:
Pärast "Send" klõpsamist võite imestada, miks CC2430 ei saada teie sõnumit tagasi . Pärast "Send" klõpsamist võite imestada, miks CC2430 ei tagasta teie sisestatud sõnumit, see on sellepärast, et te ei lõpetanud sõnumit @-ga. Kirjutame uuesti "Zigbee!@" ja vajutame "Send", tulemus on järgmine:
g
Just the expected contents "Tere Zigbee!" nüüd! Selle katse lõppu ~ III. KokkuvõteSelles artiklis tutvustatakse CC2430 arendusplaati ja vastuvõtva arvuti kommunikatsiooni. Seeriaside baasil tuleme järgmises osas kokku, et õppida ADC (analoog-digitaalmuundamine) ühekordset proovivõtmist. Kasutades ADC-d, saame koguda temperatuurianduri väärtust arendusplaadil ja saata temperatuuri väärtuse jadapordi kaudu arvutisse, et seda kuvada.
|