架构师_程序员_码农网

N Recupera la password
Registrazione

QQ登录

Un solo passo per iniziare

Ricerca
Vista:5250|Risposta: 0
打印 上一主题 下一主题

[转]Zigbee之旅(五):几个重要的CC2430基础实验- Comunicazione con porta seriale

[Copia link]
S 跳转到指定楼层
al proprietario dell'edificio
发表于 2014-10-30 23:18:18|只看该作者回帖奖励 | Scorri all'indietro|Modalità di lettura
I. Prendersi cura dei problemi

  In una rete di sensori wireless, il CC2430 deve inviare i dati raccolti al computer host (cioè al PC) per l'elaborazione e allo stesso tempo il computer host deve inviare informazioni di controllo al CC2430. Tutto questo è inseparabile dal trasferimento di informazioni tra i due. In questa sezione, impareremo a implementare la comunicazione seriale tra il PC e il CC2430.

  CC2430 include due interfacce di comunicazione seriale USART0 e USART1; ogni porta seriale comprende due modalità: modalità UART (asincrona), modalità SPI (sincrona); questa sezione tratta solo la modalità UART).

In secondo luogo, l'esperimento di comunicazione con la porta seriale(1) Introduzione all'esperimento

  Realizzare la comunicazione tra la scheda di sviluppo e il PC: il PC invia una determinata stringa al CC2430 e il CC2430 la restituisce al PC dopo averla ricevuta.

(2) Preparazione dell'esperimento

  Prima di iniziare a scrivere il codice, è necessario impostare le strutture hardware: la connessione corretta + installare il driver USB-seriale.

  Le connessioni hardware devono essere due:

     porta JTAG della scheda di sviluppo CC2430 → debugger → porta USB del PC (per il debug e il download del programma)

     porta seriale della scheda di sviluppo CC2430 → porta USB del PC (per la comunicazione dei dati tra PC e CC2430)

  È quindi necessario installare il driver per la porta seriale USB ( indirizzo per il download ).

  Per inviare i dati alla porta seriale, è necessario anche uno strumento di debug della porta seriale ( indirizzo per il download ).

(3) Diagramma di flusso del programma







(
4) Codice sorgente dell'esperimento e analisi/* Descrizione dell' esperimento: UART0, baud rate 115200bps, il PC invia una stringa a CC2430 (termina con il carattere @), CC2430 riceve e restituisce la stringa*/#include unsigned char recv_buf[ 300 ] = {0};







u nsigned char recv_count = 0;/* inizializzazione dell'orologio di sistema-------------------------------------------------------*/void xtal_init( void ) { SLEEP &
amp;= ~0x04; // entrambi si accendonowhile (!
(SLEEP & 0x40 )); // oscillatore a cristalli acceso e stabile CLKCON &=~0x47; &





nbsp; //seleziona l'oscillatore a cristallo a 32 MHz SLEEP |=0x04; }/*Inizializzazione comunicazione UART0-------------------------------------------------------*/void Uart0Init(

u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01; &nbsp
/ /Scelta UART0 come posizione opzionale uno, cioè RXD a P0.2, TXD a P0.3 P0SEL |=0x0C; &nbsp

nbsp; //Inizializza la porta UART0, imposta P0.2 e P0.3 come porte IO del dispositivo esterno U0CSR =0xC0;   //Imposta la porta UART0.


nbsp; //Impostare la modalità UART e abilitare il ricevitore U0GCR = 11; U0BAUD = 216; & nbsp;//Impostare la porta UART0, impostare P0.2 e P0.3 come porta IO del dispositivo esterno.

nbsp; //Impostare il baud rate di UART0 a 115200bps; per sapere perché è 216 e 11, si può fare riferimento al manuale cinese del CC2430.



U0UCR |= StopBits|Parity; //Impostare StopBits e Parità }/*UART0 invia dati----------------------------------------



- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); //attendere che l'UART sia inattiva durante l'invio dei dati &






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




= 0 ) //Invia ogni carattere della stringa s a turno Uart0Send(*s++); }/*UART0 accetta dati-----------------------------------



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

( U0CSR&0x04 )); //chiedi se i dati sono stati ricevuti, altrimenti continua ad aspettare data=U0DBUF;//estrai i dati ricevutireturn data;&






