Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 7636|Risposta: 0

Viaggio Zigbee (5): Diversi importanti esperimenti di base CC2430 - comunicazione seriale

[Copiato link]
Pubblicato su 30/10/2014 23:18:18 | | | |
1. Collegamento tra i livelli superiori e inferiori

In una rete di rilevamento wireless, il CC2430 deve inviare i dati raccolti al computer host (cioè PC) per l'elaborazione, mentre il computer host deve inviare le informazioni di controllo al CC2430. Tutto ciò è inseparabile dalla trasmissione di informazioni tra i due. In questa sezione impareremo come implementare la comunicazione tra porte seriali tra il PC e il CC2430.

Il CC2430 include 2 interfacce di comunicazione serialiUSART0eUSART1, ogni porta seriale include due modalità:UART(asincrono) modalità,SPI(sincrona), questa sezione riguarda solo la modalità UART).

2. Esperimento di comunicazione con porte seriali(1) Introduzione all'esperimento

Riconosci la comunicazione tra la scheda di sviluppo e il PC: il PC invia una certa stringa al CC2430, e il CC2430 restituisce questa stringa al PC dopo averla ricevuta.

(2) Preparazione sperimentale

Prima di iniziare a scrivere codice, devi configurare le funzionalità hardware: connessione corretta + installare il driver seriale USB.

Sono necessarie due connessioni hardware:

    La porta JTAG della scheda di sviluppo CC2430 → il debugger → porta USB del PC(Per il debug e il download di programmi)

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

Poi devi installare il driver da USB a serial (Indirizzo di download

Per inviare dati alla porta seriale, uno strumento di debug della porta seriale (Indirizzo di download)。

(3) Diagramma di flusso del programma

(4) Codice sorgente sperimentale e analisi/*
  Descrizione sperimentale: UART0, velocità di trasmissione 115200bps, PC invia una stringa a CC2430 (che termina con il carattere @), CC2430 restituisce la stringa dopo averla ricevuta
*/

#include

senza firmatura Charrecv_buf[300] = {0};
senza firmatura Charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
Voidxtal_init(Void)
{
  SONNO &= ~0x04;            //都上电
  mentre(! (SONNO &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Scegli un oscillatore a cristallo a 32MHz
  SONNO |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
VoidUart0Init(senza firmatura CharStopBits,senza firmatura CharParità)
{
   PERCFG&= ~0x01;                  Seleziona UART0 come prima posizione opzionale, cioè da RXD a P0.2 e da TXD a P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Imposta la modalità UART e attiva il ricevitore
   
   U0GCR = 11;
   U0BAUD = 216;                     Imposta la velocità di baud UART0 a 115200bps, per quanto riguarda il motivo di 216 e 11, si prega di consultare il manuale cinese CC2430
   
   U0UCR |= StopBits| Parità;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
Void  Uart0Send(senza firmatura Chardati)
{
  mentre(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = dati;
}

/*UART0发送字符串
-------------------------------------------------------*/
VoidUart0SendString(senza firmatura Char*s)
{
  mentre(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
senza firmatura CharUart0Receive(Void)
{
  senza firmatura Chardati;
  mentre(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  Ritornodati;         
}

/*主函数
-------------------------------------------------------*/
Voidmain(Void)
{
  senza firmatura Chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Per favore, stringa di input terminava con '@'!");

  recv_count =0;
  
  mentre(1)
  {
    mentre(1)                           
    {
      b = Uart0Ricevuto(); UART
      se(b=='@')Pausa;                 Se viene ricevuto '@', esce dal loop e invia la stringa

      recv_buf[recv_count] = b;        Se non è '@', continua ad aggiungere caratteri all'array di caratteri recv_buf[]
      recv_count++;
    }
    per(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" stringa di output[="" i][="" colore]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Per prima cosa, configura la porta I/O corrispondente a USART0: passa la coppiaPECFRG.0Imposta UART0 su posizione opzionale 1, cioè P0.2 per RXD e P0.3 per TXD. Poi configura P0.2 e P0.3 come I/O esterni dei dispositivi.

Poi seleziona la modalità UART e attiva il ricevitore. Poi configura i parametri di USART0: baud rate 115200, nessuna parità e stop bit di 1.

Poi invia una stringa al PC: Please Input string terminata con'@'! , e poi usa while(1) per continuare a cercare di ottenere ogni personaggio ricevuto. Quando questo personaggio non lo fa'@', significa che l'input non è completo, e si continua ad aggiungere questo carattere all'array di caratteri recv_buf; Questo personaggio è perfetto'@', l'input è completo, quindi il loop viene inviato al PC affinché ogni carattere del recv_buf venga inviato al PC, mentre il recv_count viene resettato.

(5) Risultati sperimentali

Per prima cosa, completare la connessione hardware, aprire lo strumento di debug delle porte seriali e configurare i parametri come mostrato di seguito:

Clicca su "Apri porta seriale", poi avvia il debug IAR, lascia che il programma si segua e troverai la stringa attesa che appare nella casella di ricezione dello strumento di debug della porta seriale:

Poi inserisci "Hello" nella casella di testo invio sotto lo strumento di debug della porta seriale, come mostrato di seguito:

Dopo aver cliccato su "Invia", potresti chiederti perché il CC2430 non restituisca ciò che hai digitato, perché non sei finito in @.

Digitiamo di nuovo "Zigbee!@", clicchiamo su "Invia" e il risultato è questo:

Il contenuto atteso "Ciao Zigbee!" apparirà. È finita! Questa è la fine dell'esperimento~

3. Conclusione

Questo articolo descrive la comunicazione tra la scheda di sviluppo CC2430 e il computer host. Ora che abbiamo le basi della comunicazione seriale, impariamo nel prossimo articolo del campionamento singolo ADC (conversione analogico-digitale). Con l'ADC, possiamo raccogliere il valore del sensore di temperatura sulla scheda di sviluppo e inviare il valore della temperatura al PC tramite la porta seriale per visualizzarlo.






Precedente:Viaggio Zigbee (4): Diversi importanti esperimenti di base CC2430 - interruzione del timer
Prossimo:Zigbee Journey (6): Diversi importanti esperimenti di base CC2430 - ADC campionamento singolo
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com