Trabajamos con la pila nRF24LU1 + USB. Parte 1

Este artículo describe el funcionamiento de la pila USB del módulo nRF24LU1 +. En la primera parte, una pequeña introducción, instalación de software y SDK, Hello World.
En la segunda parte consideraremos la inicializaciĂłn, la enumeraciĂłn, el soporte de WinUSB y el intercambio de datos con el host. Se supone que el lector tiene una comprensiĂłn inicial de USB. Si no, le aconsejo que se familiarice con el excelente manual .




PedĂ­ mis chips en eBay . Se incluyeron 2 mĂłdulos y un programador SPI. Vuelo directo en la pomada para aquellos que ordenan el mismo conjunto. No hay lĂ­nea de reinicio en el conector de programaciĂłn en el mĂłdulo mismo. Sin ella, la programaciĂłn del ISP no funciona. Tuve que soldar cuidadosamente.


En principio, los chips se pueden programar a través del gestor de arranque incorporado (e incluso escribir el suyo propio). También hay un montón de flashes SPI basados ​​en ftdi , arduino y más. El proceso de programación es similar al chip nrf24le1.

El chip nRF24LU1 + es:
  • Transceptor nRF24l01 + de 2.4GHz
  • controlador USB 2.0 de velocidad completa
  • Microcontrolador de 8 bits con nĂşcleo Intel MCS 51
  • Flash de 16 o 32 kb


El dispositivo interno del chip:

De las características, vale la pena mencionar que la RAM rápida es de solo 256 bytes (IRAM). Los 2 kb restantes (SRAM) se encuentran en el bus externo, respectivamente, el acceso a ellos es más lento. También hay un módulo de cifrado.

Configure Keil, nRFgo SDK y Hello World


Todo el desarrollo se llevará a cabo en el entorno de Keil y nRFgo SDK. Descargar, instalar ( tyts , tyts ).
Algunas palabras sobre la organización del proyecto. Creé esta estructura. Compilador, HAL y LIB copiados del nRFgo SDK. Los proyectos ya estarán directamente en la carpeta Proyectos.

├───compiler
│   ├───c51
│   ├───common
│   └───icc8051
├───hal
│   ├───nrf24l01p
│   ├───nrf24le1
│   └───nrf24lu1p
├───lib
│   ├───adns7530
│   ├───assertions
│   ├───crypt
│   ├───display
│   ├───eeprom
│   ├───eeprom255
│   └───rf_test
└───projects
     └───HelloWolrd

Entramos en Keil. Proyecto - Nuevo proyecto de uVision. Seleccionamos el catálogo con el proyecto, ingresamos el nombre del proyecto. A continuación, seleccione el chip como en la imagen, de acuerdo con todo.

A continuación, agregue la nueva fuente al proyecto (haga clic con el botón derecho en el Grupo de fuentes 1 - Agregar nuevo Iteam). ¡

Primer programa, imprima sin fin en Hello World! UART

#include <stdio.h>
#include "nrf24lu1p.h"
#include "hal_uart.h"
#include "hal_delay.h"

char putchar(char c)
{
  hal_uart_putchar(c);
  return c;
}

void putstring(char *s)
{
  while(*s != 0)
    putchar(*s++);
}

void main(void)
{
	P0DIR = 0x00;
	hal_uart_init(UART_BAUD_57K6);
	EA = 1;

  for(;;)
  {
		putstring("\r\nHello World!\r\n");
		delay_ms(1000);
   }
}

Además, debe agregar dos archivos al proyecto:
hal\nrf24lu1p\hal_uart.c
hal\hal_delay.c

El lector, probablemente, ya entendiĂł que estamos conectando el cĂłdigo fuente para nuestro chip exactamente.
Para juntar todo correctamente, necesita poner algunos ticks y registrar Incluir Ruta para el compilador.
Cuña adecuada para el proyecto - Opciones.

En la mamposterĂ­a de salida, marque la casilla de verificaciĂłn Crear archivo HEX.
A continuación, en la pestaña C51, escriba Incluir
..\..\hal;..\..\hal\nrf24lu1p;..\..\compiler\c51;..\..\compiler\common;

Armando un proyecto. El archivo hexadecimal resultante se llena con el programador en el controlador. En mi caso, los chinos enviaron este tipo de software. El programador en sĂ­ mismo se define como un dispositivo HID, no requiere controladores. Antes de programar, el chip debe ser borrado.
El software se puede descargar aquĂ­ .


Si todo se hizo correctamente, Hello World se vertirá una vez por segundo en UART.

Continúa en la siguiente parte. Se considerarán la inicialización USB, la enumeración, el soporte de WinUSB y el intercambio de host.
La segunda parte de

Source: https://habr.com/ru/post/es382873/


All Articles