nbsp; }/* funzione principale-------------------------------------------------------*/void main( void ) {




u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //inizializza la UART0, imposta 1 bit di stop, nessuna parità & nbsp;Uart0SendString("Inserire stringa terminata con '@'!





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

nbsp; { b = Uart0Receive()
Se b== '@' ) break; //Se viene ricevuto '@', uscire dal loop.


l oop, uscita stringa recv_buf[recv_count] = b;//se non è '@', continuare ad aggiungere caratteri all'array di caratteri recv_buf[] &

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


q uot;" 0)] ="" stringa di uscita[="" i][="" colore] Uart0Send(recv_buf);
Uart0SendString ( ""); recv_count=0; &


n bsp; //reset } }

Per

prima cosa configurare la porta di I/O corrispondente a USART0: impostare UART0 sulla posizione opzionale 1 azzerando PECFRG.0, cioè RXD corrisponde a P0.2 e TXD a P0.3. Configurare quindi P0.2 e P0.3 come I/O del dispositivo esterno.

Scegliere quindi la modalità

UART e abilitare il ricevitore

.

modalità UART e abilitare il ricevitore.

Configurare quindi i parametri di USART0: baud rate 115200, nessuna parità, bit di stop 1.

Inviare quindi una stringa al PC: Please Input string ended with '@'! e poi utilizza while(1) per cercare di ottenere ogni carattere ricevuto.

Quando questo carattere non è '@', significa che l'input non è ancora terminato, e continua ad aggiungere questo carattere all'array di caratteri recv_buf; quando questo carattere è esattamente '@', significa che l'input è terminato, e quindi salta fuori dal ciclo per inviare ogni carattere nel recv_buf al PC in ordine, e allo stesso tempo, azzera il recv_count.

(5) Risultati sperimentali

Innanzitutto, completare la connessione hardware e aprire la porta seriale

.

2011022316522615.jpg
L

o strumento di debug, configura i parametri come segue:

Fare clic su "Open Serial Port" (Apri porta seriale), quindi avviare il debug di IAR, lasciare che il programma venga eseguito

, si vedrà che

il debugger della

porta seriale verrà

eseguito

.

2011022316560420.jpg
N

ella casella di ricezione dello strumento di debug seriale apparirà la stringa prevista:

Quindi, nella casella di testo di invio nella parte inferiore dello strumento di debug seriale, inserire "

2011022316581688.jpg
H

ello" come segue:

Dopo aver fatto clic su "Send", ci si potrebbe chiedere perché il

CC2430 non restituisce il messaggio

. Dopo aver fatto clic su "Invia", ci si può chiedere perché il CC2430 non restituisca ciò che si è digitato: è perché non si è terminato il messaggio con @.

  

Digitiamo nuovamente "Zigbee!@" e facciamo clic su "Invia"; il risultato sarà il seguente:

2011022317013210.jpg
g

Solo il contenuto previsto "Ciao Zigbee!" ora!

Alla fine di questo esperimento ~

III. Conclusione

Questo articolo presenta la scheda di sviluppo CC2430 e la comunicazione con il computer host. Con la base della comunicazione seriale, nella prossima sezione impariamo a conoscere il campionamento singolo ADC (conversione analogico-digitale). Utilizzando l'ADC, possiamo raccogliere il valore del sensore di temperatura sulla scheda di sviluppo e inviare il valore della temperatura attraverso la porta seriale al PC per visualizzarlo.






Precedente: [Ripetizione] Viaggio Zigbee (4): alcuni importanti esperimenti di base del CC2430 - interrupt del timer
Next: [Ripetere] Viaggio Zigbee (VI): alcuni importanti esperimenti di base CC2430 - campionamento singolo ADC
Codice Farmer rete, solo pubblicato nel corso della pratica, ha incontrato difficoltà tecniche, non fuorviare gli altri.
Devi effettuare il login prima di poter postare Log in | Registrati

Q uesta versione delle regole integrali


DISCLAIMER: Tutti i software, i materiali di programmazione o gli articoli pubblicati da Code Farmer sono limitati all'uso per scopi di apprendimento e ricerca; i suddetti contenuti non devono essere utilizzati per scopi commerciali o illegali, altrimenti tutte le conseguenze saranno a carico degli utenti stessi. Le informazioni di questo sito provengono dalla rete, la disputa sul copyright non ha nulla a che fare con questo sito. È necessario rimuovere completamente il contenuto di cui sopra dal proprio computer entro 24 ore dal download. Se vi piace il programma, vi preghiamo di sostenere il software autentico, di acquistare la registrazione e di ottenere un servizio autentico migliore. In caso di violazione, si prega di contattarci via e-mail per risolvere il problema.

Posta To:help@itsvse.com

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

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

Risposta rapidaTorna all'inizioTorna all'elenco