PN7150 i2c voltage drop at 0x28 with address wrong detected on arduino 0x7c

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

PN7150 i2c voltage drop at 0x28 with address wrong detected on arduino 0x7c

2,486 Views
anmol_workmails
Contributor I

Dear 

PN7150 i2c voltage drop at 0x28 with  address wrong detected on arduino 0x7c

I am working on NXP PN7150 NFC board with arduino as i run the i2c scanner code on arduino i get the address hex as 0x7c(hex) = 124 in decimal

according to data sheet the adress must be 0x28,0x29,0x2a,0x2bin hex or 40,41,42,43 in decimal respectively without including the read/write bit. if we include the r/w bit i have attached the screen shot.

but if i see this on DSO i see that there is voltage drop at address 0x40 and my I2cadr1 and I2cadr2 address selection for i2c are at low both.

 i have also tried to scan address on arduino code with giving the exact adress of 0x7c which is displayed if i run all 1-127 address scan on arduino with PN7150 then arduino does not read the PN7150 address.

so conclusion is that i have to start reading from 0x28(0x50 with read bit) and as the voltage drops the arduino is able to read Pn7150. i am not able to figure out why this is wrong and how to correct it.

 or if it is right then why is it right ?

 i have attached the code txt and serial monitor display shot , and other necessary document.

0 Kudos
4 Replies

2,261 Views
faker_09
Contributor I

I had the same issue. Have you tried adding pull ups? After that my I2C scanner found 0x28 and 0x7C.

0 Kudos

2,261 Views
anmol_workmails
Contributor I

Which value resistor you used and to what voltage ?

Thank you for responding to my initial question

0 Kudos

2,261 Views
faker_09
Contributor I

I tried 2.6k at 3.3v. I used the same scanner as you.

0 Kudos

2,261 Views
anmol_workmails
Contributor I

Today i tried to do PN7150 with pull up resistor of 4k7 & 3k3 on voltage 3.3v it gave same output, bellow is the program i2c scanner which i used. Can you tell your whole process you followed ?

Thank you

//


#include <Wire.h>


void setup()
{
Wire.begin();

Serial.begin(9600);
while(!Serial);
Serial.println("\nI2C Scanner");
}


void loop()
{
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for(address = 0; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");

nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(1000); // wait 5 seconds for next scan
}

//

0 Kudos