架构师_程序员_码农网

K Parooli taastamine
Registreeri

QQ登录

Ainult üks samm, et alustada

Otsi
View:5250|Reply: 0
打印 上一主题 下一主题

[转]Zigbee之旅(五):几个重要的CC2430基础实验--Seriaalport side

[Kopeeri link]
L 跳转到指定楼层
hoone omanikule
发表于 2014-10-30 23:18:18|只看该作者回帖奖励|ReverseBrowse|Read Mode
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; &nbsp
; //Valige UART0 valikuliseks positsiooniks üks, st RXD P0.2, TXD P0.3 P0SEL |=0x0C; &nbsp

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 &nbsp



; 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) Katsetulemused

Esiteks, lõpetage riistvaraline ühendus ja avage jadaport

.

2011022316522615.jpg
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

.

2011022316560420.jpg
S

a näed, et jadavigastustööriista vastuvõtukasti ilmub oodatav string:

Seejärel sisesta jadavigastustööriista allosas olevasse saatmise tekstikasti "

2011022316581688.jpg
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:

2011022317013210.jpg
g

Just the expected contents "Tere Zigbee!" nüüd!

Selle katse lõppu ~

III. Kokkuvõte

Selles 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.






Eelmine: [Kordus] Zigbee teekond (4): mõned olulised CC2430 põhilised katsed - taimer katkestada
Järgmine: [Re-]Zigbee teekond (VI): Mõned olulised CC2430 põhikatsed - ADC üksikproovivõtmine
Kood Farmer võrgu, ainult avaldatud käigus praktika, tekkinud tehnilised raskused, ei eksita teisi.
Sa pead sisse logima, enne kui saad tagasi postitada Logi sisse | Registreeru

S ee versioon integraalseid reegleid


KINNITUS: Kõik Code Farmeri avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja teadustööks; eespool nimetatud sisu ei tohi kasutada kaubanduslikel või ebaseaduslikel eesmärkidel, vastasel juhul kannavad kõik tagajärjed kasutajad ise. See sait teavet võrgu, autoriõiguse vaidlus ei ole midagi pistmist selle saidi. Te peate eespool nimetatud sisu täielikult eemaldama oma arvutist 24 tunni jooksul pärast allalaadimist. Kui teile meeldib programm, palun toetage ehtsat tarkvara, ostke registreerimine ja saada paremat ehtsat teenust. Kui esineb rikkumine, võtke meiega ühendust e-posti teel, et sellega tegeleda.

Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

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

Kiire vastusTagasi ülesTagasi nimekirja