架构师_程序员_码农网

K Hae salasana
Rekisteröidy

QQ登录

Vain yksi askel alkuun

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

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

[Kopioi linkki]
N 跳转到指定楼层
rakennuksen omistajalle
发表于 2014-10-30 23:18:18|只看该作者回帖奖励|Käänteinenselaus|Lukutila
I. Vapauteen tarttuminen

  Langattomassa sensoriverkossa CC2430:n on lähetettävä kerätyt tiedot isäntätietokoneeseen (eli tietokoneeseen) käsiteltäväksi, ja samaan aikaan isäntätietokoneen on lähetettävä ohjaustietoja CC2430:lle. Kaikki tämä on erottamaton osa näiden kahden välillä tapahtuvaa tiedonsiirtoa. Tässä jaksossa opimme, miten PC:n ja CC2430:n välinen sarjaliikenne toteutetaan.

  CC2430 sisältää kaksi sarjaliikenneliitäntää USART0 ja USART1, kumpikin sarjaportti sisältää kaksi tilaa: UART (asynkroninen) tila, SPI (synkroninen) tila, tämä jakso kattaa vain UART-tilan).

Toiseksi sarjaporttiviestintäkokeilu(1) Johdanto kokeeseen

  Saavuta kehityslevyn ja PC:n välinen viestintä: PC lähettää tietyn merkkijonon CC2430:lle, ja CC2430 palauttaa tämän merkkijonon PC:lle sen vastaanotettuaan.

(2) Kokeen valmistelu

  Ennen kuin aloitat koodin kirjoittamisen, sinun on asetettava laitteistotilat: oikea liitäntä + asenna USB-sarja-ajuri.

  Laitteistoyhteys tarvitsee kaksi:

     CC2430-kehityslevyn JTAG-portti → debuggeri → PC:n USB-portti (debuggausta ja ohjelman lataamista varten).

     CC2430-kehityslevyn sarjaportti → PC:n USB-portti (PC:n ja CC2430:n tiedonsiirtoa varten).

  Tämän jälkeen sinun on asennettava USB-sarjaporttiohjain ( latausosoite ).

  Sarjaporttiin lähetettävien tietojen lähettämiseen tarvitaan myös sarjaportin debuggaustyökalu ( latausosoite ).

(3) Ohjelman kulkukaavio







(
4) Kokeen lähdekoodi ja analyysi/* Kokeen kuvaus: UART0, baudinopeus 115200bps, PC lähettää merkkijonon CC2430:lle (päättyy @-merkillä), CC2430 vastaanottaa ja palauttaa merkkijonon*/#include unsigned char recv_buf[ 300 ] = {0};







u nsigned char recv_count = 0;/* järjestelmän kellon alustaminen-------------------------------------------------------*/void xtal_init( void ) { SLEEP &
amp;= ~0x04; // molempien virta päällewhile (!
(SLEEP & 0x40 )); //kideoskillaattori päällä ja vakaa CLKCON &=~0x47; &





nbsp; //valitaan 32 MHz:n kideoskillaattori SLEEP |=0x04; }/*UART0-yhteyden alustaminen-------------------------------------------------------*/void Uart0Init(

u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01; &nbsp
; //Valitaan UART0 valinnaiseksi ykkösasennoksi, eli RXD P0.2:een, TXD P0.3:een P0SEL |=0x0C; &nbsp

nbsp; //Initialisoi UART0-portti, aseta P0.2 ja P0.3 ulkoisen laitteen IO-portiksi U0CSR =0xC0;   //Setaa UART0-portti.


nbsp; //Säädä UART-tila ja ota vastaanotin käyttöön U0GCR = 11; U0BAUD = 216; & nbsp;//Säädä UART0-portti, aseta P0.2 ja P0.3 ulkoisen laitteen IO-portiksi.

nbsp; //Setää UART0 baud rate 115200bps, miksi on 216 ja 11, voit tutustua CC2430 Kiinan käsikirjaan &nbsp



; U0UCR |= StopBits|Parity; //Setää StopBits ja Parity }/*UART0 lähettää dataa----------------------------------------.



- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); // Odotetaan, että UART on käyttämättömänä datan lähettämisen aikana &






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




= 0 ) //Lähettää merkkijonon s jokaisen merkin vuorollaan Uart0Send(*s++); }/*UART0 hyväksyy datan-----------------------------------



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

( U0CSR&0x04 )); //kysytään onko dataa vastaanotettu, muuten jatketaan odottelua data=U0DBUF;//otetaan vastaanotettu datareturn data;&






