RF Power output PN5180

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

RF Power output PN5180

659 次查看
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 项奖励
8 回复数

366 次查看
matteopeveri
Contributor I

Did you manage to solve it? 

I am having the same problem

0 项奖励

341 次查看
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 项奖励

338 次查看
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 项奖励

335 次查看
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  

321 次查看
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 项奖励

312 次查看
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 项奖励

333 次查看
matteopeveri
Contributor I

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

 

0 项奖励

639 次查看
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 项奖励