TX Power on DA14683

I have tried to change the TX power on the DA14683 for the Dopple Cradle project by changing settings, but it looks like nothing happens as far as I notice. 
When reading the documentation it looks like it is possible, but on the internet I see remarks that it might not be possible "https://support.dialog-semiconductor.com/programatically-change-tx-power".
I have changed the specific register values, and I read the written value back, I also see the expected TX power value via the nRFConnect app on a phone, but I don't see a difference in behavior. 
Inside the SDK I see 2 registers, 1 of them is not documented in the manual but is also written the same way as the one I have to write to enable NFC “Note 40: To activate the "Near Field Mode", program address 0x50002230, bits 9:5 with the value 0x0. To stop NFC restore previous bitfield value.”.

  __IO uint16_t  RF_ENABLE_CONFIG23_BLE_REG;        /*!< (@ 0x5000222E) RF_ENABLE_CONFIG23_BLE_REG                             */
  __IO uint16_t  RF_ENABLE_CONFIG24_BLE_REG;        /*!< (@ 0x50002230) RF_ENABLE_CONFIG24_BLE_REG                             */

Should it be possible to change the TX power between 0 and -20 dBm? If so, how should that be done ?

  • Hi henrie.ananias,

    Thanks for your question online. According to the attached ticket, to set the output power to -20 dBm the RF_ENABLE_CONFIG24_BLE_REG should be configured as :

    __IO uint16_t RF_ENABLE_CONFIG24_BLE_REG; /*!< (@ 0x50002230) RF_ENABLE_CONFIG24_BLE_REG */
    REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG24_BLE_REG, 0x03E0, 0x0000);

    Writing 0x0000 to RF_ENABLE_CONFIG24_BLE_REG ; then -20 dBm output power is enabled.  Setting this register to 0x01A0 restores output power at 0 dBm .

    Could you please give a try and let us know?

    Thanks, PM_Dialog

  • Hi,

     

    It took a while because it seemed that we didn't need it, but for a new product we might need to switch the power level. I tried the solution described above.

     

    REG_SET_MASKED(RFCU_POWER, RF_ENABLE_CONFIG24_BLE_REG, 0x03E0, 0x0000);

     

    However I still don't see any difference in the nRfConnect app. I tried to set it to 0x0000 and 0x01A0, but measure no difference. Actually I don't know when it is allowed to access the register, can it be done on the fly, or for instance only in hw_rf_set_recommended_settings() ? I also tried to read and log the value of RFCU_POWER->RF_ENABLE_CONFIG24_BLE_REG and the fly, and if I have set it to 0x0000 I read 0x0000 and sometimes 0x01A0. Also the other way arround I read changing values. Is it not allowed to read the value at any time ?

    Please advise what is the pre-condition for changing / reading the register value ?

     

    Kind regards,

    Henrie Ananias

  •  Hi henrie.ananias,

    Can you please try the following solution and let us know?

    Add this :

    REG_SETF(RFCU_POWER, RF_ENABLE_CONFIG24_BLE_REG, rfio_txrx_ble_dcf_tx, 0);

    just after line 1231 in hw_rf_request_on() function.

    Thanks, PM_Dialog

  • Hi,

     

    Thank you for the response. Currently I am able to change the TX power, build time, I set a variable rf_enable_config24_ble_reg_value with 0x0000 or 0x01A0. In the first 2 functions below I call the macro to set the value rf_enable_config24_ble_reg_value and in the last one I copy the value, don't know if that is really needed? 

    I also don't know yet in which functions I need to use the macro?

    I did not try the new macro yet, but it looks like that is also called at system start ?

    We would like to change the TX power on the fly, at any time. How should that be done, I tried to change the rf_enable_config24_ble_reg_value value, but it looks like that is not used then in hw_rf_set_recommended_settings() or hw_rf_modulation_gain_calibration_generic_start() ? And further more when I read back RFCU_POWER->RF_ENABLE_CONFIG24_BLE_REG it is never always 0x0000 or 0x01A0, it changes now and then between those 2 values, where might that be changed then or is it not allowed to read it ?

    hw_rf_set_recommended_settings()
    REG_SET_MASKED
    hw_rf_modulation_gain_calibration_generic_start()
    REG_SET_MASKED

    hw_rf_modulation_gain_calibration_end()
    RFCU_POWER->RF_ENABLE_CONFIG24_BLE_REG = rf_enable_config24_ble_reg_value;

  • Hi henrie.ananias,

    Thanks for your comment. One from our Team will reach out to you directly for this question.

    Thanks, PM_Dialog