架构师_程序员_码农网

N Recuperar contraseña
Registrarse

QQ登录

Sólo un paso para empezar

Buscar en
Vista:5250|Repuesta: 0
打印 上一主题 下一主题

[转]Zigbee之旅(五):几个重要的CC2430基础实验--Comunicación por puerto serie

[Copiar enlace]
A 跳转到指定楼层
el propietario del edificio
发表于 2014-10-30 23:18:18|只看该作者回帖奖励|Navegar hacia atrás |Modo de lectura
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; &nbsp
; //Elija UART0 como posición opcional uno, es decir, RXD a P0.2, TXD a P0.3 P0SEL |=0x0C; &nbsp

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 &nbsp



; 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 experimentales

En primer lugar, completa la conexión hardware, y abre el puerto serie

.

2011022316522615.jpg
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á

.

2011022316560420.jpg
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 "

2011022316581688.jpg
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:

2011022317013210.jpg
g

Sólo el contenido esperado "¡Hola Zigbee!" ¡ya!

Para el final de este experimento ~

III. Conclusión

Este 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.






Previous :[Repetir] Viaje Zigbee (4): algunos experimentos básicos importantes CC2430 - interrupción del temporizador.
Next :[Re-]Zigbee viaje (VI): algunos experimentos básicos importantes CC2430 - muestreo único ADC
Código Farmer red, sólo se publica en el curso de la práctica, se encontró con dificultades técnicas, no inducir a error a los demás.
Tienes que iniciar sesión antes de poder volver a publicar Iniciar sesión | Registrarse

E sta versión de las normas integrales


DESCARGO DE RESPONSABILIDAD: Todo el software, materiales de programación o artículos publicados por Code Farmer se limitan a ser utilizados únicamente para fines de aprendizaje e investigación; los contenidos anteriores no podrán ser utilizados con fines comerciales o ilegales, de lo contrario, todas las consecuencias serán asumidas por los propios usuarios. Esta información del sitio de la red, disputa de derechos de autor no tiene nada que ver con este sitio. Debe eliminar completamente el contenido anterior de su ordenador en las 24 horas siguientes a la descarga. Si le gusta el programa, por favor apoye el software genuino, compre el registro y obtenga un mejor servicio genuino. Si se produce alguna infracción, póngase en contacto con nosotros por correo electrónico para solucionarla.

Correo To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:51

Respuesta rápidaVolver arribaVolver a la lista