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.
I had the same issue. Have you tried adding pull ups? After that my I2C scanner found 0x28 and 0x7C.
Which value resistor you used and to what voltage ?
Thank you for responding to my initial question
I tried 2.6k at 3.3v. I used the same scanner as you.
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
}
//