NRF_LOG is not working in my Custom Board

Hello,

I am working NRF52840 as custom board, In my custom board NRF_LOG is not working I mean Nothing is displaying on terminal like tera term or termite. If load the code in Development Board (NRF52840 DK Boards) its working fine and also I Can view the data on terminal. My problem is in my custom board, can you please help me on this. How to solve this type of issues. 

Thanks & I am waiting for your response.

Parents
  • How did you connect the uart pins on your custom board to the host Serial com port where you have your terminal?

    Out DK have an onboard debugger which also converts raw serial TX/RX/RTS/CTS data into a CDC COM port that can be virtualized on a USB port of your host system. I am assuming that your custom board does not have onboard debugger that can do this. 

  • Hi,

    How to connect the host serial com and also tell me how to enable the onboard debugger. Please help me on this.

  • nrf_gpio_cfg_output/nrf_gpio_cfg_input are the are the API that you can use to set the gpio direction. Please check this thread on how to do that on the nrF52 DK.

    You need to use this API to set the pin direction in the firmware that you flash in nRF52 DK. You can find this file in SDK\modules\nrfx\hal\nrf_gpio.h.

    Do you this direction setting for CTS/RTS/TX/RX pins in main() function and then loop forever in the while(1);

  • Hi, 

    Thanks for the reply...

    Do you this direction setting for CTS/RTS/TX/RX pins in main() function and then loop forever in the while(1); ---> How to use this in main,

  • Hi, 

    Please help me I have one doubt I am using ADC using I2C, my doubt is SCL & SDA pin which pin number I have to mention in my code whether ADC having SCL & SDA and also NRF also having SCL and SDA in my custom board, which pin number I have to mention ,

    Thanks in advance.

  • Hi

    One more, In order to print TWI Scanner Example in my custom board, whether I have to combine TWI Scanner and UART Right??...

  • Hi,

    1. In my Custom board, onboard debugger is not there, so I am loading my code through SWD from DK board to custom board is it Correct right.

    2. For my custom UART connection, I have used P1.11(TX), P1.12(RX), P1.10(CTS), P0.30(RTS), these four I mention in program also that is in pca10056.h file,.. Is it correct rigjht.

    Ex:-

    #define RX_PIN_NUMBER NRF_GPIO_PIN_MAP(1,11)
    #define TX_PIN_NUMBER NRF_GPIO_PIN_MAP(1,12)
    #define CTS_PIN_NUMBER NRF_GPIO_PIN_MAP(1,10)
    #define RTS_PIN_NUMBER NRF_GPIO_PIN_MAP(0,30)
    #define HWFC true

    3. To display the UART data in terminal, I have used TTL/ FDTI converter, for this connection I used is,

    TX->RX

    RX->TX

    CTS->RTS

    RTS->CTS.    Is it Correct right.

    4.For TWI I2C communication, I have used P0.06(SCL), P0.07(SDA) these two connection I have mention in pca10056.h file 

    Ex:-

    #define ARDUINO_SCL_PIN NRF_GPIO_PIN_MAP(0,6) // SCL signal pin
    #define ARDUINO_SDA_PIN NRF_GPIO_PIN_MAP(0,7) // SDA signal pin Is it correct ?.

    The above points are implemented in my code, but still I am not getting any message in terminal. I have one doubt also, In TWI scanner to display the UART data in terminal whether I have to combine TWI_Scanner Program and also UART Program????

    Can you please help me on this, 

    Dont take above two threads. consider this thread and give me some suggestion, I am stuck for this so many days.

    Thanks in advance and I am waiting for your response.

    I will share my TWI_Scanner code in below atttachment.

    /**
     * Copyright (c) 2016 - 2018, Nordic Semiconductor ASA
     * 
     * All rights reserved.
     * 
     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     * 
     * 1. Redistributions of source code must retain the above copyright notice, this
     *    list of conditions and the following disclaimer.
     * 
     * 2. Redistributions in binary form, except as embedded into a Nordic
     *    Semiconductor ASA integrated circuit in a product or a software update for
     *    such product, must reproduce the above copyright notice, this list of
     *    conditions and the following disclaimer in the documentation and/or other
     *    materials provided with the distribution.
     * 
     * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
     *    contributors may be used to endorse or promote products derived from this
     *    software without specific prior written permission.
     * 
     * 4. This software, with or without modification, must only be used with a
     *    Nordic Semiconductor ASA integrated circuit.
     * 
     * 5. Any software provided in binary form under this license must not be reverse
     *    engineered, decompiled, modified and/or disassembled.
     * 
     * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
     * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     * 
     */
    /** @file
     * @defgroup tw_scanner main.c
     * @{
     * @ingroup nrf_twi_example
     * @brief TWI Sensor Example main file.
     *
     * This file contains the source code for a sample application using TWI.
     *
     */
    
    #include <stdio.h>
    #include <stdbool.h>
    #include "boards.h"
    #include "app_util_platform.h"
    #include "app_error.h"
    #include "nrf_drv_twi.h"
    #include "app_uart.h"
    #include "nrf_gpio.h"
    #include "nrf_delay.h"
    #include "app_error.h"
    #include <string.h>
    //#include "SEGGER_RTT.h"
    #include "nrf_drv_gpiote.h"
    #include "app_error.h"
    
    //#define RTS NRF_GPIO_PIN_MAP(0,30)
    
    #include "nrf_log.h"
    #include "nrf_log_ctrl.h"
    #include "nrf_log_default_backends.h"
    
    /* TWI instance ID. */
    #if TWI0_ENABLED
    #define TWI_INSTANCE_ID     0
    #elif TWI1_ENABLED
    #define TWI_INSTANCE_ID     1
    #endif
    
     /* Number of possible TWI addresses. */
     uint8_t TWI_ADDRESSES=0x68;
    
    /* TWI instance. */
    static const nrf_drv_twi_t m_twi = NRF_DRV_TWI_INSTANCE(TWI_INSTANCE_ID);
    
    
    /**
     * @brief TWI initialization.
     */
    void twi_init (void)
    {
        ret_code_t err_code;
    
        const nrf_drv_twi_config_t twi_config = {
           .scl                = ARDUINO_SCL_PIN,
           .sda                = ARDUINO_SDA_PIN,
           .frequency          = NRF_DRV_TWI_FREQ_100K,
           .interrupt_priority = APP_IRQ_PRIORITY_HIGH,
           .clear_bus_init     = false
        };
    
        err_code = nrf_drv_twi_init(&m_twi, &twi_config, NULL, NULL);
        APP_ERROR_CHECK(err_code);
    
        nrf_drv_twi_enable(&m_twi);
    }
    
    
    /**
     * @brief Function for main application entry.
     */
    int main(void)
    {
    	nrf_gpio_cfg_output(11);
    	nrf_gpio_cfg_output(30);
    	nrf_delay_ms(50);
    		nrf_gpio_pin_clear(12);
    	nrf_gpio_pin_clear(10);
    	nrf_delay_ms(50);
    //	nrf_gpio_cfg_output(11);
    //	nrf_gpio_cfg_output(10);
    //	nrf_gpio_cfg_input(12);
    	//nrf_gpio_cfg_input(RTS);
    	
        ret_code_t err_code;
        uint8_t address;
        uint8_t sample_data;
        bool detected_device = false;
    
        APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
        NRF_LOG_DEFAULT_BACKENDS_INIT();
    
        NRF_LOG_INFO("TWI scanner started.");
        NRF_LOG_FLUSH();
        twi_init();
    
        for (address = 1; address <= TWI_ADDRESSES; address++)
        {
            err_code = nrf_drv_twi_rx(&m_twi, address, &sample_data, sizeof(sample_data));
            if (err_code == NRF_SUCCESS)
            {
                detected_device = true;
                NRF_LOG_INFO("TWI device detected at address 0x%x.", address);
            }
            NRF_LOG_FLUSH();
        }
    
        if (!detected_device)
        {
            NRF_LOG_INFO("No device was found.");
            NRF_LOG_FLUSH();
        }
    
        while (true)
        {
            /* Empty loop. */
        }
    }
    
    /** @} */
    

