Trabalhamos com a pilha USB nRF24LU1 +. Parte 1

Este artigo descreve a operação da pilha USB do módulo nRF24LU1 +. Na primeira parte, uma pequena introdução, instalação de software e SDK, Hello World.
Na segunda parte, consideraremos a inicialização, enumeração, suporte ao WinUSB e troca de dados com o host. Supõe-se que o leitor tenha uma compreensão inicial do USB. Caso contrário, aconselho que você se familiarize com o excelente manual .




Eu pedi minhas fichas no ebay . Foram incluídos 2 módulos e um programador SPI. Mosca direta na pomada para quem encomendar o mesmo conjunto. Não há linha de redefinição no conector de programação no próprio módulo. Sem ele, a programação do ISP não funciona. Eu tive que soldar cuidadosamente.


Em princípio, os chips podem ser programados através do gerenciador de inicialização embutido (e até escrever o seu próprio). Há também um monte de flashes SPI baseados em ftdi , arduino e muito mais. O processo de programação é semelhante ao chip nrf24le1.

O chip nRF24LU1 + é:
  • Transceptor nRF24l01 + de 2,4 GHz
  • controlador USB 2.0 de velocidade total
  • Microcontrolador de 8 bits com núcleo Intel MCS 51
  • Flash de 16 ou 32 kb


O dispositivo interno do chip:

Dentre os recursos, vale ressaltar que a RAM rápida é de apenas 256 bytes (IRAM). Os 2 kb restantes (SRAM) estão localizados no barramento externo, respectivamente, o acesso a eles é mais lento. Há também um módulo de criptografia.

Configure o Keil, o nRFgo SDK e o Hello World


Todo o desenvolvimento será conduzido no ambiente do Keil e do nRFgo SDK. Baixe, instale ( tyts , tyts ).
Algumas palavras sobre a organização do projeto. Eu criei essa estrutura. Compilador, HAL e LIB copiados do nRFgo SDK. Os projetos já estarão diretamente na pasta Projetos.

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

Nós vamos em Keil. Projeto - Novo uVision Prject. Nós selecionamos o catálogo com o projeto, digite o nome do projeto. Em seguida, selecione o chip como na imagem, concorde com tudo.

Em seguida, adicione a nova fonte ao projeto (clique com o botão direito do mouse em Source Group 1 - Add New Iteam.)

Primeiro programa, imprima sem parar no 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);
   }
}

Além disso, você precisa adicionar dois arquivos ao projeto:
hal\nrf24lu1p\hal_uart.c
hal\hal_delay.c

O leitor provavelmente já entendeu que estamos conectando o código-fonte exatamente ao nosso chip.Para
reunir tudo corretamente, você precisa colocar alguns ticks e registrar o caminho de inclusão para o compilador.
Cunha direita para o projeto - Opções.

Na alvenaria de saída, marque a caixa de seleção Criar arquivo HEX.
Em seguida, na guia C51, escreva Incluir
..\..\hal;..\..\hal\nrf24lu1p;..\..\compiler\c51;..\..\compiler\common;

Montando um projeto. O arquivo hexadecimal resultante é preenchido com o programador no controlador. No meu caso, os chineses enviaram esse tipo de software. O programador em si é definido como um dispositivo HID, não requer drivers. Antes da programação, o chip deve ser apagado.
O software pode ser baixado aqui .


Se tudo foi feito corretamente, o Hello World será derramado uma vez por segundo no UART.

Continua na próxima parte. Inicialização, enumeração, suporte a WinUSB e troca de host USB serão considerados.
A segunda parte de

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


All Articles