This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TRF7970A, ISO14443B card emulation and direct mode 1

Other Parts Discussed in Thread: TRF7970A, MSP430F5529

Hello,


I'm trying to get a TRF7970a working in card emulation mode for ISO14443B in direct mode 1. I'd like to receive the bits the terminal is sending to me, the card.

From the datasheet of the TRF7970A I find it very difficult to understand how I need to configure the registers. By using spying on the SPI communication of the NFCLink (NFC boosterpack + MSP430F5529 Launchpad) I have ISO14443A & B card emulation in the normal operating mode working. I am also able to receive bits with ISO14443A card emulation in direct mode 1; but I can't get ISO14443B to work in direct mode 1.

I want to use direct mode 1 because I want to receive all bytes, including the CRC (instead of 'I've got a CRC error').

Is there an example available? Or can anyone tell me how I should configure the chip?

Regards,

Marc

  • Hey Marc,

    We don't have an example doing exactly what you are wanting.  

    I haven't actually used Direct Mode 1 to receive in Card Emulation mode, but it should work fine.   This TI Design discusses using Direct Mode 1 to receive while in reader mode.  It breaks down the steps to enter and exit the mode correctly:

    If you just want to received the CRC bytes, you should be able to do this in Direct Mode 2 (normal operating mode).  If you set the rx_crc_n bit below, it will disable CRC checking, and give you the raw bytes via the FIFO.  

    Now, if you want to manually check the parity bits, then the only way to do this in Direct Mode 1.  

    Hope this helps,

    Thanks,

    JD

  • Hi John,

    I've tried to receive with CRC bytes by making B7 in the ISO control register high, but I'm not getting them. Also, the footnote in the datasheet says: "Only applicable to ISO-14443A and ISO-15693".
    Also see the attached file from my logic analyser (iso14443b with ISO control bit 7 high but no crc.logicdata, captured using Saleae Logic 1.1.34): at the first bookmark (1.7329692s) I read the fifo status register, which tells me that 3 bytes have been received. At 1.7330332s I read the ISO control register, to check, and it shows that the bit 7 of the ISO control register is still high.
    The data I receive is 0x05 0x00 0x08, which is the WUPB from my terminal, without CRC. If it would have a CRC it would have been 5 bytes: 0x05 0x00 0x08 0x39 0x73.

    So to me it looks like receiving the CRC for ISO14443B in direct mode 2 is not possible.


    I'm also interested in parity bits, so let's go for direct mode 1/special direct mode.

    I've replicated the steps of the appnote in my code up to step 18, I see the bits being transmitted, so that works. I see no incoming data because I don't have a card that replies to the 0x60 being sent, but I assume that must work.

    So let's convert that to a type b card emulation (see also: dm1 iso14443B card emulation attempt.logicdata):
    In step 3 I write 0xA5, instead of 0x88 (0xa5 = no crc, DM0, nfc/card emu, target, passive, card emu mode, ISO14443b)
    I skip steps 7-13 (enter SDM, send data, exit SDM).
    In step 16 I write 0x65 instead of 0x48 (0x65 = RX crc, DM1, card emulation mode, target, passive mode, card emulation mode, ISO14443B)

    After step 18 When I hold my TRF7970A EVM on a ISO14443B cardreader, I expect to see something on the bitclock and miso when the cardreader sends its WUPB. But nothing happens...

    My code:

        // following the procedure in sloa214, chapter 4.2
        
        // not transmitting:
        TXEnableIO2_Write(0);
        // Software initialization: power on reset
        TRF7970A_Direct_Command(CMD_SOFT_INIT);
        // Enter idle mode
        TRF7970A_Direct_Command(CMD_IDLE);
        
        // 1. Set TX_Data (I/O_3) Low (required for sending correct SOF when entering SDM)
        TXDataIO3_Write(0);
        // 2. Write register 0x0D with 0x3E (Disable No Response IRQ)
        TRF7970A_Write_Register(REG_IRQ_MASK_1, 0x3e);
        // 3. Setup register 0x01 (Write with 0x88 for ISO14443A/Mifare Classic at 106 kbps)
        // 0xa5 = no crc, dm0, nfc/card emu, target, passive, card emu mode, ISO14443b
        TRF7970A_Write_Register(REG_ISO_CONTROL, 0xa5); //0x88);
        
        // 4. Write register 0x00 with 0x21 (enable RF)
        TRF7970A_Write_Register(REG_CHIP_STATE_CONTROL, 0x21);
        // 5. Send direct command 0x16 to disable decoders (send 0x96)
        TRF7970A_Direct_Command(CMD_STOP_DECODERS);
        // 6. Clear IRQ by reading register 0x0C
        TRF7970A_Read_Register(REG_IRQ_STATUS);
    //    // 7. Write register 0x10 with 0x08 (Enable Special Direct Mode)
    //    TRF7970A_Write_Register(REG_SPECIAL_FUNCTION, 0x08);
    //    // 8. Write register 0x00 with 0x61 with no stop condition, SS pin stays low (enter Special Direct Mode).
    //    buf[0]=REG_CHIP_STATE_CONTROL;
    //    buf[1]=0x61;
    //    // 9. Send eight clock cycles to enter Special Direct Mode. SS pin stays low.
    //    buf[2]=0;                       
    //    // keep SS low:
    //    SPI_hold_SS(true);
    //    // send the three bytes
    //    SPI_Transfer_Data(buf,3);
    //    
    //    // I skip the actual transmission here
    //    // 10. I/O_2 goes high and enables TX
    //    TXEnableIO2_Write(1);
    //    // 11. Set TX Data (I/O_3) on bit clock (I/O_5) rising edge
    //    //  a. Data is latched on bit clock (I/O_5) falling edge
    //    //  b. Data is transmitted out LSB for MIFARE Classic communication
    //    
    //    // byte with parity equal to 1
    //    uint16 txbyte = 0x0152;
    //    
    //    for (int i = 0; i < 9; i++) {
    //        bool output = (txbyte & (0x01 << i));
    //        while(BIT_CLK_Read() == 1) {
    //            // wait for falling edge
    //        }
    //        while(BIT_CLK_Read() == 0) {
    //            // wait for rising edge
    //        }
    //        TXDataIO3_Write(output);        
    //    }
    //    
    //    // 12. I/O_2 goes low and disables TX
    //    //  a. Must wait until after Bit Clk rising edge on last data bit
    //    while(BIT_CLK_Read() == 1) {
    //        // wait for falling edge
    //    }
    //    while(BIT_CLK_Read() == 0) {
    //        // wait for rising edge
    //    }
    //    
    //    TXEnableIO2_Write(0);
    //    // 13. Stop condition issued on SPI (SS line brought high)
    //    // a. Must wait until after the next SDM Bit Clk rising edge.
    //    while(BIT_CLK_Read() == 1) {
    //        // wait for falling edge
    //    }
    //    while(BIT_CLK_Read() == 0) {
    //        // wait for rising edge
    //    }
    //    SPI_hold_SS(false);
        
        // 14. Write Register 0x10 with 0x00 (disabling Special Direct Mode)
        TRF7970A_Write_Register(REG_SPECIAL_FUNCTION, 0x00);
        // 15. TX Complete
        // 16. Write register 0x01 with 0x48 (enable Direct Mode 1).
        // 0x65 = 0b01100101 = RX crc, DM1, card emulation mode, target, passive mode, card emulation mode, ISO14443B
        TRF7970A_Write_Register(REG_ISO_CONTROL, 0x65);// 0x48);
        
        // 17. Write register 0x00 with 0x61 with no stop condition, SS pin stays low (to enter Direct Mode 1).
        buf[0]=REG_CHIP_STATE_CONTROL;
        buf[1]=0x61;
        // 18. Send eight clock cycles to enter Direct Mode 1.
        buf[2]=0;                       
        // keep SS low:
        SPI_hold_SS(true);
        // send the three bytes
        SPI_Transfer_Data(buf,3);
        
        
        
        while(1);

    
    
    Data save2T ���|�J�������.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*���Lk����.�*��TXEnable i/o 2�?����.�*�	�E�TXData i/o 3�?����.�*�
    ��mosi�?����.�*����miso�?����.�*����ss�?����.�*�
    ��sck�?����.�*���irq�?����.�*�� ��bitclk�?TTTT���O�pоTT�|�J���TT����.�*�оо=TTTTT ������.�*�TоT���о�p�EN�p������������оо���о�p=N(((��|���
    �������v�
    ������������������p���������p4�p�p_�p	*�p
    b�p9�p�p��p��p��p��p��p�p$��p%���оо���о)�p�=N~�k��޽k��ޠL�������~p��������~pO�p�p~�p܌pz�p؍pv�p`�p
    �p	l�p	
    �p
    k�p
    	�p���о�p�<N����������������������������������������������������������������y�����������������������������������������������������������������������������������������p+++���������p��p
    	��p-�pL�p\�p�p!�p('@�p21_�p<;b�p<��p=�pGF<�pQP\�p[Z_�p[��p\�pfe9�ppoX�pzy�p���p���p���p��ȏp���p���p���p���p��ϐp���p���p���p���p��ˑp���p���p�}�p���p����p��ےp��p���оо���о�p=N��XT�����?���ԁ~p
    
    
    ��������~p1�p��p.�p��p��p�p��p�p����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*�����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*� ��SPISPI�22 serialization::archive 10 17 SaleaeSpiAnalyzer 0 18 14135323886416799643 5 1 14135323886416799643 4 1 23743 0 1 23743 2 1 0 8 0 1 0�22 serialization::archive 10 17 SaleaeSpiAnalyzer 0 18 14135323886416799643 10 1 14135323886416799643 11 1 14135323886416799643 13 1 14135323886416799643 12 1 0 8 0 1 0TTSPISPI"T	����.�*��?(T
    Timing Marker PairA1A2TT

    
    
    Data save2T ���|�J�������.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*�n�/�J����.�*��	06 rx irq�?����.�*�	�E�07 spi read�?����.�*�
    ��mosi�?����.�*����miso�?����.�*����ss�?����.�*�
    ��sck�?����.�*���irq�?����.�*�� ��bitclk�?TTTT�T�|�J���T����.�*�����TTTTT ������.�*�T�T�F+^��QS���������>�J�^ia�ȃ�[��������>�J��J(�P��P7L�EM��6�6�&;�';�?�?D*^���J2)e���J���������J��*^4�Q� �z�����
    �+�����������+���%���+��2������������������
    ���������������
    �������1�,�����������1�%�����
    �����������������
    ����
    ��������
    ��������������������
    ��������������������
    ����
    ����
    �����333F���������������5����P����������������������a~�18����B�1���1�8ǃ�1|�����3��1î�������������H�����C�J�=
    �	�
    �
    e���L���6�h�3�~�&� w�$#�%t�	)�*	p�
    ,��-
    �/�0D�4��5+�9�xE:&yE
    <zE=
    3zE?�G@�GB�GC'�GE_�JF��JHx�JI��JK��JL̉JN��JO؊JO
    �JP?�JRΌJS��JU
    �JVE�J\�J]�J_�J`��Jjic�Jts�J~}�J�ӒJ�i�J��o�J�!�J�M�J�D�J�c�J�o�J���J�R�P�}�P�d�P���P���P���P���P��P�s�P���P�%�P�Q�P�CO��oO� �iP�� �P��&���R��!�E���!e���R���}��"�g���"����?���k��#�[���#z��	�cJ��	�J�$�xK��$�K�%��L��%�L�
    �6�
    ,6&�6�&66'�B6�'a6�LH8�wH8(�dI8�(�I8�%;�,%;)�&;�)9&;*�E';�*d';
    �?�
    9?+�*?�+I?,�U?�,t?�#�?�O�?-�9�?�-X�?�r2B��2B.��3B�.�3B�tEH��EH/��FH�/�FH�ixJ��xJ0��yJ�0�yJ�k(^��(^1�)^1�)^2�*^2�*^��Q{{{��׆��������1�u��J�����8�����2��i���������K�>����������������2���������2���2�������������1���{�8.��������V�����,�2.+.2d�~`~{1�����B`1��{1��FɃ�2>������2��1��TTT��������d���E�R�R��xE'yE_zE�zE�G%�GS�G��G	��J
    ��J��J�J��J\�J��J&�J	N�J
    Z�Jp�J��J~�P ��P$��P%�P
    '�P(
    �P)��P*k�P43,�P>=q�P?Q�P@}�PE��P�P�F�P�HS��I_��I���Jσ�L���M�Ol��Px��P���Q崝	S�J�T	�J�T�K�UL�
    WI6X
    �6\xH8]�H8]�I8^�I8`-%;a9%;aL&;b�&;
    d:?e
    G?e\?f�?h��?i��?k�2Bl�2Bl�3Bm4Bo�FHpGHr�xJs�xJs�yJtzJv�(^w�(^w�)^x�%+^��Q777}�k�x�����������k�ÿ���}�����n���k�������������վ�����CCC߅Ԇ�����������������������X������5����������������������������������������a~��0�{��j��q�B��0�4��1�2���ƃ�b1������(��a2��1�	��~~~�����������g���^�
    ��
    ��������	��	��
    ��
    ����������
    ��	
    ��	��
    ��
    ����B��xE�yE�yE
    �zE
    ��G��GܬG��G/�J�JM�J$�J��J'�J��J��J��JG�J��J]�JʎJ��J�J��J��J$�P��P;�P�P l�P �P!��P!Q�P" ��P!#��P!O�"�O�$";P�#$Q�#���$ւ�%$��%%�%%��&���&&=��'&��'��(곝'(.��)'��	)7J�*	
    K�(*MK�+( L�)+yL�,)%M�
    ,�6-
    �6*-�6.*�6+.6/+�6/H80�H8,0:I81,J81�$;2�%;-2�%;3-�&;.3';4.�';
    4�?5
    �?/5�?6/�?06+?70�?7��?8��?18�?91��?9D2B:!3B2:b3B;2;4B;IEH<FH3<^FH=31GH==xJ>yJ4>YyJ?44zJ?=(^@)^5@V)^A5,*^6A�*^B6�+^��Q�����������}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������111�����������������������P����������������������������a~E1������B+1y�E1u��ƃ�1	�h�m��2TP1P����������������
    	N�m�p�����)(��-C�.b�87r�<$
    �=C
    �GFb
    �QP�
    �[Z�
    �['�\F�fee�po��zy��z �{?���_���~��������<���[���{���~����9���X���w���z����2���R���q���t����/�N�
    m�q�	
    �	,� K�*)j�43m�
    4��5
    �?>2�IHQ�SRp�]\��c�d2�nmQ�xwp���s��������(���xE�yE��3yE��RyE��qyE���yE
    �
    zE�
    ,zE��KzE��kzE���zE���zE��G��G��$�GC�G
    b�Gx�G�G �G)(@�G32_�G=<~�GGF��GMY�JNx�JXW��Jba��JlkևJvu�J|r�J}��J����J��ψJ���J���J���J�ƉJ���J���J���J���J�ŊJ���J���J��#�J��B�J��a�Jk�J	
    �J
    ,�J<�JȌJ�J#"�J-,&�J76)�J7�J8�JBA�JLK>�JVUB�JV�JW�Ja`,�JkjK�JutN�Ju�Jv>�J�]�J��|�J����J����J��ڐJ����J���J��8�J��W�J��v�J����J����J��ӑJ�J�J1�J P�J*)o�J43��J>=��JHG͒JRQ�J\[�Jfe+�JpoJ�Jzyi�J��l�J��J�:�J��Z�J��y�J����J����J�=�J�\�J��|�J����J����J����J�o�J���J����J�K�P�k�P����P��PȵP޵P ^�P!}�P+*��P54��P?>۶PIH�PO��PP��PZYԷPdc�Pnm��Pn��PoθPyx�P���P��+�P��K�P��j�P����P����P��ȹP���P���P��%�P��D�P��d�P����P��P
    s�P��P+�P"!J�P,+i�P65�P<=O�=\O�GF{O�QP�O�[Z�O�ed�O�kbP�l�P�vu�P���P����P����P�� ���?����^����~�������������?���^����}��������������҃��K���k�����
    ���Ȁ�! ހ� 'a��( ���21���<;���FEށ�PO�V9��WX��a`w��kj���ut���~̳�!�U���!t��������������Ҵ���贝	�]J��	|J����J����J����J����J�"�rK��"�K����K����K��K�L�#�L�#�L��L�'&M�10M�
    1�62
    6<;96FEX6POw6ZY�6$`6a$/6kjN6utn6~�6���6%�<6�%[6��z6���6���6�EH8�eH8���H8���H8���H8���H8&�^I8�&}I8���I8���I8���I8		�I8	�$;
    	%;		9%;!	 	X%;+	*	w%;5	4	�%;';	&;<	'2&;F	E	Q&;P	O	q&;Z	Y	�&;d	c	�&;(j	>';k	(^';u	t	}';	~	�';�	�	�';
    �	?�	
    '?�	�	F?�	�	e?�	�	�?�	�	�?)�	#?�	)B?�	�	b?�	�	�?�	�	�?�	�	�?*�	O?�	*n?�	�	�?�	�	�?
    
    �?
    �?
    <�?
    
    [�?
    
    z�?%
    $
    ��?/
    .
    ��?+5
    3�?6
    +R�?@
    ?
    q�?J
    I
    ��?T
    S
    ��?^
    ]
    ��?d
    l2Be
    �2Bo
    n
    �2By
    x
    �2B�
    �
    �2B�
    �
    �2B,�
    �3B�
    ,�3B�
    �
    �3B�
    �
    �3B�
    �
    4B�
    �
    4B�
    nEH�
    �EH�
    �
    �EH�
    �
    �EH�
    �
    �EH�
    �
    FH-�
    �FH�
    -�FH�
    �
    �FH�FH�FHGH cxJ!�xJ+*�xJ54�xJ?>�xJIH�xJ.O�yJP.�yJZY�yJdc�yJnm�yJxwzJ~e(^�(^���(^���(^���(^���(^/�{)^�/�)^���)^���)^���)^��
    *^0��*^�0�*^���*^��+^����)^!�Q�����끼Z������������������ǀ�t~1��;��B�06�	14��ǃ]2��!�(�b21
    �'''���������xEozEv�Gd�G�J��JڴP��P�N��P���������ā�Ͳ�	���		�I�
    	�K�
    
    �6
    s6�G8�I8�$;
    u&;
    
    �?
    �?��?��?��?�1B�3B�3BEH�FH�wJ�yJ�'^�)^�)+^��Q///ONQOP5W55�4VO55X�5�4�545�V5�U54U5R5554�5S>>>�
    ������������ꀅ��������������G���Ј���������������������������������������������������������������ǀ�b~��1���������B�91�����1�ԕ�ǃ��1�g��t��|��3����1�_��ZZZ����������M���J���C���@���<���#�X�B���$yE=zE	rzE�G
    1�G��G
    ��J��J
    ֈJ։J,�J�J
    l�J
    m�J��J{�P��PöPƷP�P��P۹PºPmO��P�Q�P��o�� �{��!���"Ɓ�i��#���$���	�J�%	�K�&#L�'�L�'*M�
    *6(
    @6)�6* l6!*�6!uH8+�I8",�I8"*%;-C&;#.w&;/#n';$/�';
    $7?0
    S?%1�?2%?&2�?&M�?3b�?'4��?'�2B5�3B(6�3B(�EH7�FH)8�FH)�xJ9�yJ*:6zJ,�(^;�)^-<�)^=-�*^.=����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*�����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*� ��SPISPI�22 serialization::archive 10 17 SaleaeSpiAnalyzer 0 18 14135323886416799643 5 1 14135323886416799643 4 1 23743 0 1 23743 2 1 0 8 0 1 0�22 serialization::archive 10 17 SaleaeSpiAnalyzer 0 18 14135323886416799643 10 1 14135323886416799643 11 1 14135323886416799643 13 1 14135323886416799643 12 1 0 8 0 1 0TTSPISPI"T	�������������?'T
    ��Jm�J3 bytes'/�JʍJBookmark+T��JTTiming Marker PairA1A2TTT

  • the footnote is correct. All Type B commands are sent and received with CRC, so the part always generates if for you on (downlink) and then checks and strips out on uplink (RX)  

    Type B does not use parity, so not sure where you are going with that, unless its about Type A. 

    please advise. 

  • > Type B does not use parity, so not sure where you are going with that, unless its about Type A.

    My bad, I'm still learning and assumed type B had parity as well.

    Anyway, for type B I'd like to receive the messages from my terminal/cardreader with the CRC, so I assume my best option is to use direct mode 1, right?

  • got it - so question back here is why you want to see the CRC... the built in the CRC generator/checker was done on purpose to lighten the firmware load - so it will not give you anything back if its not correct except for CRC error or data corruption error in the IRQ status register.

    otherwise, if you absolutely require having a look, then DM1 or DM0 will be your path to get it.
  • I want to receive the actual crc because I'm developing a new version of a product for analysis and testing purposes where sending (and receiving) messages with a wrong CRC is one of the wanted functionalities. Our current product implements everything related to ISO14443B using analog circuits and a CPLD. I wanted to use the TRF7970A to reduce the boardspace and power consumption.

    So, back to my code, what could be the reason for not receiving anything? Did I make a mistake in the configuration or am I missing something?
  • Hey Marc,

    Sorry about the confusion for Type B CRC. I never realized this restriction.

    You don't have to use SDM to transmit, unless you also are wanting to control the TX CRC bytes.

    As for the code, I would try 2 things:

    1) Put a short delay (1-5ms) after the idle command.
    2) Set ISO_Control to 0x61 instead of 0x65

    With the ISO_Control register set to a 0x21, the TRF7970A actually decodes all commands in a sniffer type mode. Typically when doing Card Emulation we always start in this mode and listen to the different commands received. We typically also reset between each command.

    Give this a try in Direct Mode 1 by setting the ISO_Control to a 0x61 and see if you see any commands.

    Thanks,
    JD
  • Hi John,

    No problem, I'm grateful for your (and Josh's) assistance. (And I completely understand the "Why does anyone care for the CRC?" :) )

    I've tried your suggestions: I've put a delay of 5ms after the reset and idle command and changed the ISO Control register value to 0x61 in step 16 (and in step 3, just to be sure) . Result: nothing :(

    
    
    Data save2T ���|�J�������.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*���P��x����.�*��TXEnable i/o 2�?����.�*�	�E�TXData i/o 3�?����.�*�
    ��mosi�?����.�*����miso�?����.�*����ss�?����.�*�
    ��sck�?����.�*���irq�?����.�*�� ��bitclk�?TTTT
    Qy@pTT�|�J���TT����.�*�@p@puTTTTT ������.�*�T@pT@p�Py;���Py���������@p@p@p�A{$��&&&�����
    ������z����
    ���������������7Qy2�����������7QyiQy�Ez�Ez2:{w:{A;{	z;{
    Q<{={�={�={�>{�>{�?{@{�@{ �@{"�A{#@p�A{�����@{���������@{�@{@p"A{���~{�޿l�����_���������Cy��������������Cy
    Qy�QyvEz�Ez�9{�:{�:{�;{�;{�<{|={&>{�>{$?{�?{ @{	`@{	A{
    @p
    B{���666����������������������������������������������������������������}�������������������������������������������������������������������������������������������������������7Qy5�O�000��������7QyVQy
    	fQy�Ez�Ez�Ez:{8:{('X:{21w:{<;z:{<;{=5;{GFT;{QPs;{[Zv;{[<{\1<{feQ<{pop<{zy	={��={��={��={���={��>{��>{��>{��>{���>{��?{��?{��?{��?{���?{��@{��@{��@{��@{���@{���@{�@{xA{�A{�A{�A{%$�A{/.@p@p@p�A{����[T��@�����I:{			��������I:{�:{E;{�;{�={0>{�>{+?{����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*�����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*� ��SPITRF7970A SPI Analyzer (1)�22 serialization::archive 10 17 SaleaeSpiAnalyzer 0 18 14135323886416799643 5 1 14135323886416799643 4 1 23743 0 1 23743 2 1 0 8 0 1 0�22 serialization::archive 10 25 SaleaeTRF7970ASPIAnalyzer 0 18 14135323886416799643 10 1 14135323886416799643 11 1 14135323886416799643 13 1 14135323886416799643 12 1 0 8 0 1 0TTSPITRF7970A SPI Analyzer (1)"T	����.�*��?(T
    Timing Marker PairA1A2TT

    For a sanity check: When I use direct mode 0 (0x21 in the control register) I see the bits on the MISO line and when I look on the oscilloscope I see they match with what the reader sends, both the type A and type B. So that (still) works. I just don't get the bitclock when I use DM1.

    
    
    Data save2T ���|�J�������.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*���P��x����.�*��TXEnable i/o 2�?����.�*�	�E�TXData i/o 3�?����.�*�
    ��mosi�?����.�*����miso�?����.�*����ss�?����.�*�
    ��sck�?����.�*���irq�?����.�*�� ��bitclk�?TTTT
    Qy@pTT�|�J���TT����.�*�@p@puTTTTT ������.�*�T@pT@p�Py;���Py���������@p@p@p�A{$��&&&�����
    ������z����
    ���������������7Qy2�����������7QyiQy�Ez�Ez2:{w:{A;{	z;{
    Q<{={�={�={�>{�>{�?{@{�@{ �@{"�A{#@p�A{�����@{���������@{�@{@p"A{���~{�޿l�����_���������Cy��������������Cy
    Qy�QyvEz�Ez�9{�:{�:{�;{�;{�<{|={&>{�>{$?{�?{ @{	`@{	A{
    @p
    B{���666����������������������������������������������������������������}�������������������������������������������������������������������������������������������������������7Qy5�O�000��������7QyVQy
    	fQy�Ez�Ez�Ez:{8:{('X:{21w:{<;z:{<;{=5;{GFT;{QPs;{[Zv;{[<{\1<{feQ<{pop<{zy	={��={��={��={���={��>{��>{��>{��>{���>{��?{��?{��?{��?{���?{��@{��@{��@{��@{���@{���@{�@{xA{�A{�A{�A{%$�A{/.@p@p@p�A{����[T��@�����I:{			��������I:{�:{E;{�;{�={0>{�>{+?{����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*�����.�*�����.�*�����.�*�	����.�*�
    ����.�*�����.�*�����.�*�
    ����.�*�����.�*� ��SPITRF7970A SPI Analyzer (1)�22 serialization::archive 10 17 SaleaeSpiAnalyzer 0 18 14135323886416799643 5 1 14135323886416799643 4 1 23743 0 1 23743 2 1 0 8 0 1 0�22 serialization::archive 10 25 SaleaeTRF7970ASPIAnalyzer 0 18 14135323886416799643 10 1 14135323886416799643 11 1 14135323886416799643 13 1 14135323886416799643 12 1 0 8 0 1 0TTSPITRF7970A SPI Analyzer (1)"T	����.�*��?(T
    Timing Marker PairA1A2TT

    Do you have more suggestions?

    Note: to open the logic analyser files, just remove the .txt part; the forum does not allow me to upload .logicdata files.

    Best regards,

    Marc