| I. Tomar el relevo En una red de sensores inalámbricos, el CC2430 necesita enviar los datos recogidos al ordenador central (es decir, el PC) para su procesamiento y, al mismo tiempo, el ordenador central necesita enviar información de control al CC2430. Todo esto es inseparable de la transferencia de información entre ambos. En esta sección, aprenderemos a implementar la comunicación serie entre el PC y el CC2430. El CC2430 incluye dos interfaces de comunicación serie USART0 y USART1, cada puerto serie incluye dos modos: modo UART (asíncrono), modo SPI (síncrono), esta sección sólo cubre el modo UART). Segundo, el experimento de comunicación por puerto serie(1) Introducción al experimento Consigue la comunicación entre la placa de desarrollo y el PC: el PC envía una determinada cadena al CC2430, y el CC2430 devuelve esta cadena al PC después de recibirla. (2) Preparación del experimento Antes de empezar a escribir el código, es necesario configurar las instalaciones de hardware: la conexión correcta + instalar el controlador USB a serie. La conexión de hardware necesita dos: Puerto JTAG de la placa de desarrollo CC2430 → depurador → puerto USB del PC (para depurar y descargar el programa). Puerto serie de la placa de desarrollo CC2430 → puerto USB del PC (para la comunicación de datos entre el PC y el CC2430). A continuación, es necesario instalar el controlador de USB a puerto serie ( dirección de descarga ) Para enviar datos al puerto serie, también se necesita una herramienta de depuración del puerto serie (dirección de descarga). (3) Diagrama de flujo del programa
(4) Código fuente del experimento y análisis/* Descripción del experimento: UART0,velocidad en baudios 115200bps, el PC envía una cadena al CC2430 (final con carácter @), el CC2430 recibe y devuelve la cadena*/#include unsigned char recv_buf[ 300 ] = {0};
u nsigned char recv_count = 0;/* inicialización del reloj del sistema-------------------------------------------------------*/void xtal_init( void ) { SLEEP & ¡amp;= ~0x04; // ambos se enciendenwhile (! (SLEEP & 0x40 )); //oscilador de cristal encendido y estable CLKCON &=~0x47; &
nbsp; //seleccionar oscilador de cristal 32MHz SLEEP |=0x04; }/*Inicialización de la comunicación UART0-------------------------------------------------------*/void Uart0Init(
u nsigned char StopBits, unsigned char Parity) { PERCFG&=~0x01;   ; //Elija UART0 como posición opcional uno, es decir, RXD a P0.2, TXD a P0.3 P0SEL |=0x0C;  
nbsp; //Inicializa el puerto UART0, establece P0.2 y P0.3 como puerto IO de dispositivo externo U0CSR =0xC0; //Configura el puerto UART0.
nbsp; //Configura el modo UART y habilita el receptor U0GCR = 11; U0BAUD = 216; & nbsp;//Configura el puerto UART0, configura P0.2 y P0.3 como puerto IO de dispositivo externo. nbsp; //Set UART0 baud rate to 115200bps, en cuanto a por qué es 216 y 11, puede consultar el manual en chino del CC2430  
; U0UCR |= StopBits|Parity; //Set StopBits and Parity }/*UART0 envía datos----------------------------------------
- --------------*/void Uart0Send( unsigned char data) {while ( U0CSR&0x01 ); //Espere a que la UART esté inactiva mientras envía datos &
nbsp;U0DBUF = datos; }/*UART0SendString-------------------------------------------------------*/void Uart0SendString( unsigned char *s) { & ¡nbsp;while (*s !
= 0 ) //Envía cada carácter de la cadena s sucesivamente Uart0Send(*s++); }/*UART0 acepta datos-----------------------------------
¡--------------------*/ unsigned char Uart0Receive( void ) {unsigned char data;while (!
( U0CSR&0x04 )); //consultar si se reciben datos, en caso contrario seguir esperando data=U0DBUF;//extraer datos recibidosreturn data;&
nbsp; }/* función principal-------------------------------------------------------*/void main( void ) {
u nsigned char i,b; xtal_init(); Uart0Init(0x00, 0x00 ); //inicializar UART0, poner 1 bit de parada, sin paridad & nbsp;Uart0SendString("¡Por favor, introduzca la cadena terminada en '@'!
& quot;); recv_count =0;while( 1 ) {while ( 1 ) &
nbsp; { b = Uart0Receive() ;UARTif (b== '@' ) break; //Si se recibe '@', saltar fuera del
b ucle, cadena de salida recv_buf[recv_count] = b;//Si no es '@', continúa añadiendo caracteres a la matriz de caracteres recv_buf[] &
nbsp; recv_count++; }for ( i=0; i<recv_count; i++)="" [color="rgb(0," 136,=&
q uot;" 0)] ="" cadena de salida[="" i][="" color] Uart0Send(recv_buf); Uart0SendString ( ""); recv_count=0; &
n bsp; //reset } }Primero configure el puerto de E/S correspondiente a USART0: ponga UART0 en la posición opcional 1 poniendo PECFRG.0 a cero, es decir, RXD corresponde a P0.2 y TXD a P0.3. A continuación configure P0.2 y P0.3 como E/S de dispositivo externo. Después elija el modo modo UART y habilite el receptor. ¡ Luego configura los parámetros de USART0: baud rate 115200, sin paridad, stop bit 1. Luego envía una cadena al PC: Please Input string ended with '@'! y luego usa while(1) para seguir intentando obtener cada caracter que recibe. Cuando este caracter no es '@ ', significa que la entrada aún no ha terminado, y continúa añadiendo este caracter al array de caracteres recv_buf; cuando este caracter es exactamente '@', significa que la entrada ha terminado, y por tanto salta fuera del bucle para enviar cada caracter en el recv_buf al PC en orden, y al mismo tiempo, reinicia el recv_count. (5) Resultados experimentalesEn primer lugar, completa la conexión hardware, y abre el puerto serie .
h erramienta de depuración, configure los parámetros de la siguiente manera:
Haga clic en "Abrir puerto serie", a continuación, inicie la depuración IAR, deje que el programa se ejecute , usted encontrará que el depurador de puerto serie se ejecutará .
V erá la cadena esperada que aparece en el cuadro de recepción en la herramienta de depuración serie:
A continuación, en el cuadro de texto de envío en la parte inferior de la herramienta de depuración serie, introduzca "
H ola" de la siguiente manera:
Después de hacer clic en "Enviar", puede que se pregunte por qué el CC2430 no le devuelve el mensaje . Después de hacer clic en "Enviar", puede que te preguntes por qué el CC2430 no te devuelve lo que has escrito, eso es porque no has terminado el mensaje con @. Volvamos a escribir "¡Zigbee!@" y pulsemos "Enviar", el resultado será el siguiente:
g
Sólo el contenido esperado "¡Hola Zigbee!" ¡ya! Para el final de este experimento ~ III. ConclusiónEste artículo presenta la placa de desarrollo CC2430 y la comunicación con el ordenador central. Con la base de la comunicación en serie, la siguiente sección nos reunimos para aprender ADC (conversión analógico-digital) de muestreo simple. Usando ADC, podemos recoger el valor del sensor de temperatura en la placa de desarrollo y enviar el valor de la temperatura a través del puerto serie al PC para mostrarlo.
|