es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

nrf51822 / YJ-14015 Blinky no tiene una traducción literal en español debido a que son nombres propios de productos o dispositivos. Sin embargo, en este contexto, “Blinky” generalmente se refiere a un programa de ejemplo (ejemplo parpadeante) que se ejecuta en el microcontrolador nrf51822 o en la placa YJ-14015. Por lo tanto, una traducción adecuada podría ser: nrf51822 / YJ-14015 Blinky (parpadeo)

Estoy tratando de construir un simple primer blinky en un clon chino nrf51822 (YJ-14015), como parte de la construcción de un teclado inalámbrico redox wireless y depurar por qué la comunicación BLE no funciona.

Como SDK, utilizo nrf5_SDK_11 ya que el firmware personalizado del teclado se basa en él.

Ahora he intentado un ejemplo muy mínimo de blinky con main.c


#include <stdbool.h> #include <stdint.h> #include "nrf_delay.h" #include "nrf_gpio.h" #define LED_PIN_1 1 // LED conectado al pin 1 /* --> desde nrf5_SDK_11/components/drivers/nrf/hal/nrf_gpio.h __STATIC_INLINE void nrf_gpio_pin_set(uint32_t pin_number) { NRF_GPIO->OUTSET = (1UL << pin_number); } __STATIC_INLINE void nrf_gpio_pin_clear(uint32_t pin_number) { NRF_GPIO->OUTCLR = (1UL << pin_number); } */ int main(void) { // Hacer del pin del LED un pin de salida nrf_gpio_cfg_output(LED_PIN_1); nrf_gpio_pin_set(LED_PIN_1); // Alternar los LEDs. while (true) { // Bajar NRF_GPIO->OUTCLR = (NRF_GPIO->OUT & (1UL << LED_PIN_1)); // nrf_gpio_pin_clear(LED_PIN_1); nrf_delay_ms(1000); // Subir NRF_GPIO->OUTSET = (NRF_GPIO->OUT | (1UL << LED_PIN_1)); // nrf_gpio_pin_set(LED_PIN_1); nrf_delay_ms(1000); } }

Mi expectativa sería ver que el voltaje cambia cada segundo de alto a bajo a alto, etc. en el PIN 01… Desafortunadamente, solo obtengo un voltaje de 1.55 V en comparación con el suelo si lo conecto a mi multímetro, pero el voltaje se mantiene constante y nada cambia. ¿Hice algo mal con este bucle?

Para el flasheo, utilizo un clon de ST-LinkV2 + los contenedores docker para openocd y la cadena de herramientas del proyecto redox wireless, que básicamente utiliza telnet sobre openocd. Después de ajustar las rutas correctas, el flasheo parece exitoso y como se mencionó anteriormente, el PIN 01 puede ajustarse a 1.55V, por lo que asumo que no hay problema con el flasheo en sí.</stdint.h></stdbool.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el código está configurado correctamente para alternar el LED en PIN 01 cada segundo utilizando nrf_delay_ms. Sin embargo, dado que el voltaje no está cambiando y se mantiene en 1.55V, es posible que haya un problema con la conexión del LED o con los circuitos que lo rodean. Se recomienda revisar las conexiones y asegurarse de que no haya errores de cableado. Además, podría ser útil utilizar un analizador lógico o un osciloscopio para verificar la señal en PIN 01 y asegurarse de que realmente se esté alternando cada segundo.

Comments are closed.