Hello,
I want to set the transmitting power of the advertising packet. How can I set the TX power?
I am using nRF Connect SDK 2.5.1 in Visual Studio Code.
Regards,
Sri
Hello,
I want to set the transmitting power of the advertising packet. How can I set the TX power?
I am using nRF Connect SDK 2.5.1 in Visual Studio Code.
Regards,
Sri
Hi
You can change the TX power with the following Kconfigs CONFIG_BT_CTLR_TX_PWR_xx or CONFIG_BT_CTLR_TX_PWR_ANTENNA.
Regards
Runar
Hi, I have used the CONFIG_BT_CTLR_TX_PWR_xx for power setting. I have done a current consumption test to confirm the change in output power. I found a peculiar result for negative power settings, there are multiple current consumption peaks. For each advertisement taking different current.
My Observations:
Tx Power | Tx - Peak | Tx - Avg | Idle | |||
8dBm | 28.62mA | 15.65mA | 776uA | |||
4dBm | 19.59mA | 12.38mA | 774uA | |||
0dBm | 13.71mA | 8.2mA | 774uA | |||
-4dBm | 14.61mA | 6.91mA | 774uA | 8.48mA | 6.55mA | Multiple amplitude peaks - unknown reason |
-8dBm | 14.47mA | 6.53mA | 774uA | 8.36mA | 6mA | Multiple amplitude peaks - unknown reason |
-12dBm |
Skipped
|
|||||
-16dBm | ||||||
-20dBm | 14.75mA | 5.48mA | 774uA | 9.31mA | 4.92mA | Multiple amplitude peaks - unknown reason |
So is this the expected behavior or is there a issue?
I want to reduce my Tx Current consumption. I read that if I enable DC/DC it will reduce the current. How do I enable it?
I also want to put my device to sleep after stopping advertisement and in between advertisement to save power. How do it do that?
TIA
Sri
I have custom board. So cant follow the setup from the reference but followed the setup given in PPK user guide. I want to change the Power from LDO to DCDC mode. Can you help me with that? How should I configure the code?
I am using the below code from nRF Academy
/* * Copyright (c) 2023 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause */ #include <zephyr/kernel.h> #include <zephyr/logging/log.h> /* STEP 3 - Include the header file of the Bluetooth LE stack */ #include <zephyr/bluetooth/bluetooth.h> #include <zephyr/bluetooth/gap.h> #include <dk_buttons_and_leds.h> LOG_MODULE_REGISTER(Lesson2_Exercise1, LOG_LEVEL_INF); #define DEVICE_NAME CONFIG_BT_DEVICE_NAME #define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1) #define RUN_STATUS_LED DK_LED1 #define RUN_LED_BLINK_INTERVAL 1000 /* STEP 4.1.1 - Declare the advertising packet */ static const struct bt_data ad[] = { /* STEP 4.1.2 - Set the advertising flags */ BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_NO_BREDR), /* STEP 4.1.3 - Set the advertising packet data */ BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN), }; /* STEP 4.2.2 - Declare the URL data to include in the scan response */ static unsigned char url_data[] = { 0x17, '/', '/', 'a', 'c', 'a', 'd', 'e', 'm', 'y', '.', 'n', 'o', 'r', 'd', 'i', 'c', 's', 'e', 'm', 'i', '.', 'c', 'o', 'm' }; /* STEP 4.2.1 - Declare the scan response packet */ static const struct bt_data sd[] = { /* 4.2.3 Include the URL data in the scan response packet */ BT_DATA(BT_DATA_URI, url_data, sizeof(url_data)), }; int main(void) { int blink_status = 0; int err; LOG_INF("Starting Lesson 2 - Exercise 1 \n"); err = dk_leds_init(); if (err) { LOG_ERR("LEDs init failed (err %d)\n", err); return -1; } /* STEP 5 - Enable the Bluetooth LE stack */ err = bt_enable(NULL); if (err) { LOG_ERR("Bluetooth init failed (err %d)\n", err); return -1; } LOG_INF("Bluetooth initialized\n"); /* STEP 6 - Start advertising */ err = bt_le_adv_start(BT_LE_ADV_NCONN, ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd)); if (err) { LOG_ERR("Advertising failed to start (err %d)\n", err); return -1; } LOG_INF("Advertising successfully started\n"); for (;;) { dk_set_led(RUN_STATUS_LED, (++blink_status) % 2); k_sleep(K_MSEC(RUN_LED_BLINK_INTERVAL)); } }
How can I put my nRF52833 in "ION_RAMOFF_EVENT" or "ION_RAMOFF_RTC". I need it to sleep for 5 mins and wake up
Using the DCDC should be as easy as using the Kconfig option CONFIG_SOC_DCDC_NRF52X=y
What is the usecase for your application? I would recommend reading Einars reply https://devzone.nordicsemi.com/f/nordic-q-a/99280/sleep-modes-system-on-example-for-nrf52833-with-nrf-connect-sdk-2-3-0?ReplySortBy=CreatedDate&ReplySortOrder=Ascending regarding power modes
Regards
Runar
Use case is to make a BLE beacon.
If I add CONFIG_SOC_DCDC_NRF52X=y in the kconfig file then it is saying
error: SOC_DCDC_NRF52X (defined at soc/arm/nordic_nrf\nrf52\Kconfig.soc:85) is assigned in a
configuration file, but is not directly user-configurable (has no prompt). It gets its value
indirectly from other symbols. See
http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_SOC_DCDC_NRF52X and/or look up
SOC_DCDC_NRF52X in the menuconfig/guiconfig interface. The Application Development Primer, Setting
Configuration Values, and Kconfig - Tips and Best Practices sections of the manual might be helpful
too.
So any other way to enable the DCDC mode?
if I add "CONFIG_BOARD_ENABLE_DCDC=y" to the proj.cofig it is showing below error:
warning: attempt to assign the value 'y' to the undefined symbol BOARD_ENABLE_DCDC
I have created a new board in NRF Connect for the board I am using. Do I need to do anything different because it has a different device tree file?
Regarding the power modes I want to measure current consumption in "ION_RAMON_RTC", "ION_RAMOFF_RTC", "ION_RAMOFF_EVENT". Since my application is beacon I don't need to remember anything so I can turn off the RAM. I want to try all the three modes. Can you suggest a reference code to put the device in the before mentioned states?
Could you share your board files so that I can have a look at them?
Did you do as in step 6 here? If not, try to do it and see if it works
I will need to check regarding ION_RAM_OFF and so on as I have never seen it used. But you could also check out https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/others/ram_pwrdn.html
Regards
Runar
I have completed the steps told in the document. But still getting multiple current peaks for each advertisement. The power setting in proj.conf is CONFIG_BT_CTLR_TX_PWR_0=y
The expected current consumption is 10.3 mA in normal mode and 4.9mA in DC/DC mode. So anything I am missing? I followed all the steps in the document you shared to create a custom board.
Thank you for sharing the documentation. I have followed it and now in idle it is consuming 1.3 - 1.5uA (Avg). I turned off the serial and other unused peripherals.
The transmission power is still not matching the values given in the datasheet. It is varying. How do i get the 5mA specified in the datasheet?
TIA
Sri