Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 7554|Απάντηση: 0

Zigbee Journey (5): Αρκετά σημαντικά βασικά πειράματα CC2430 - σειριακή επικοινωνία

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 30/10/2014 11:18:18 μ.μ. | | | |
1. Σύνδεση του ανώτερου και του κατώτερου επιπέδου

Σε ένα ασύρματο δίκτυο ανίχνευσης, το CC2430 πρέπει να στείλει τα δεδομένα που συλλέγονται στον κεντρικό υπολογιστή (δηλαδή, στον υπολογιστή) για επεξεργασία και ο κεντρικός υπολογιστής πρέπει να στείλει πληροφορίες ελέγχου στο CC2430. Όλα αυτά είναι αδιαχώριστα από τη μετάδοση πληροφοριών μεταξύ των δύο. Σε αυτήν την ενότητα, θα μάθουμε πώς να υλοποιούμε την επικοινωνία σειριακής θύρας μεταξύ του υπολογιστή και του CC2430.

Το CC2430 περιλαμβάνει 2 σειριακές διεπαφές επικοινωνίαςUSART0καιΗΠΑΑΡΤ1, κάθε σειριακή θύρα περιλαμβάνει δύο λειτουργίες:UART(ασύγχρονη) κατάσταση,SPI(σύγχρονη) λειτουργία, αυτή η ενότητα ασχολείται μόνο με τη λειτουργία UART).

2. Πείραμα επικοινωνίας σειριακής θύρας(1) Εισαγωγή στο πείραμα

Πραγματοποιήστε την επικοινωνία μεταξύ της πλακέτας ανάπτυξης και του υπολογιστή: Ο υπολογιστής στέλνει μια συγκεκριμένη συμβολοσειρά στο CC2430 και το CC2430 επιστρέφει αυτήν τη συμβολοσειρά στον υπολογιστή αφού τη λάβει.

(2) Πειραματική προετοιμασία

Πριν ξεκινήσετε να γράφετε κώδικα, πρέπει να ρυθμίσετε τις εγκαταστάσεις υλικού: σωστή σύνδεση + εγκατάσταση του σειριακού προγράμματος οδήγησης USB.

Απαιτούνται δύο συνδέσεις υλικού:

    Η θύρα JTAG της πλακέτας ανάπτυξης CC2430 → το πρόγραμμα εντοπισμού σφαλμάτων → τη θύρα USB του υπολογιστή(Για εντοπισμό σφαλμάτων και λήψη προγραμμάτων)

    Σειριακή θύρα πλακέτας ανάπτυξης CC2430 → θύρα USB υπολογιστή(Για επικοινωνία δεδομένων μεταξύ Η/Υ και CC2430)

