2018-06-14 03:50 AM
Posted on June 14, 2018 at 12:50
Hello ST25 community.
Some weeks ago I wrote this thread:
https://community.st.com/0D50X00009XkWIeSAN
I got the coding as in the example and it works. (The bytes are coded as it is mentioned in ISO 15693 datasheet)
I want to use 1 out of 4 coding for transmit from VCD to VICC:
Following register settings are used:
Defined: MSB to LSB ( 7 to 0 )
*-----------------------------------------------------------------------------------------------------------*
*register settings for iso15693*
Mode Definition Register (0x03) : 0 1 1 1 0 0 0 0 - sub carrier stream mode
Bit Rate Definition Register (0x04) : 0 0 1 0 0 0 1 0 - bit rate fc/32
Stream Mode Definition Register (0x08) : 0 0 1 1 0 0 0 0 - sub carrier frequency fc/32 , sub carrier pulses 4, time period fc/128
Auxiliary Definition Register (0x09) : 0 0 1 0 0 1 0 0 - set modulation AM
AM Modulation Depth Control Register (0x24) : 0 1 1 0 1 1 0 0 - set modulation depth to 29.7
After these settings I use following direct commands:
send_direct_command(RFID_CALIBRATE_MODULATION_DEPTH);
send_direct_command(RFID_CALIBRATE_ANTENNA);
For the st25r3911b power up I use following settings:
IO Configuration Register 2 (0x01) : 1 0 0 0 0 0 0 0 - set power supply of ST25 to 3.3 volt
Operation Control Register (0x02) : 1 1 0 0 1 0 0 0 - enable (set to 1): en, rx_en,tx_en
send_direct_command(RFID_ADJUST_REGULATORS);
*-----------------------------------------------------------------------------------------------------------*
I'm not sure if these settings are right. Hopefully someone could check.
As an attachment I send the communication VCD to VICC on an
oscilloscope. I got this using a different antenna.
Best regards
Nicolai.
Solved! Go to Solution.
2018-07-11 01:40 AM
Hi Ulysses,
I think I have found the problem why I get no response from the VICC. But first thinks first.
I have updated my code.
#define ISO15693_SOF_1_4 0x21
#define ISO15693_EOF_1_4 0x04
#define ISO15693_00_1_4 0x02
#define ISO15693_01_1_4 0x08
#define ISO15693_10_1_4 0x20
#define ISO15693_11_1_4 0x80
My dataword looks like that:
PART VALUE CODED
SOF 0x21 0x21 uncoded
FLAGS 0x26 0x20 0x08 0x20 0x02
CMD 0x01 0x08 0x02 0x02 0x02
MASK VALUE 0x00 0x02 0x02 0x02 0x02
CRC_LOW 0x09 0x08 0x20 0x02 0x02
CRC_HIGH 0xF5 0x08 0x08 0x80 0x80
EOF 0x0404 uncoded
So in total I have: 21 20 08 20 02 08 02 02 02 02 02 02 02 08 20 02 02 08 08 80 80 04
This is what I write to FIFO and send out using 'transmit without crc'.Still I get ABSOLUTLY no respone. I checked your CRC function with mine and I got the same values.
So I gave another shot to the
oscilloscope (I used an antenne of Proxmark to get the value).
In order to see what happends I made an endless loop: just fill the FIFO and transmit the values via magnetic field.
In the case nothing is transmitting ( the picture) I have only my carrier (56 MHz).
In the case the FIFO is only filled with 0xFF (31 bytes in total) a modulation takes places.
BUT in the case the FIFO is filled with constant 0x00 (31bytes in total) there is a modulation too.
Here is my endless loop:
while(1){
//needed befor sending Transmit CRC / no CRC send_direct_command(RFID_CLEAR);// this function takes a number of bytes to be written (fullbytes) and a number of bits and an array of uint8_t values
set_full_bytes_and_single_bits_for_transmitting_and_write_data_to_fifo(31, 0, fifo_write_data_iso15693) send_direct_command(RFID_TRANSMIT_WITHOUT_CRC); }Best regards, Nicolai.
________________ Attachments : no_transmit.jpg : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006HxR1&d=%2Fa%2F0X0000000ay0%2F4NYg6kULkvkpe_A1oQJrmgYm1flTkbGA5.ehdPGz844&asPdf=falsetransmit_constant_00.mp4 : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006HxQw&d=%2Fa%2F0X0000000axz%2FWQOzCyXf1nzaDCArCLyBPsnx2d.SNAmxF5UhgKfpj8E&asPdf=falsetransmit_constant_FF.mp4 : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006HxQr&d=%2Fa%2F0X0000000axy%2FWotFZkVZohTi0xxTPaqpfA0S3peVHGnzegFDfc6FHsw&asPdf=false2018-07-12 01:42 AM
Hello
Ulysses,
there should be one picture and two videos as attachment. Both videos about three seconds showing the measured wave by the
oscilloscope
.I started developing and implementing the code using the official iso 15693 datasheet. For example the 1out of 4 coding:
As you can see, the values for coding are LSBIT first but also inverted.
This total confused me. So i came to this forum. To sum it up: I implemented the same functions but with inverted values and LSBIT first. This was your ''confusion'' about my code .
I'm going to implement the invertion of crc and will give feedback.
Best regards, Nicolai
2018-07-12 01:44 AM
Hi Nicolai,
if you read our source code you will find that for iso15693 the crc needs to be inverted at the end - before coding:
26 01 00 F6 0A -> 21 20 08 20 02 08 02 02 02 02 02 02 02 02 20 08 80 80 20 20 02 02 04
You are going through a lot of hassle for re-implementing what we have already implemented.
Not sure why you would observe modulation on sending 0x00. No picture was attached.
Regards, Ulysses
2018-07-13 06:44 AM
2018-07-25 11:54 PM
Hello,
i got it work 🙂
The trick (mistake) was to set the transmission to OOK not to AM.
Thank you again for your patience.
Best regards, Nico