nbsp; }/* pääfunktio-------------------------------------------------------*/void main( void ) {




u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //initialisoidaan UART0, asetetaan 1 stopbitti, ei pariteettia & nbsp;Uart0SendString("Syötä merkkijono, joka päättyy '@'!





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

nbsp; { b = Uart0Receive()
;UARTif (b== '@' ) break; //Jos '@' vastaanotetaan, hyppää ulos ohjelmasta.


s ilmukka, tulostetaan merkkijono recv_buf[recv_count] = b;//Jos ei '@', jatketaan merkkien lisäämistä merkkimäärään recv_buf[] &

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


q uot;" 0)] ="" output string[="" i][="" color] Uart0Send(recv_buf);
Uart0SendString ( ""); recv_count=0; &


n bsp; //reset } }

Määritä

ensin USART0:ta vastaava I/O-portti: aseta UART0 valinnaiseen asentoon 1 tyhjentämällä PECFRG.0 nollaksi, eli RXD vastaa P0.2:ta ja TXD vastaa P0.3:ta. Määritä sitten P0.2 ja P0.3 ulkoisen laitteen I/O:ksi.

Valitse sitten UART-tila ja ota vastaanotin käyttöön.

Määritä sitten USART0:n parametrit: baudinopeus 115200, ei pariteettia, stopbitti 1.

Lähetä sitten merkkijono PC:lle: Please Input string ended with '@'! , ja sitten se käyttää while(1) -ohjelmaa yrittäessään saada jokaisen vastaanottamansa merkin.

Kun tämä merkki ei ole '@', se tarkoittaa, että syöttö ei ole vielä päättynyt, ja jatkaa tämän merkin lisäämistä merkkimäärään recv_buf; kun tämä merkki on täsmälleen '@', se tarkoittaa, että syöttö on päättynyt, ja siksi hyppää ulos silmukasta lähettääksesi jokaisen merkin recv_bufissa PC:lle järjestyksessä, ja samalla nollaa recv_count.

(5) Kokeelliset tulokset

Ensiksi viimeistele laitteistokytkentä, ja avaa sarjaportti

.

2011022316522615.jpg
d

ebugging-työkalu, konfiguroi parametrit seuraavasti:

Klikkaa "Open Serial Port", käynnistä sitten IAR debugging, anna ohjelman suorittaa

, huomaat, että sarjaportin

debuggeri toimii

.

2011022316560420.jpg
N

äet odotetun merkkijonon ilmestyvän sarjavianmääritystyökalun vastaanottolaatikkoon:

Kirjoita sitten sarjavianmääritystyökalun alareunassa olevaan lähetystekstilaatikkoon "

2011022316581688.jpg
H

ello" seuraavasti:

Kun olet napsauttanut "Send", saatat ihmetellä, miksi

CC2430 ei palauta viestiäsi

. Kun olet napsauttanut "Lähetä", saatat ihmetellä, miksi CC2430 ei palauta kirjoittamaasi viestiä, se johtuu siitä, että et lopettanut viestiä @-merkillä.

  

Kirjoitetaan uudelleen "Zigbee!@" ja napsautetaan "Lähetä", tulos on seuraava:

2011022317013210.jpg
g

Just the expected contents "Hei Zigbee!" nyt!

Tämän kokeilun loppuun ~

III. Johtopäätös

Tässä artikkelissa esitellään CC2430-kehitysalusta ja isäntätietokoneen viestintä. Sarjaviestinnän perusteella seuraavassa osassa tulemme yhteen oppimaan ADC (analogi-digitaalimuunnos) yhden näytteenoton. ADC: n avulla voimme kerätä lämpötila-anturin arvon kehityslevyllä ja lähettää lämpötila-arvon sarjaportin kautta tietokoneeseen sen näyttämiseksi.






Edellinen: [Toista] Zigbee matka (4): muutama tärkeä CC2430 peruskokeita - ajastin keskeyttää
Seuraava: [Re-]Zigbee matka (VI): Muutama tärkeä CC2430 peruskokeiluja - ADC yksittäinen näytteenotto
Koodi Farmer-verkko, julkaistaan vain käytännön aikana, kohtasi teknisiä vaikeuksia, älä johda muita harhaan.
Sinun täytyy kirjautua sisään ennen kuin voit lähettää viestiä takaisin Kirjaudu sisään | Rekisteröidy

T ämä versio integraalisista säännöistä


VASTUUVAPAUSLAUSEKE: Kaikki Code Farmerin julkaisemat ohjelmistot, ohjelmointimateriaalit tai artikkelit on tarkoitettu käytettäväksi vain oppimis- ja tutkimustarkoituksiin; edellä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muutoin kaikki seuraukset jäävät käyttäjien itsensä kannettaviksi. Tämän sivuston tiedot verkosta, tekijänoikeuskiistalla ei ole mitään tekemistä tämän sivuston kanssa. Sinun on poistettava edellä mainittu sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tuet aitoa ohjelmistoa, osta rekisteröinti ja saat parempaa aitoa palvelua. Jos on olemassa rikkomuksia, ota meihin yhteyttä sähköpostitse, jotta voimme käsitellä sitä.

Sähköposti To:help@itsvse.com

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

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

Quick ReplyTakaisin alkuunTakaisin luetteloon