Στη συνέχεια, πρέπει να εγκαταστήσετε το πρόγραμμα οδήγησης USB σε σειριακό (Διεύθυνση λήψης

Για την αποστολή δεδομένων στη σειριακή θύρα, ένα εργαλείο εντοπισμού σφαλμάτων σειριακής θύρας (Διεύθυνση λήψης)。

(3) Διάγραμμα ροής προγράμματος

(4) Πειραματικός πηγαίος κώδικας και ανάλυση/*
  Πειραματική περιγραφή: UART0, ρυθμός baud 115200bps, ο υπολογιστής στέλνει μια συμβολοσειρά στο CC2430 (που τελειώνει με @ χαρακτήρα), το CC2430 επιστρέφει τη συμβολοσειρά αφού τη λάβει
*/

#include

ανυπόγραφο κάρβουνοrecv_buf[300] = {0};
ανυπόγραφο κάρβουνοrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
άκυροxtal_init(άκυρο)
{
  ΥΠΝΟΣ &= ~0x04;            //都上电
  ενώ(! (ΥΠΝΟΣ &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Επιλέξτε έναν κρυσταλλικό ταλαντωτή 32 MHz
  ΥΠΝΟΣ |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
άκυροUart0Init(ανυπόγραφο κάρβουνοStopBits,ανυπόγραφο κάρβουνοΙσοτιμία)
{
   PERCFG&= ~0x01;                  Επιλέξτε UART0 ως την πρώτη προαιρετική θέση, δηλαδή, RXD σε P0.2 και TXD σε P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Ρυθμίστε τη λειτουργία UART και ενεργοποιήστε τον δέκτη
   
   U0GCR = 11;
   U0BAUD = 216;                     Ρυθμίστε τον ρυθμό baud UART0 στα 115200bps, καθώς για το γιατί είναι 216 και 11, ανατρέξτε στο κινεζικό εγχειρίδιο CC2430
   
   U0UCR |= StopBits| Ισοτιμία;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
άκυρο  Uart0Αποστολή(ανυπόγραφο κάρβουνοδεδομένα)
{
  ενώ(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = δεδομένα·
}

/*UART0发送字符串
-------------------------------------------------------*/
άκυροUart0SendString(ανυπόγραφο κάρβουνο*ιθ)
{
  ενώ(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
ανυπόγραφο κάρβουνοUart0Receive(άκυρο)
{
  ανυπόγραφο κάρβουνοδεδομένα·
  ενώ(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  δεδομένα=U0DBUF;         //提取接收到的数据
  Επιστροφήδεδομένα·         
}

/*主函数
-------------------------------------------------------*/
άκυροmain(άκυρο)
{
  ανυπόγραφο κάρβουνοi,β;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("Παρακαλώ η συμβολοσειρά εισαγωγής τελείωσε με '@'!");

  recv_count =0;
  
  ενώ(1)
  {
    ενώ(1)                           
    {
      β = Uart0Receive(); UART
      αν(β=='@')Διάλειμμα;                 Εάν ληφθεί το '@', μεταπηδά έξω από τον βρόχο και εξάγει τη συμβολοσειρά

      recv_buf[recv_count] = β;        Εάν δεν είναι '@', συνεχίστε να προσθέτετε χαρακτήρες στον πίνακα χαρακτήρων recv_buf[]
      recv_count++;
    }
    Για(i=0; θ<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" συμβολοσειρά εξόδου[="" i][="" χρώμα]
      Uart0Αποστολή(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Πρώτα, διαμορφώστε τη θύρα I/O που αντιστοιχεί στο USART0: περάστε το ζεύγοςPECFRG.0Ρυθμίστε το UART0 στην προαιρετική θέση 1, δηλαδή, P0.2 για RXD και P0.3 για TXD. Στη συνέχεια, διαμορφώστε τα P0.2 και P0.3 ως I/O εξωτερικής συσκευής.

Στη συνέχεια, επιλέξτε τη λειτουργία UART και ενεργοποιήστε τον δέκτη. Στη συνέχεια, διαμορφώστε τις παραμέτρους του USART0: ρυθμός baud 115200, χωρίς ισοτιμία και bit διακοπής 1.

Στη συνέχεια, στείλτε μια συμβολοσειρά στον υπολογιστή: Εισαγάγετε τη συμβολοσειρά που τελειώνει με'@'! και, στη συνέχεια, χρησιμοποιήστε το while(1) για να συνεχίσετε να προσπαθείτε να λάβετε κάθε χαρακτήρα. Όταν αυτός ο χαρακτήρας δεν το κάνει'@', σημαίνει ότι η είσοδος δεν είναι πλήρης και συνεχίστε να προσθέτετε αυτόν τον χαρακτήρα στον πίνακα χαρακτήρων recv_buf. Αυτός ο χαρακτήρας είναι σωστός'@', η είσοδος έχει ολοκληρωθεί, επομένως ο βρόχος αποστέλλεται στον υπολογιστή προκειμένου κάθε χαρακτήρας του recv_buf να σταλεί στον υπολογιστή, ενώ γίνεται επαναφορά του recv_count.

(5) Πειραματικά αποτελέσματα

Αρχικά, ολοκληρώστε τη σύνδεση υλικού, ανοίξτε το εργαλείο εντοπισμού σφαλμάτων σειριακής θύρας και διαμορφώστε τις παραμέτρους όπως φαίνεται παρακάτω:

Κάντε κλικ στο "Άνοιγμα σειριακής θύρας" και, στη συνέχεια, ξεκινήστε τον εντοπισμό σφαλμάτων IAR, αφήστε το πρόγραμμα να εκτελεστεί και θα βρείτε την αναμενόμενη συμβολοσειρά να εμφανίζεται στο πλαίσιο λήψης στο εργαλείο εντοπισμού σφαλμάτων σειριακής θύρας:

Στη συνέχεια, πληκτρολογήστε "Hello" στο πλαίσιο κειμένου αποστολής κάτω από το εργαλείο εντοπισμού σφαλμάτων σειριακής θύρας, όπως φαίνεται παρακάτω:

Αφού κάνετε κλικ στο "Αποστολή", μπορεί να αναρωτηθείτε γιατί το CC2430 δεν επιστρέφει αυτό που πληκτρολογήσατε, επειδή δεν τελειώσατε σε @.

Πληκτρολογούμε ξανά "Zigbee!@", κάνουμε κλικ στο "Αποστολή" και το αποτέλεσμα μοιάζει με αυτό:

Το αναμενόμενο περιεχόμενο "Hello Zigbee!" θα εμφανιστεί. Τελείωσε! Αυτό είναι το τέλος του πειράματος~

3. Συμπέρασμα

Αυτό το άρθρο περιγράφει την επικοινωνία μεταξύ της πλακέτας ανάπτυξης CC2430 και του κεντρικού υπολογιστή. Τώρα που έχουμε τα βασικά της σειριακής επικοινωνίας, ας μάθουμε για τη μεμονωμένη δειγματοληψία ADC (μετατροπή αναλογικού σε ψηφιακό) στην επόμενη ενότητα. Με το ADC, μπορούμε να συλλέξουμε την τιμή του αισθητήρα θερμοκρασίας στην πλακέτα ανάπτυξης και να στείλουμε την τιμή θερμοκρασίας στον υπολογιστή μέσω της σειριακής θύρας για να την εμφανίσουμε.






Προηγούμενος:Zigbee Journey (4): Αρκετά σημαντικά βασικά πειράματα CC2430 - διακοπή χρονοδιακόπτη
Επόμενος:Ταξίδι με Zigbee (6): Αρκετά σημαντικά βασικά πειράματα CC2430 - Μονή δειγματοληψία ADC
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com