Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 7636|Respuesta: 0

Zigbee Journey (5): Varios experimentos básicos importantes de CC2430 - comunicación serial

[Copiar enlace]
Publicado en 30/10/2014 23:18:18 | | | |
1. Conexión entre los niveles superior e inferior

En una red de detección inalámbrica, el CC2430 necesita enviar los datos recogidos al ordenador anfitrión (es decir, PC) para su procesamiento, y el ordenador anfitrión debe enviar la información de control al CC2430. Todo esto es inseparable de la transmisión de información entre ambos. En esta sección, aprenderemos cómo implementar la comunicación por puerto serie entre el PC y el CC2430.

El CC2430 incluye 2 interfaces de comunicación serialUSART0yUSART1, cada puerto serie incluye dos modos:UART(asíncrono) modo,SPI(modo síncrono), esta sección solo trata sobre el modo UART).

2. Experimento de comunicación por puerto serial(1) Introducción al experimento

Ten en cuenta la comunicación entre la placa de desarrollo y el PC: el PC envía una cadena determinada al CC2430, y el CC2430 devuelve esta cadena al PC tras recibirla.

(2) Preparación experimental

Antes de empezar a escribir código, necesitas configurar las funciones de hardware: conexión correcta + instalar el controlador serie USB.

Se requieren dos conexiones de hardware:

    El puerto JTAG de la placa de desarrollo CC2430 → el depurador → el puerto USB del PC(Para depuración y descarga de programas)

    Puerto serie de la placa de desarrollo CC2430 → puerto USB del PC(Para comunicación de datos entre PC y CC2430)

Luego tienes que instalar el controlador USB a serie (Dirección de descarga

Para enviar datos al puerto serial, una herramienta de depuración de puertos serie (Dirección de descarga)。

(3) Diagrama de flujo del programa

(4) Código fuente experimental y análisis/*
  Descripción experimental: UART0, velocidad de baudios 115200bps, PC envía una cadena a CC2430 (que termina con el carácter @), CC2430 devuelve la cadena tras recibirla
*/

#include

sin firmar charrecv_buf[300] = {0};
sin firmar charrecv_count =0;


/*系统时钟初始化
-------------------------------------------------------*/
Vacíoxtal_init(Vacío)
{
  SUEÑO &= ~0x04;            //都上电
  mientras(! (SUEÑO &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Elige un oscilador de cristal de 32MHz
  SUEÑO |=0x04;
}

/*UART0通信初始化
-------------------------------------------------------*/
VacíoUart0Init(sin firmar charStopBits,sin firmar charParidad)
{
   PERCFG&= ~0x01;                  Selecciona UART0 como primera posición opcional, es decir, RXD a P0.2 y TXD a P0.3
   P0SEL |=  0x0C;                  //初始化UART0端口,设置P0.2与P0.3为外部设备IO口

   U0CSR =0xC0;                    Configura en modo UART y activa el receptor
   
   U0GCR = 11;
   U0BAUD = 216;                     Configura la tasa de UART0 baudios a 115200 bps, y para saber por qué es 216 y 11, consulta el manual chino del CC2430
   
   U0UCR |= StopBits| Paridad;        //设置停止位与奇偶校验
}

/*UART0发送数据
-------------------------------------------------------*/
Vacío  Uart0Send(sin firmar chardatos)
{
  mientras(U0CSR&0x01);   //等待UART空闲时发送数据
  U0DBUF = datos;
}

/*UART0发送字符串
-------------------------------------------------------*/
VacíoUart0SendString(sin firmar char*s)
{
  mientras(*s !=0)         //依次发送字符串s中的每个字符
    Uart0Send(*s++);
}

/*UART0接受数据
-------------------------------------------------------*/
sin firmar charUart0Receive(Vacío)
{
  sin firmar chardatos;
  mientras(! (U0CSR&0x04));//查询是否收到数据,否则继续等待
  data=U0DBUF;         //提取接收到的数据
  devolucióndatos;         
}

/*主函数
-------------------------------------------------------*/
Vacíomain(Vacío)
{
  sin firmar chari,b;
  
  xtal_init();

  Uart0Init(0x00,0x00);  //初始化UART0,设置1个停止位,无奇偶校验
  Uart0SendString("¡Por favor, la cadena de entrada terminaba en '@'!");

  recv_count =0;
  
  mientras(1)
  {
    mientras(1)                           
    {
      b = Uart0Recibe(); UART
      si(b=='@')Pausa;                 Si se recibe '@', salta fuera del bucle y emite la cadena

      recv_buf[recv_count] = b;        Si no es '@', sigue añadiendo caracteres al array de caracteres recv_buf[]
      recv_count++;
    }
    para(i=0; i<recv_count; i++)="" [color="rgb(0," 136,="" 0)]="" cadena de salida[="" i][="" color]
      Uart0Send(recv_buf);
   
    Uart0SendString("");
    recv_count =0;                     //重置
  }
}

Primero, configura el puerto de E/S correspondiente a USART0: pasa el parPECFRG.0Configura UART0 en la posición opcional 1, es decir, P0.2 para RXD y P0.3 para TXD. Luego configura P0.2 y P0.3 como E/S externa de dispositivos.

Luego selecciona el modo UART y activa el receptor. Luego configura los parámetros de USART0: tasa de baudios 115200, sin paridad y bit de parada de 1.

Luego envía una cadena al PC: Por favor Cadena de entrada terminada con'@'! , y luego usa while(1) para seguir intentando que todos los personajes sean recibidos. Cuando este personaje no lo hace'@', significa que la entrada no está completa, y continúan añadiendo este carácter al array de caracteres recv_buf; Este personaje es perfecto'@', la entrada está completa, por lo que el bucle se envía al PC para que cada carácter del recv_buf se envíe al PC, mientras se reinicia el recv_count.

(5) Resultados experimentales

Primero, completar la conexión de hardware, abrir la herramienta de depuración de puertos serie y configurar los parámetros como se muestra a continuación:

Haz clic en "Abrir puerto serial", luego inicia la depuración de IAR, deja que el programa se ejecute y verás la cadena esperada apareciendo en la caja de recepción de la herramienta de depuración de puertos seriales:

Luego introduce "Hola" en el cuadro de texto de envío debajo de la herramienta de depuración de puertos seriales, como se muestra a continuación:

Después de hacer clic en "Enviar", puede que te preguntes por qué el CC2430 no devuelve lo que escribiste, porque no terminaste en @.

Escribimos "Zigbee!@" de nuevo, hacemos clic en "Enviar" y el resultado es así:

El contenido esperado "¡Hola Zigbee!" aparecerá en pantalla. ¡Se acabó! Este es el final del experimento~

3. Conclusión

Este artículo describe la comunicación entre la placa de desarrollo CC2430 y el ordenador anfitrión. Ahora que tenemos lo básico de la comunicación serie, aprendamos sobre el muestreo único de ADC (conversión analógica-digital) en la siguiente sección. Con ADC, podemos recoger el valor del sensor de temperatura en la placa de revelado y enviar el valor de temperatura al PC a través del puerto serie para mostrarlo.






Anterior:Viaje Zigbee (4): Varios experimentos básicos importantes de CC2430 - interrupción del temporizador
Próximo:Zigbee Journey (6): Varios experimentos básicos importantes de CC2430 - ADC muestreo único
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com