Can i change the antenna power with software?
Do you mean the radio's transmit power?
You can set that by calling sd_ble_gap_tx_power_set().
For SoftDevice S132 V6.1.0, the API is:
/**@brief Set the radio's transmit power.
* @param[in] role The role to set the transmit power for, see @ref BLE_GAP_TX_POWER_ROLES for
* possible roles.
* @param[in] handle The handle parameter is interpreted depending on role:
* - If role is @ref BLE_GAP_TX_POWER_ROLE_CONN, this value is the specific connection handle.
* - If role is @ref BLE_GAP_TX_POWER_ROLE_ADV, the advertising set identified with the advertising handle,
* will use the specified transmit power, and include it in the advertising packet headers if
* @ref ble_gap_adv_properties_t::include_tx_power set.
* - For all other roles handle is ignored.
* @param[in] tx_power Radio transmit power in dBm (see note for accepted values).
* @note Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
* @note The initiator will have the same transmit power as the scanner.
* @note When a connection is created it will inherit the transmit power from the initiator or
* advertiser leading to the connection.
* @retval ::NRF_SUCCESS Successfully changed the transmit power.
* @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
* @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found.
* @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(uint8_t role, uint16_t handle, int8_t tx_power));
Thanks for your answer. Yes i mean the radio's transmit power. i found that code block. But i don't understand how can i change it.
Are you advertising? Or scanning?
If you are advertising, you can take a look at the examples\ble_peripheral\ble_app_proximity example.
Here, you can see how the API is used:
sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, m_advertising.adv_handle, TX_POWER_LEVEL);
The first input is BLE_GAP_TX_POWER_ROLE_ADV, which is one of three options from BLE_GAP_TX_POWER_ROLES, as you can read here:
/**@brief GAP TX Power roles.
BLE_GAP_TX_POWER_ROLE_ADV = 1, /**< Advertiser role. */
BLE_GAP_TX_POWER_ROLE_SCAN_INIT = 2, /**< Scanner and initiator role. */
BLE_GAP_TX_POWER_ROLE_CONN = 3, /**< Connection role. */
The second input is the advertising handle, m_advertising.adv_handle. If you are scanning you should give NULL as input, and if you are connected, you should give the connection handle as input.
The third input is the actual TX power value, and the supported values are -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
Thanks for your answer Andrea.
I'm advertising. I'm using the nordic uart service. Firstly when i tried the xamples\ble_peripheral\ble_app_proximity code i see that error massage.How can i fix this?
Do you have a licence for Keil u5? Have you installed the latest J-Link drivers?
AndreasF said:Do you have a licence for Keil u5? Have you installed the latest J-Link drivers?
Those things would give different errors - It's complaining that it can't find the .axf file.
(although lack of a licence could be a reason for the build to fail and, therefore, not generate the .axf)
Yes, I think it is complaining about not finding the .axf file because it cannot build the project without a licence, because the project is to big.
Here, I've recreated the error by trying to build the project in Keil 5 without a licence:
First error: Cannot build because the project is to big
Second error: Cannot flash, because the .xaf file does not exist:
You can use Segger Embedded Studio for free with Nordic Products, It has not this limitation, and I suggest you use that if you do not wish to pay for a license.
Thanks for all of your answers.I tried with licenced keil and it works!