Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 7554|Répondre: 0

Zigbee Journey (5) : Plusieurs expériences fondamentales importantes de CC2430 - communication série

[Copié le lien]
Publié sur 30/10/2014 23:18:18 | | | |
1. Reliant les niveaux supérieur et inférieur

Dans un réseau de détection sans fil, le CC2430 doit envoyer les données collectées à l’ordinateur hôte (c’est-à-dire PC) pour traitement, et l’ordinateur hôte doit transmettre les informations de contrôle au CC2430. Tout cela est indissociable de la transmission d’informations entre les deux. Dans cette section, nous apprendrons comment implémenter la communication par port série entre le PC et le CC2430.

Le CC2430 comprend 2 interfaces de communication sérieUSART0etUSART1, chaque port série comprend deux modes :UART(asynchrone) mode,SPI(synchrone), cette section ne traite que du mode UART).

2. Expérience de communication par port série(1) Introduction à l’expérience

Comprendre la communication entre la carte de développement et le PC : le PC envoie une certaine chaîne au CC2430, et le CC2430 renvoie cette chaîne au PC après l’avoir reçue.

(2) Préparation expérimentale

Avant de commencer à écrire du code, vous devez configurer les fonctionnalités matérielles : connexion correcte + installation du pilote série USB.

Deux connexions matérielles sont requises :

    Le port JTAG de la carte de développement CC2430 → le débogueur → le port USB du PC(Pour le débogage et le téléchargement de programmes)

    Port série de la carte de développement CC2430 → port USB du PC(Pour la communication de données entre PC et CC2430)

Ensuite, il faut installer le pilote USB vers série (Adresse de téléchargement

Pour envoyer des données au port série, un outil de débogage des ports série (Adresse de téléchargement)。

(3) Organigramme de programme

(4) Code source expérimental et analyse/*
  Description expérimentale : UART0, débit en bauds 115200 bps, PC envoie une chaîne à CC2430 (se terminant par @ caractère), CC2430 renvoie la chaîne après l’avoir reçue
*/

#include

non signé Charrecv_buf[300] = {0};
non signé Charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
vidextal_init(vide)
{
  SOMMEIL &= ~0x04;            //都上电
  tandis que(! (SOMMEIL &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Choisissez un oscillateur à cristal de 32 MHz
  SOMMEIL |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
videUart0Init(non signé CharStopBits,non signé CharParité)
{
   PERCFG&= ~0x01;                  Sélectionnez UART0 comme première position optionnelle, c’est-à-dire RXD vers P0.2 et TXD vers P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Réglez en mode UART et activez le récepteur
   
   U0GCR = 11 ;
   U0BAUD = 216 ;                     Réglez le débit UART0 à 115200 bps, pour savoir pourquoi il est à 216 et 11, veuillez consulter le manuel chinois CC2430
   
   U0UCR |= StopBits| Parité ;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
vide  Uart0Send(non signé Chardonnées)
{
  tandis que(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = data ;
}

/*UART0发送字符串
-------------------------------------------------------*/
videUart0SendString(non signé Char*s)
{
  tandis que(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++) ;
}

/*UART0接受数据
-------------------------------------------------------*/
non signé CharUart0Receive(vide)
{
  non signé Chardonnées ;
  tandis que(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF ;         //提取接收到的数据
  Retourdonnées ;         
}

/*主函数
-------------------------------------------------------*/
videmain(vide)
{
  non signé Chari,b ;
  
  xtal_init() ;

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString(« Veuillez : La chaîne d’entrée se terminait par '@' !");

  recv_count =0;
  
  tandis que(1)
  {
    tandis que(1)                           
    {
      b = Uart0Receive() ; UART
      si(b=='@')Rupture;                 Si '@' est reçu, il sort de la boucle et produit la chaîne

      recv_buf[recv_count] = b ;        Si ce n’est pas '@', continuez à ajouter des caractères à la liste de caractères recv_buf[]
      recv_count++ ;
    }
    pour(i=0; i<recv_count ; i++)=" » [color="rgb(0, » 136,=" » 0)]=" » chaîne de sortie[=" » i][=" » couleur]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

D’abord, configurez le port d’E/S correspondant à USART0 : passez la pairePECFRG.0Réglez UART0 en position optionnelle 1, c’est-à-dire P0.2 pour RXD et P0.3 pour TXD. Ensuite, configurez P0.2 et P0.3 comme entrées/sorties externes de périphériques.

Ensuite, sélectionnez le mode UART et activez le récepteur. Ensuite, configurez les paramètres de USART0 : débit en bauds 115200, sans parité, et bit d’arrêt de 1.

Ensuite, envoie une chaîne au PC : Veuillez Chaîne d’entrée terminée par'@'! , puis utiliser while(1) pour continuer à essayer de recevoir tous les personnages. Quand ce personnage ne le fait pas'@', cela signifie que l’entrée n’est pas complète, et que ce caractère continue d’ajouter à la recv_buf du tableau de caractères ; Ce personnage est parfait'@', l’entrée est terminée, donc la boucle est envoyée au PC afin que chaque personnage du recv_buf soit envoyé au PC, tout en réinitialisant le recv_count.

(5) Résultats expérimentaux

Commencez par compléter la connexion matérielle, ouvrir l’outil de débogage des ports série, et configurer les paramètres comme indiqué ci-dessous :

Cliquez sur « Ouvrir le port série », puis lancez le débogage de l’IAR, laissez le programme s’exécuter, et vous verrez la chaîne attendue apparaître dans la boîte de réception de l’outil de débogage du port série :

Ensuite, tapez « Bonjour » dans la boîte de texte d’envoi sous l’outil de débogage des ports série, comme montré ci-dessous :

Après avoir cliqué sur « Envoyer », vous vous demandez peut-être pourquoi le CC2430 ne retourne pas ce que vous avez tapé, car vous ne vous êtes pas terminé par @.

Nous tapons à nouveau « Zigbee !@ », cliquez sur « Envoyer » et le résultat ressemble à ceci :

Le contenu attendu « Bonjour Zigbee ! » apparaîtra. C’est fini! C’est la fin de l’expérience~

3. Conclusion

Cet article décrit la communication entre la carte de développement CC2430 et l’ordinateur hôte. Maintenant que nous connaissons les bases de la communication série, découvrons l’échantillonnage unique ADC (conversion analogique-numérique) dans la section suivante. Avec l’ADC, nous pouvons collecter la valeur du capteur de température sur la carte de développement et envoyer la valeur de température au PC via le port série pour l’afficher.






Précédent:Zigbee Journey (4) : Plusieurs expériences importantes de base CC2430 - interruption du minuteur
Prochain:Zigbee Journey (6) : Plusieurs expériences fondamentales importantes de CC2430 - Échantillonnage unique ADC
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com