RF Power output PN5180

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RF Power output PN5180

578 Views
Phil125
Contributor II

Hi,

I'm currently trying to reduce the power out of the PN5180. I have the evaluation board, and I have set up the gears, and tried to set DPC thresholds, but it always seems to output the same. I am measuring approx 16Vp-p, and I'm trying to get it down to around 2Vp-p.

I've also tried using the AGC function to reduce this - but still don't seem to be able to change the output.

I'm not sure which option is the way to change this, whether it be the AGC or DPC? Would someone be able to help me understand what I am doing wrong.

 

Here's my code writing to the EEPROM - forgive the crudeness in nature, and lack of comments

 

Data_Write = 0x13;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x59, &Data_Write, 8);
Data_Write = 0x03;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x80, &Data_Write, 8);
Data_Write = 0x0F;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x81, &Data_Write, 8);
Data_Write = 0xF9;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x82, &Data_Write, 8);
Data_Write = 0xF1;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x83, &Data_Write, 8);
Data_Write = 0xF3;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x84, &Data_Write, 8);
Data_Write = 0xF5;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x85, &Data_Write, 8);
Data_Write = 0xF7;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x86, &Data_Write, 8);
Data_Write = 0xF0;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x87, &Data_Write, 8);
Data_Write = 0xF2;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x88, &Data_Write, 8);
Data_Write = 0xF4;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x89, &Data_Write, 8);
Data_Write = 0xF6;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x8A, &Data_Write, 8);
Data_Write = 0x96;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x8B, &Data_Write, 8);
Data_Write = 0x66;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x8C, &Data_Write, 8);
Data_Write = 0x46;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x8D, &Data_Write, 8);
Data_Write = 0x36;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x8E, &Data_Write, 8);
Data_Write = 0x26;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x8F, &Data_Write, 8);
Data_Write = 0x16;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x90, &Data_Write, 8);
Data_Write = 0xC7;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x5F, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x60, &Data_Write, 8);
Data_Write = 0xC2;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x61, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x62, &Data_Write, 8);
Data_Write = 0xC4;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x63, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x64, &Data_Write, 8);
Data_Write = 0xA7;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x65, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x66, &Data_Write, 8);
Data_Write = 0xA5;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x67, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x68, &Data_Write, 8);
Data_Write = 0xA2;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x69, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x6A, &Data_Write, 8);
Data_Write = 0x99;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x6B, &Data_Write, 8);
Data_Write = 0x99;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x6C, &Data_Write, 8);
Data_Write = 0x88;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x6D, &Data_Write, 8);
Data_Write = 0x88;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x6E, &Data_Write, 8);
Data_Write = 0x77;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x6F, &Data_Write, 8);
Data_Write = 0x77;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x70, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x71, &Data_Write, 8);
Data_Write = 0x66;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x72, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x73, &Data_Write, 8);
Data_Write = 0x55;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x74, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x75, &Data_Write, 8);
Data_Write = 0x44;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x76, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x77, &Data_Write, 8);
Data_Write = 0x33;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x78, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x79, &Data_Write, 8);
Data_Write = 0x22;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x7A, &Data_Write, 8);
Data_Write = 0x01;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x7B, &Data_Write, 8);
Data_Write = 0x11;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x7C, &Data_Write, 8);
Data_Write = 0x11;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x7D, &Data_Write, 8);
Data_Write = 0x10;
phhalHw_Pn5180_Instr_WriteE2Prom(((phhalHw_Pn5180_DataParams_t *)(tmppDataParams->pHalDataParams)), 0x7E, &Data_Write, 8);

 

 

0 Kudos
8 Replies

285 Views
matteopeveri
Contributor I

Did you manage to solve it? 

I am having the same problem

0 Kudos

260 Views
Phil125
Contributor II

Hi,

Yes, I had to change my approach and only engage only 1 gear and keep writing values to the one gear. This changed the RF power output.

With all 16 gears engaged, the device is left to automatically switch, but with 1 gear engaged the device is made to use that setting.

I hope that makes sense. I'm happy to clarify if required

0 Kudos

257 Views
matteopeveri
Contributor I

Hi Phil I kindly request more help from you. I am already using only one gear and I believe I'm setting it to the lowest power possible... but it still reads very ar away. Maybe I'm missing some setting. If you could send me all the settings you are sending to the nxp chip you would do me a great favor.   

0 Kudos

254 Views
Phil125
Contributor II

I've just looked at the code and it appears I send the following

0x13 to EEPROM register 0x59 - sets up DPC Control

0x01 to EEPROM register 0x81 - sets up 1 gear

0x00 to EEPROM register 0x82 - sets power to the lowest setting

also setting EEPROM register 0x82 to 0xF1 gives highest output power.

I also found that the values that get written to 0x82 do not follow a linear pattern, I had to do a control loop and track the output levels with the value written.

 

Hopefully this helps  

240 Views
matteopeveri
Contributor I

I'm failing miserably here. 

 

  const byte eproom_power_settings_addresses[] =          { 0x59, 0x81, 0x82 };
  const byte eproom_power_settings_reduced[] =            { 0x13, 0x01, 0x10  };
 
At the bottom are the settings I'm sending... with power as 0x10 it seems that it reads same as F1... 
with 0x9 doesn't read at all. It's like it's ON/OFF.  There must be some other setting I am ignoring. Perhaps my wiring is wrong. 
0 Kudos

231 Views
Phil125
Contributor II

There is some example code (Discovery Loop) for example - I just used their existing function to write EEPROM values. Maybe you could verify using the example code and see if that works.

Good Luck

0 Kudos

252 Views
matteopeveri
Contributor I

 Tomorrow morning I'll try! (I'm  in Australia). Thank  you very  much!

 

0 Kudos

558 Views
KellyLi
NXP TechSupport
NXP TechSupport

Hello @Phil125 

The Dynamic Power Control (DPC) allows adjusting the Transmitter output current dependent on the loading condition of the antenna. The Automatic Gain Control (AGC) of the receiver is used to control the amplitude of the received 13.56 MHz input sine-wave signal from the antenna (input pins RXP and RXN).

It is recommended that you use NXP's tools - NFC Cockpit to debug your device.

NXF92074_0-1675763796796.png

Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.

Best regards,
Kelly
Technical Support
NXP Semiconductor

0 Kudos