RF Power output PN5180

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

RF Power output PN5180

3,064件の閲覧回数
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 返答(返信)

2,771件の閲覧回数
matteopeveri
Contributor I

Did you manage to solve it? 

I am having the same problem

0 件の賞賛
返信

2,746件の閲覧回数
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 件の賞賛
返信

2,743件の閲覧回数
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 件の賞賛
返信

2,740件の閲覧回数
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  

2,726件の閲覧回数
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 件の賞賛
返信

2,717件の閲覧回数
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 件の賞賛
返信

2,738件の閲覧回数
matteopeveri
Contributor I

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

 

0 件の賞賛
返信

3,044件の閲覧回数
KaiLi
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 件の賞賛
返信