cancel
Showing results for 
Search instead for 
Did you mean: 

Availability of Java source code of STSW-ST25R001 PC software for ST25R3911B-DISCO board ?

Nikhil D&K
Senior

Hello Developers,

I am currently working on a project that includes NFC communication using ST25R3911B-DISCO board and ST25DV NFC tags. The project also includes development of custom GUI application similar to STSW-ST25R001 software.

Currently i am using STSW-ST25R001 PC software to communicate with ST25R3911B-DISCO board. But can any one let me know is there JAVA source code available for STSW-ST25R001 software ? And if yes please share the necessary links.

1 ACCEPTED SOLUTION

Accepted Solutions
Grégoire Poulain
ST Employee

Hi Nikhil,

STSW-ST25R001 GUI was developed in C++ with Qt.

Nevertheless, the GUI Application itself is not relevant to address the ST25R3911B.

Underneath the GUI Application a DLL is provided which grants the APIs needed for driving the ST25R3911B-DISCO board.

The DLL is available inside installation folder (ST25R3911DISCOComm.h/lib/dll) and demo projects are also provided at: C:\Users\$USER\Documents\STMicroelectronics\ST25R3911B_Discovery_GUI\DLL_Demos

Our recommendation for your developments is to make use of ST25PC-NFC software (STSW-ST25PC001) (which makes use of the above DLL), or directly using the DLL if so preferred.

Kind regards

GP

View solution in original post

11 REPLIES 11
Brian TIDAL
ST Employee

Hi

STSW-ST25R001 is not Java based software.

If you need Java based software, I would recommend to use the ST25PC-NFC software (STSW-ST25PC001) and its related Java source (STSW-ST25PC002).

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hello,

Can you let me know STSW-ST25R001 software is based on which language ? And how can i get the source code for the same.

Regards,

Nikhil Komalan

Grégoire Poulain
ST Employee

Hi Nikhil,

STSW-ST25R001 GUI was developed in C++ with Qt.

Nevertheless, the GUI Application itself is not relevant to address the ST25R3911B.

Underneath the GUI Application a DLL is provided which grants the APIs needed for driving the ST25R3911B-DISCO board.

The DLL is available inside installation folder (ST25R3911DISCOComm.h/lib/dll) and demo projects are also provided at: C:\Users\$USER\Documents\STMicroelectronics\ST25R3911B_Discovery_GUI\DLL_Demos

Our recommendation for your developments is to make use of ST25PC-NFC software (STSW-ST25PC001) (which makes use of the above DLL), or directly using the DLL if so preferred.

Kind regards

GP

Okay thanks for information.

Hello,

So as said above we are using ST25R3911B-DISCO reader to communicate with ST25DV dynamic tags in Fast Transfer mode. Our desktop application is already half developed using C# and we are able to only read tag id for the same. But to perform FTM operation requires certain commands, which we don't have.

So as per my understanding to perform a certain task between tag and reader (for eg. mailbox read) there would be a command to initiate a mailbox read from reader side sent towards dynamic tag.

Similarly there would be some fixed set of commands in compliance with ISO15693 to perform specific functions in Fast Transfer mode. I would like to have the list of commands so that i can i communicate with ST25 dynamic tag in FTM mode.

Regards,

Nikhil Komalan

Brian TIDAL
ST Employee

Hi Nikhil,

In order to use the mailbox for FTM, you have to first enable the mailbox:

  1. Open RF user security session with the Present Password command
  2. set MB_MODE bit to 1 in MB_MODE with the Write Configuration command
  3. set MB_EN bit to 1 in the MB_CTRL_Dyn register with the Write Dynamic Configuration command
  4. then you can access to the mailbox thanks to the following commands
  • Read Message Length 
    • Read Message
    • Write Message

All those commands are described in the ST25DV datasheet.

Once you have formatted one of those command, it can be sent from the reader to the tag thanks to transceive functions (you can use iso15693TxRxNBytes API or rfalTransceiveBlockingTxRx API. See for example https://community.st.com/s/question/0D53W00001ZWoO6SAL/can-i-have-some-guidance-on-how-to-use-the-str25r3111discocomm-dll-for-iso-15693-r2h-ftm-transfers-in-c)

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

I would like to know few more information regarding the frame format.

For example:

When i read the GPO static register, i get the following value "800500B0CCBA00" in response. I would like to know how to determine the value of SOF and EOF. Will it be same in all response which i will receive.

Also if i decode the response of the GPO read, it gives me the 2byte SOF (8005), 1byte response flag(00), 1byte reg value (0xB0), 2byte CRC (CCBA) and 1byte EOF(00).

Have i decoded the frame correctly ? Or i am missing something ?

Example :

Response : 8005 00 B0 CCBA 00

SOF: ?

Response Flag: 00

Reg Value: B0

CRC: CCBA

EOF: ?

Hello,

So i looked at the ST25DV datasheet for RF commands and frame formats also the logs of the PC software to understand how the data frame is transmiited and receieved and its quiet easy to understancd.

But as i told previously we already have a half built application made in C#. So i cant move to any other language. In my application currently i am able to perform the inventory discovery succesffuly read the ID of NFC tag. Also i am able to read the data from mailbox (tested by writing data from ST software in Mailbox and reading from C# based software). But when i try to perform the write to mailbox operation it gives me error of invalid command.

There are certain files in my project which add the protocol header to the data frame, which makes my data frame completely different from the one defined in ST25DV datasheet as well as different from the one sent using ST25 PC software. I guess the ST25R3911B_SENDRECEIVE function does the same like adding the protocol headers and other information to the data frame but cannnot verify.

Here is the frame format that's sent for read operation (most of the things i am unable to decode) but is working:

READ:
--------------------
 
0F-15-00-44-00-10-04-40-DE-00-0C-22-AC-02-81-38-3F-05-00-25-02-E0-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
  
1st byte is counter
AC - read cmd

Here is the frame format that's sent for write operation (most of the things i am unable to decode) which is not working and throwing error of invalid cmd:

WRITE :
 --------------------
01-18-00-44-00-13-04-40-DE-00-0C-22-AA-02-81-38-3F-05-00-25-02-E0-04-FF-FF-FF-FF-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00     
 
 
1st byte is counter
AA - write cmd
04 - data length 
FF-FF-FF-FF - data

NOTES:

In both write and read packets, (4-5)bytes before CMD code is same (i.e "40-DE-00-0C-22") and bytes after CMD code is same (i.e "02-81-38-3F-05-00-25-02-E0")

So can you please let me know what could be the possible reason why i am getting this invalid command error, although my command is right.

0693W00000QKMmpQAH.png0693W00000QKMmzQAH.png0693W00000QKMmuQAH.png0693W00000QKMmVQAX.png 

Grégoire Poulain
ST Employee

Hi Nikhil,

In order to make the Community threads more useful and easy for other to find the information, one should keep a question/topic per thread. It is our understanding that the initial question has been answered (Java source code availability).

Please post separate topics/questions in individual threads with the appropriate title/details.

Thank you

Kind regards

GP