Hello everyone, hello @IvanRuiz,
i got a customer board based on Toradex imx6ull SOM. There is a PN7150 RFID connected using I2C on default address (0x28).
When trying to come up with NCI Library i get strange No ACKs, which prohibit the device to be started correctly.
The PN7150 is connect with Configuration 1 (Only 3.3V) not like on OM eval board (where C2 is used with 5V and 3.3 V), but this should not cause I2C not to be acked isn't it?
What i did see during observation is, that the PN7150 has more data to send in case of error, which seems not to be received by NCI Lib.
To hit the error i currently use: nfcDemoApp poll
[ 148.777720] pn5xx-read: 00000000: 41 01 01 A..
[ 148.785725] i2c i2c-0: <i2c_imx_xfer>
[ 148.785735] i2c i2c-0: <i2c_imx_start>
[ 148.785949] i2c i2c-0: <i2c_imx_bus_busy>
[ 148.785965] i2c i2c-0: <i2c_imx_xfer> transfer message: 0
[ 148.785978] i2c i2c-0: <i2c_imx_xfer> CONTROL: IEN=1, IIEN=1, MSTA=1, MTX=1, TXAK=1, RSTA=0
[ 148.785990] i2c i2c-0: <i2c_imx_xfer> STATUS: ICF=1, IAAS=0, IBB=1, IAL=0, SRW=0, IIF=0, RXAK=1
[ 148.786000] i2c i2c-0: <i2c_imx_read> write slave address: addr=0x51
[ 148.786140] i2c i2c-0: <i2c_imx_trx_complete> TRX complete
[ 148.786150] i2c i2c-0: <i2c_imx_acked> ACK received
[ 148.786158] i2c i2c-0: <i2c_imx_read> setup bus
[ 148.786168] i2c i2c-0: <i2c_imx_read> read data
[ 148.786298] i2c i2c-0: <i2c_imx_trx_complete> TRX complete
[ 148.786309] i2c i2c-0: <i2c_imx_read> clear MSTA
[ 148.786318] i2c i2c-0: <i2c_imx_bus_busy>
[ 148.786335] i2c i2c-0: <i2c_imx_read> read byte: B0=0x0
[ 148.786350] i2c i2c-0: <i2c_imx_xfer> exit with: success msg: 1
[ 148.787370] pn5xx-read: 00000000: 00 .
[ 148.796170] i2c i2c-0: <i2c_imx_xfer>
[ 148.796185] i2c i2c-0: <i2c_imx_start>
[ 148.796600] i2c i2c-0: <i2c_imx_bus_busy>
[ 148.796620] i2c i2c-0: <i2c_imx_xfer> transfer message: 0
[ 148.796632] i2c i2c-0: <i2c_imx_xfer> CONTROL: IEN=1, IIEN=1, MSTA=1, MTX=1, TXAK=1, RSTA=0
[ 148.796645] i2c i2c-0: <i2c_imx_xfer> STATUS: ICF=1, IAAS=0, IBB=1, IAL=0, SRW=0, IIF=0, RXAK=1
[ 148.796656] i2c i2c-0: <i2c_imx_read> write slave address: addr=0x51
[ 148.796847] pn5xx-write: 00000000: 21 00 0d 04 04 03 02 05 03 03 80 01 80 03 02 01 !...............
[ 148.806145] i2c i2c-0: <i2c_imx_trx_complete> TRX complete
[ 148.806155] i2c i2c-0: <i2c_imx_acked> No ACK
[ 148.806164] i2c i2c-0: <i2c_imx_stop>
[ 148.806172] i2c i2c-0: <i2c_imx_bus_busy>
[ 148.806196] i2c i2c-0: <i2c_imx_xfer> exit with: error: -6
[ 148.807220] pn54x_dev_read: i2c_master_recv returned -6
NCI Log:
NxpTml: PN54X - I2C Read successful.....
NxpNciR: len = 6 > 400003001100
NxpTml: PN54X - Posting read message.....
NxpHal: read successful status = 0x0
NxpHal: Response timer stopped
NxpHal: Checking response
NxpTml: PN54X - Read requested.....
NxpTml: PN54X - Invoking I2C Read.....
NxpTml: PN54X - Write requested.....
NxpTml: PN54X - Invoking I2C Write.....
NxpTml: _i2c_read() [hdr] errno : 6
NxpTml: PN54X - Error in I2C Read.....
Any Help is very appreciated, things did work with PN7120, when switched to (production) PN7150 we faced this problem.
Thanks in advance
Andreas
Solved! Go to Solution.
Seems to be a hardware fault on my customer's board. But pn7150 is an obsolete option by current master branch of linux_libnfc-nxp.
If someone else observes a similar problem: The GPIOs for Enable and IRQ have been exchanged in the connector, which did not fit the hardware schema. With i.MX6ULL Inputs (IRQ) do provide 3.3V over an internal pull-up, PN7150 draws it to 2.8V and it seems to drop to a PN reset when the I2C transfer is too long in my configuration.
Just to identify the point where thing went weird .....
Thanks anyway
Seems to be a hardware fault on my customer's board. But pn7150 is an obsolete option by current master branch of linux_libnfc-nxp.
If someone else observes a similar problem: The GPIOs for Enable and IRQ have been exchanged in the connector, which did not fit the hardware schema. With i.MX6ULL Inputs (IRQ) do provide 3.3V over an internal pull-up, PN7150 draws it to 2.8V and it seems to drop to a PN reset when the I2C transfer is too long in my configuration.
Just to identify the point where thing went weird .....
Thanks anyway
Sorry guys seems to be not the apropriate Board i did choose, i did a repost on NFC board
Hello,
You may find it helpful to refer to the following document for the PN7120/PN7150 for the 6SX in order to check your implementation: https://community.nxp.com/t5/NFC-Knowledge-Base/PN7150-PN7120-NFC-Controller-SBC-Kit-for-Arduino-on-...
BR,
Ivan.
@IvanRuiz Thanks for the Link.
I am using a Yocto based image on Toradex imx6ull Colibri board, and am building the linux_libnfc-nci from a Yocto recipe. The only difference i did have was not to issue --enable-pn7150 from the document you linked.
Doing so (adding --enable-pn7150) brings me to:
....
configure: LLCP1.3 support is disabled (no secure P2P)
configure: Selected TML is I2C
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libnfc-nci.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: WARNING: unrecognized options: --enable-pn7150
DEBUG: Shell function do_configure finished
There seems to be no option --enable-pn7150, can you please give me a hint what could be wrong here?
I am using latest linux_libnfc-nci (2aff6448cf6a86897d3d1bacb0a0943a594aa9ce).
Thanks