Reply
  • Hi,

    1. In my Custom board, onboard debugger is not there, so I am loading my code through SWD from DK board to custom board is it Correct right.

    2. For my custom UART connection, I have used P1.11(TX), P1.12(RX), P1.10(CTS), P0.30(RTS), these four I mention in program also that is in pca10056.h file,.. Is it correct rigjht.

    Ex:-

    #define RX_PIN_NUMBER NRF_GPIO_PIN_MAP(1,11)
    #define TX_PIN_NUMBER NRF_GPIO_PIN_MAP(1,12)
    #define CTS_PIN_NUMBER NRF_GPIO_PIN_MAP(1,10)
    #define RTS_PIN_NUMBER NRF_GPIO_PIN_MAP(0,30)
    #define HWFC true

    3. To display the UART data in terminal, I have used TTL/ FDTI converter, for this connection I used is,

    TX->RX

    RX->TX

    CTS->RTS

    RTS->CTS.    Is it Correct right.

    4.For TWI I2C communication, I have used P0.06(SCL), P0.07(SDA) these two connection I have mention in pca10056.h file 

    Ex:-

    #define ARDUINO_SCL_PIN NRF_GPIO_PIN_MAP(0,6) // SCL signal pin
    #define ARDUINO_SDA_PIN NRF_GPIO_PIN_MAP(0,7) // SDA signal pin Is it correct ?.

    The above points are implemented in my code, but still I am not getting any message in terminal. I have one doubt also, In TWI scanner to display the UART data in terminal whether I have to combine TWI_Scanner Program and also UART Program????

    Can you please help me on this, 

    Dont take above two threads. consider this thread and give me some suggestion, I am stuck for this so many days.

    Thanks in advance and I am waiting for your response.

    I will share my TWI_Scanner code in below atttachment.

    /**
     * Copyright (c) 2016 - 2018, Nordic Semiconductor ASA
     * 
     * All rights reserved.
     * 
     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     * 
     * 1. Redistributions of source code must retain the above copyright notice, this
     *    list of conditions and the following disclaimer.
     * 
     * 2. Redistributions in binary form, except as embedded into a Nordic
     *    Semiconductor ASA integrated circuit in a product or a software update for
     *    such product, must reproduce the above copyright notice, this list of
     *    conditions and the following disclaimer in the documentation and/or other
     *    materials provided with the distribution.
     * 
     * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
     *    contributors may be used to endorse or promote products derived from this
     *    software without specific prior written permission.
     * 
     * 4. This software, with or without modification, must only be used with a
     *    Nordic Semiconductor ASA integrated circuit.
     * 
     * 5. Any software provided in binary form under this license must not be reverse
     *    engineered, decompiled, modified and/or disassembled.
     * 
     * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
     * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     * 
     */
    /** @file
     * @defgroup tw_scanner main.c
     * @{
     * @ingroup nrf_twi_example
     * @brief TWI Sensor Example main file.
     *
     * This file contains the source code for a sample application using TWI.
     *
     */
    
    #include <stdio.h>
    #include <stdbool.h>
    #include "boards.h"
    #include "app_util_platform.h"
    #include "app_error.h"
    #include "nrf_drv_twi.h"
    #include "app_uart.h"
    #include "nrf_gpio.h"
    #include "nrf_delay.h"
    #include "app_error.h"
    #include <string.h>
    //#include "SEGGER_RTT.h"
    #include "nrf_drv_gpiote.h"
    #include "app_error.h"
    
    //#define RTS NRF_GPIO_PIN_MAP(0,30)
    
    #include "nrf_log.h"
    #include "nrf_log_ctrl.h"
    #include "nrf_log_default_backends.h"
    
    /* TWI instance ID. */
    #if TWI0_ENABLED
    #define TWI_INSTANCE_ID     0
    #elif TWI1_ENABLED
    #define TWI_INSTANCE_ID     1
    #endif
    
     /* Number of possible TWI addresses. */
     uint8_t TWI_ADDRESSES=0x68;
    
    /* TWI instance. */
    static const nrf_drv_twi_t m_twi = NRF_DRV_TWI_INSTANCE(TWI_INSTANCE_ID);
    
    
    /**
     * @brief TWI initialization.
     */
    void twi_init (void)
    {
        ret_code_t err_code;
    
        const nrf_drv_twi_config_t twi_config = {
           .scl                = ARDUINO_SCL_PIN,
           .sda                = ARDUINO_SDA_PIN,
           .frequency          = NRF_DRV_TWI_FREQ_100K,
           .interrupt_priority = APP_IRQ_PRIORITY_HIGH,
           .clear_bus_init     = false
        };
    
        err_code = nrf_drv_twi_init(&m_twi, &twi_config, NULL, NULL);
        APP_ERROR_CHECK(err_code);
    
        nrf_drv_twi_enable(&m_twi);
    }
    
    
    /**
     * @brief Function for main application entry.
     */
    int main(void)
    {
    	nrf_gpio_cfg_output(11);
    	nrf_gpio_cfg_output(30);
    	nrf_delay_ms(50);
    		nrf_gpio_pin_clear(12);
    	nrf_gpio_pin_clear(10);
    	nrf_delay_ms(50);
    //	nrf_gpio_cfg_output(11);
    //	nrf_gpio_cfg_output(10);
    //	nrf_gpio_cfg_input(12);
    	//nrf_gpio_cfg_input(RTS);
    	
        ret_code_t err_code;
        uint8_t address;
        uint8_t sample_data;
        bool detected_device = false;
    
        APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
        NRF_LOG_DEFAULT_BACKENDS_INIT();
    
        NRF_LOG_INFO("TWI scanner started.");
        NRF_LOG_FLUSH();
        twi_init();
    
        for (address = 1; address <= TWI_ADDRESSES; address++)
        {
            err_code = nrf_drv_twi_rx(&m_twi, address, &sample_data, sizeof(sample_data));
            if (err_code == NRF_SUCCESS)
            {
                detected_device = true;
                NRF_LOG_INFO("TWI device detected at address 0x%x.", address);
            }
            NRF_LOG_FLUSH();
        }
    
        if (!detected_device)
        {
            NRF_LOG_INFO("No device was found.");
            NRF_LOG_FLUSH();
        }
    
        while (true)
        {
            /* Empty loop. */
        }
    }
    
    /** @} */
    

Children
Related