Blink nRF51 | Keil | St Link

Siguiendo la tradición hice que un LED haga el famoso blink. La primer prueba la hice con Keil 5, ya que tiene muchos ejemplos para el nRF51422 que viene en el DK oficial, lo único que tiene diferente al nRF51822 es que el primero soporta el protocolo ANT+.

Abrimos Keil y presionamos sobre  el Pack Installer:


Y nos aparecerá la siguiente ventana:


En la parte izquierda abrimos la pestaña de All Devices -> Nordic Semiconductor -> nRF51 Series -> nRF51822_xxAA , esta es la versión del micro que tengo.

El código completo del chip es: nRF51822 QFAAH0 1517DE que con ayuda de esta tabla sabemos que revisión es el chip:

En mi caso es un nRF51822, empaquetado QFN48 6mm x 6mm, 256 kB de Flash y 16 kB de RAM, y fue fabricado la semana 17 del año 2015.

Del lado derecho baje todos los drivers para tenerlos a la mano, y en la pestaña de examples escogí el blink blank PCA10028, esto quiere decir que el ejemplo no depende de un SoftDevice (blank) y que es para la nRF51 DK, pero como sabemos el chip de el DK y el de nuestro modulo son compatibles.

Nos abré el siguiente código en el main:
#include 
#include 
#include "nrf_delay.h"
#include "nrf_gpio.h"
#include "boards.h"

const uint8_t leds_list[LEDS_NUMBER] = LEDS_LIST;

/**
 * @brief Function for application main entry.
 */
int main(void)
{
    // Configure LED-pins as outputs.
    LEDS_CONFIGURE(LEDS_MASK);

    // Toggle LEDs.
    while (true)
    {
        for (int i = 0; i < LEDS_NUMBER; i++)
        {
            LEDS_INVERT(1 << leds_list[i]);
            nrf_delay_ms(500);
        }
    }
}

Lo compilamos sin modificarlo, una vez terminado y sin tener errores conectamos la placa Discovery, damos click en Configure target options


En la ventana que abre nos vamos a la pestaña de debug, y seleccionamos en el menú la opción de ST Link:

Presionamos el botón de Settings, nos abrira la siguiente ventana, en Port seleccionamos SW (viene JTAG por defecto) y nos identificará el SW del nRF51 en la parte de la derecha (SW Device).
Nos vamos a la pestaña Flash Download y seleccionamos el dispositivo:
Damos OK y grabamos la flash del nRF51 con el boton LOAD.
Solo tenia un LED a la mano :/ y lo puse en el pin P0.21, el famoso blink!!!
El ejemplo esta diseñado para hacer parpadear los pines P0.21, P0.22, P0.23 y P0.24, asi que si tienes mas LEDs que yo pruebalos en esos pines :).

Esta información la conseguí en un blog de Milan en el Developers Forum de Nordic, asi que todo el crédito para el.

Hay mas maneras de flashear el nRF51, si no puedes aguantarte las ganas checa los siguientes links:
Flashear un programa hecho en mbed para el nRF51

Flashear nRF51 con OpenOCD y ST-Link

Estas tres formas me han funcionado hasta ahora, todos los ejemplos fueron hacer parpadear un LED de la placa, así ya sabemos que la estamos flasheando bien.

TO.DO:
Aprender a usar los SoftDevices, que por el BLE fue seguramente nos interesamos en este microcontrolador.

Comentarios

Entradas más populares de este blog

PSoC Creator Tools

PSoC5LP Usando el SAR ADC y la señal EoS para manejar una LUT