# TXPWRCOEFFB calculation for AX5043

Dear All,
I am trying to compute the TXPWRCOEFFB coefficient according to the formula presented here , but I noted that the formula does not give sufficient accuracy. The presented graphs in this document https://www.onsemi.com/pub/collateral/and9314-d.pdf are accurate enough, but they are completely different from the formula, especially for 169MHz.
Do you have practical way to compute this parameter? AxBlocks computes it precisely when I get the register from there.
Thank you for the support!

@mnedelchev

The formula for TXPWRCOEFF is given in the programming manual page 62:

From this you can understand that there is no exact linear correspondance between dBm (mWatts) and the hex value stored in the register. Depending on the application (PCB, matching network, frequency) there can be different output powers for the same register setting.

AX-RadioLab uses a simplified method to guess the best register setting for a desired power level. It was tabulated using our ADD5043-868 and it uses the following array of 26 elements (from -10dBm to +15 dBm):

``````const int ptab [ ] = {0x0aa, 0xbf, 0xd1, 0xec, 0x10f, 0x132, 0x156, 0x17f, 0x1af, 0x1e0, 0x207, 0x244, 0x290, 0x2eb, 0x35e, 0x3d6, 0x406, 0x4a9, 0x57c, 0x600, 0x700, 0x800, 0x9d4, 0xc00, 0xf00, 0xfff};
``````

If a intermediate power is selected, the register is calculated by averaging with the following method:

``````i1 = limit_int(floor(phy.txpwr+10), 0, 25); i2 = limit_int(floor((phy.txpwr+10) + 0.5), 0, 25); phy.txpwr_reg = sqrt(ptab[i1] * ptab[i2]);
``````

Thank you for using our community forum!

Thank you very much @martin.bela !
This is exactly what I thought that you have done!
I will measure the power dependence vs the TXPWCOEFFB on my evaluation module or I will curvefit your one in the manual.
Thank you once again!

Marin

1 Like