<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Use CLRC663 to read HID iClass UID in NFC</title>
    <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968610#M6179</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am able to use CLRC663 to read the iso14443 card uid easily. However, there is no response from HID iClass card which assumed to be compiled with iso15693. All I need is the uid of the card. The CLRC663 chip is connected to a stm32 uC using I2C interface. I attached the code I am using below. Please help me to have a look and kindly provide your suggestions. Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x37, 0xFF); //Selects minimum threshold level for the bit decoder&lt;/P&gt;&lt;P&gt;//load 15693 protocol&lt;BR /&gt; clrc630_write_reg(0x0F, 0x98); //config T0&lt;BR /&gt; clrc630_write_reg(0x14, 0x92); //config T1&lt;BR /&gt; clrc630_write_reg(0x19, 0x20); //config T2 for LFO autotrim&lt;BR /&gt; clrc630_write_reg(0x1A, 0x03); //T2 reload value for LFO AutoTrimm&lt;BR /&gt; clrc630_write_reg(0x1B, 0xFF);&lt;BR /&gt; clrc630_write_reg(0x1E, 0x00); // Configure T3 (for LPCD/ AutoTrimm)&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x02, 0x90); // Set FiFo-Size and Waterlevel&lt;BR /&gt; clrc630_write_reg(0x03, 0xFE);&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x0C, 0x80); // Init. RxBitCtrl register&lt;BR /&gt; clrc630_write_reg(0x28, 0x80); // TxMode register&lt;BR /&gt; clrc630_write_reg(0x29, 0x00); // TxAmp register&lt;BR /&gt; clrc630_write_reg(0x2A, 0x01); // TxCon register&lt;BR /&gt; clrc630_write_reg(0x2B, 0x05); // Init. TxI register&lt;BR /&gt; clrc630_write_reg(0x34, 0x00); // Init RxSOFD register&lt;BR /&gt; clrc630_write_reg(0x38, 0x12); // Init. RCV register&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x00, 0x00);&lt;BR /&gt; clrc630_write_reg(0x02, 0xB0);&lt;BR /&gt; clrc630_write_reg(0x06, 0x7F);&lt;BR /&gt; clrc630_write_reg(0x07, 0x7F);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// write in iso15693 protocol params&lt;BR /&gt;clrc630_write_reg(0x05, 0x0A);&lt;BR /&gt;clrc630_write_reg(0x05, 0x0A);&lt;BR /&gt;clrc630_write_reg(0x08, 0x10); // Enable IRQ0, IRQ1 interrupt sources&lt;BR /&gt;clrc630_write_reg(0x09, 0x40);&lt;BR /&gt;clrc630_write_reg(0x00, 0x0D); // Execute Rc663 command: "Load protocol"&lt;BR /&gt;while (!(clrc630_read_reg(0x07)&amp;amp;0x40));&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x08, 0x00); //disable irq0 and irq1&lt;BR /&gt; clrc630_write_reg(0x09, 0x00);&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x02, 0xB0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// apply register set&lt;BR /&gt; clrc630_write_reg(0x2C, 0x7B);&lt;BR /&gt; clrc630_write_reg(0x2D, 0x7B);&lt;BR /&gt; clrc630_write_reg(0x2E, 0x08);&lt;BR /&gt; clrc630_write_reg(0x2F, 0x00);&lt;BR /&gt; clrc630_write_reg(0x30, 0x00);&lt;BR /&gt; clrc630_write_reg(0x31, 0x00);&lt;BR /&gt; clrc630_write_reg(0x33, 0x0F);&lt;BR /&gt; clrc630_write_reg(0x35, 0x02);&lt;BR /&gt; clrc630_write_reg(0x37, 0x4E);&lt;BR /&gt; clrc630_write_reg(0x39, 0x04);&lt;BR /&gt; clrc630_write_reg(0x36, 0x8C); // Set the RxWait register&lt;BR /&gt; clrc630_write_reg(0x31, 0xC0);&lt;BR /&gt; clrc630_write_reg(0x32, 0x00);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// write timer0 and timer1 reload value&lt;BR /&gt; clrc630_write_reg(0x10, 0x18); // tim0&lt;BR /&gt; clrc630_write_reg(0x11, 0x86);&lt;BR /&gt; clrc630_write_reg(0x15, 0x00); // tim1&lt;BR /&gt; clrc630_write_reg(0x16, 0x00);&lt;BR /&gt; clrc630_write_reg(0x29, 0x0A);&lt;BR /&gt; clrc630_write_reg(0x28, 0x81);&lt;BR /&gt; clrc630_write_reg(0x0B, 0x00); // Disable MIFARE Crypto1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// field on&lt;BR /&gt; clrc630_write_reg(0x28, 0x89);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// activated card&lt;BR /&gt; clrc630_write_reg(0x10, 0x24); // set timeout tim0 and tim1 reload values&lt;BR /&gt; clrc630_write_reg(0x11, 0xEB);&lt;BR /&gt; clrc630_write_reg(0x15, 0x00);&lt;BR /&gt; clrc630_write_reg(0x16, 0x00);&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x00, 0x00);&lt;BR /&gt; clrc630_write_reg(0x02, 0xB0);&lt;BR /&gt; clrc630_write_reg(0x06, 0x7F);&lt;BR /&gt; clrc630_write_reg(0x07, 0x7F);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x05, 0x36); //send the "uid request command"&lt;BR /&gt; clrc630_write_reg(0x05, 0x01);&lt;BR /&gt; clrc630_write_reg(0x05, 0x00);&lt;BR /&gt;clrc630_write_reg(0x05, 0x00);&lt;BR /&gt; clrc630_write_reg(0x00, 0x07);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x08, 0x18); //IdleIRQEn and TxIRQEn&lt;BR /&gt; clrc630_write_reg(0x09, 0x02); //IRQPinEN and Timer1IRQEn&lt;BR /&gt; while (!(clrc630_read_reg(0x07)&amp;amp;0x40));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x08, 0x00); //disable irq0 and irq1&lt;BR /&gt; clrc630_write_reg(0x09, 0x00);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint8_t irq0 = clrc630_read_reg(0x06);&lt;BR /&gt; uint8_t irq1 = clrc630_read_reg(0x07);&lt;BR /&gt; if ((!(irq0 &amp;amp; CLRC630_IRQ0_RX_IRQ)) || (irq0 &amp;amp; CLRC630_IRQ0_ERR_IRQ)) {&lt;BR /&gt; CLRC630_PRINTF("No RX, irq1: %x irq0: %x\n", irq1, irq0);&lt;BR /&gt; return;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint8_t buf[10]; // Size is maximum of 10 bytes&lt;BR /&gt; uint8_t len = clrc630_read_reg(0x04);//read FIFO length&lt;BR /&gt; for (int i = 0; i &amp;lt; len; i++) {&lt;BR /&gt; buf[i] = clrc630_read_reg(0x05); // Read FIFO,Expected - Complete UID (one PICC in HF)&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;CLRC630_PRINTF("%d bytes UID: ", len);&lt;BR /&gt; clrc630_print_block(buf, len);&lt;BR /&gt; CLRC630_PRINTF("\n");&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Sep 2019 05:43:07 GMT</pubDate>
    <dc:creator>henry_w</dc:creator>
    <dc:date>2019-09-10T05:43:07Z</dc:date>
    <item>
      <title>Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968610#M6179</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am able to use CLRC663 to read the iso14443 card uid easily. However, there is no response from HID iClass card which assumed to be compiled with iso15693. All I need is the uid of the card. The CLRC663 chip is connected to a stm32 uC using I2C interface. I attached the code I am using below. Please help me to have a look and kindly provide your suggestions. Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x37, 0xFF); //Selects minimum threshold level for the bit decoder&lt;/P&gt;&lt;P&gt;//load 15693 protocol&lt;BR /&gt; clrc630_write_reg(0x0F, 0x98); //config T0&lt;BR /&gt; clrc630_write_reg(0x14, 0x92); //config T1&lt;BR /&gt; clrc630_write_reg(0x19, 0x20); //config T2 for LFO autotrim&lt;BR /&gt; clrc630_write_reg(0x1A, 0x03); //T2 reload value for LFO AutoTrimm&lt;BR /&gt; clrc630_write_reg(0x1B, 0xFF);&lt;BR /&gt; clrc630_write_reg(0x1E, 0x00); // Configure T3 (for LPCD/ AutoTrimm)&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x02, 0x90); // Set FiFo-Size and Waterlevel&lt;BR /&gt; clrc630_write_reg(0x03, 0xFE);&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x0C, 0x80); // Init. RxBitCtrl register&lt;BR /&gt; clrc630_write_reg(0x28, 0x80); // TxMode register&lt;BR /&gt; clrc630_write_reg(0x29, 0x00); // TxAmp register&lt;BR /&gt; clrc630_write_reg(0x2A, 0x01); // TxCon register&lt;BR /&gt; clrc630_write_reg(0x2B, 0x05); // Init. TxI register&lt;BR /&gt; clrc630_write_reg(0x34, 0x00); // Init RxSOFD register&lt;BR /&gt; clrc630_write_reg(0x38, 0x12); // Init. RCV register&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x00, 0x00);&lt;BR /&gt; clrc630_write_reg(0x02, 0xB0);&lt;BR /&gt; clrc630_write_reg(0x06, 0x7F);&lt;BR /&gt; clrc630_write_reg(0x07, 0x7F);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// write in iso15693 protocol params&lt;BR /&gt;clrc630_write_reg(0x05, 0x0A);&lt;BR /&gt;clrc630_write_reg(0x05, 0x0A);&lt;BR /&gt;clrc630_write_reg(0x08, 0x10); // Enable IRQ0, IRQ1 interrupt sources&lt;BR /&gt;clrc630_write_reg(0x09, 0x40);&lt;BR /&gt;clrc630_write_reg(0x00, 0x0D); // Execute Rc663 command: "Load protocol"&lt;BR /&gt;while (!(clrc630_read_reg(0x07)&amp;amp;0x40));&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x08, 0x00); //disable irq0 and irq1&lt;BR /&gt; clrc630_write_reg(0x09, 0x00);&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x02, 0xB0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// apply register set&lt;BR /&gt; clrc630_write_reg(0x2C, 0x7B);&lt;BR /&gt; clrc630_write_reg(0x2D, 0x7B);&lt;BR /&gt; clrc630_write_reg(0x2E, 0x08);&lt;BR /&gt; clrc630_write_reg(0x2F, 0x00);&lt;BR /&gt; clrc630_write_reg(0x30, 0x00);&lt;BR /&gt; clrc630_write_reg(0x31, 0x00);&lt;BR /&gt; clrc630_write_reg(0x33, 0x0F);&lt;BR /&gt; clrc630_write_reg(0x35, 0x02);&lt;BR /&gt; clrc630_write_reg(0x37, 0x4E);&lt;BR /&gt; clrc630_write_reg(0x39, 0x04);&lt;BR /&gt; clrc630_write_reg(0x36, 0x8C); // Set the RxWait register&lt;BR /&gt; clrc630_write_reg(0x31, 0xC0);&lt;BR /&gt; clrc630_write_reg(0x32, 0x00);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// write timer0 and timer1 reload value&lt;BR /&gt; clrc630_write_reg(0x10, 0x18); // tim0&lt;BR /&gt; clrc630_write_reg(0x11, 0x86);&lt;BR /&gt; clrc630_write_reg(0x15, 0x00); // tim1&lt;BR /&gt; clrc630_write_reg(0x16, 0x00);&lt;BR /&gt; clrc630_write_reg(0x29, 0x0A);&lt;BR /&gt; clrc630_write_reg(0x28, 0x81);&lt;BR /&gt; clrc630_write_reg(0x0B, 0x00); // Disable MIFARE Crypto1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// field on&lt;BR /&gt; clrc630_write_reg(0x28, 0x89);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// activated card&lt;BR /&gt; clrc630_write_reg(0x10, 0x24); // set timeout tim0 and tim1 reload values&lt;BR /&gt; clrc630_write_reg(0x11, 0xEB);&lt;BR /&gt; clrc630_write_reg(0x15, 0x00);&lt;BR /&gt; clrc630_write_reg(0x16, 0x00);&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x00, 0x00);&lt;BR /&gt; clrc630_write_reg(0x02, 0xB0);&lt;BR /&gt; clrc630_write_reg(0x06, 0x7F);&lt;BR /&gt; clrc630_write_reg(0x07, 0x7F);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x05, 0x36); //send the "uid request command"&lt;BR /&gt; clrc630_write_reg(0x05, 0x01);&lt;BR /&gt; clrc630_write_reg(0x05, 0x00);&lt;BR /&gt;clrc630_write_reg(0x05, 0x00);&lt;BR /&gt; clrc630_write_reg(0x00, 0x07);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x08, 0x18); //IdleIRQEn and TxIRQEn&lt;BR /&gt; clrc630_write_reg(0x09, 0x02); //IRQPinEN and Timer1IRQEn&lt;BR /&gt; while (!(clrc630_read_reg(0x07)&amp;amp;0x40));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clrc630_write_reg(0x08, 0x00); //disable irq0 and irq1&lt;BR /&gt; clrc630_write_reg(0x09, 0x00);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint8_t irq0 = clrc630_read_reg(0x06);&lt;BR /&gt; uint8_t irq1 = clrc630_read_reg(0x07);&lt;BR /&gt; if ((!(irq0 &amp;amp; CLRC630_IRQ0_RX_IRQ)) || (irq0 &amp;amp; CLRC630_IRQ0_ERR_IRQ)) {&lt;BR /&gt; CLRC630_PRINTF("No RX, irq1: %x irq0: %x\n", irq1, irq0);&lt;BR /&gt; return;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint8_t buf[10]; // Size is maximum of 10 bytes&lt;BR /&gt; uint8_t len = clrc630_read_reg(0x04);//read FIFO length&lt;BR /&gt; for (int i = 0; i &amp;lt; len; i++) {&lt;BR /&gt; buf[i] = clrc630_read_reg(0x05); // Read FIFO,Expected - Complete UID (one PICC in HF)&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;CLRC630_PRINTF("%d bytes UID: ", len);&lt;BR /&gt; clrc630_print_block(buf, len);&lt;BR /&gt; CLRC630_PRINTF("\n");&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2019 05:43:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968610#M6179</guid>
      <dc:creator>henry_w</dc:creator>
      <dc:date>2019-09-10T05:43:07Z</dc:date>
    </item>
    <item>
      <title>Re: Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968611#M6180</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Henry,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i am forcing with the same problem.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Did you solve the problem with Hid hid numbers and nxp chips?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;best regards&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Gunther&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Sep 2019 15:49:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968611#M6180</guid>
      <dc:creator>s_</dc:creator>
      <dc:date>2019-09-12T15:49:17Z</dc:date>
    </item>
    <item>
      <title>Re: Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968612#M6181</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Gunther,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Not yet. As I said, all I need is the UID. So if iClass card is a ISO 15693 type, it should respond to the above script. Are you using a similar script? Does your iClass card respond in any way?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Henry&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Sep 2019 00:55:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968612#M6181</guid>
      <dc:creator>henry_w</dc:creator>
      <dc:date>2019-09-13T00:55:53Z</dc:date>
    </item>
    <item>
      <title>Re: Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968613#M6182</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Henry,&lt;BR /&gt;&lt;BR /&gt;We do not get any respond yet.&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Gunther&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Sep 2019 14:55:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968613#M6182</guid>
      <dc:creator>s_</dc:creator>
      <dc:date>2019-09-16T14:55:22Z</dc:date>
    </item>
    <item>
      <title>Re: Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968614#M6183</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Guys, Please check the following script,&amp;nbsp;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jonathan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Sep 2019 15:14:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968614#M6183</guid>
      <dc:creator>Jonathan_Iglesias</dc:creator>
      <dc:date>2019-09-23T15:14:29Z</dc:date>
    </item>
    <item>
      <title>Re: Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968615#M6184</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Henry, I am struggleing to read ISO 14443 UID. &amp;nbsp;I could read ATQA but can not figure out how to read UID.&amp;nbsp;Would you mind sharing your code here? Many thanks in advance.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Feb 2020 18:29:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968615#M6184</guid>
      <dc:creator>minabf61</dc:creator>
      <dc:date>2020-02-26T18:29:29Z</dc:date>
    </item>
    <item>
      <title>Re: Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968616#M6185</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Mina&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are you using theNFC Libray or are you writing directly to the CLRC663 ?&lt;/P&gt;&lt;P&gt;I'm using a Mícrochip PIC18 connected to the via SPI.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The below is the function I use to retrieve the UID from both 4 and 7 byte transponders - I have added the support for 7 byte UID - the rest is not my work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;case 6: // Select card and retrive full UID&lt;BR /&gt; { // int Clrc663::iso_14443A_select(uint8_t *uid)&lt;BR /&gt; // Get UID, Apply cascade level-1&lt;BR /&gt; WriteSPI(RC663_TxDataNum, 0x08); //BIT3 If cleared - it is possible to send a single symbol pattern.If set - data is sent.&lt;BR /&gt; WriteSPI(RC663_RxBitCtrl, 0x00); //&lt;BR /&gt; WriteSPI(RC663_Command, RC663_Idle); // Terminate any running command.&lt;BR /&gt; WriteSPI(RC663_FIFOControl, 0xB0); // Flush_FiFo&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_IRQ0, 0x7F); // Clear all IRQ 0,1 flags&lt;BR /&gt; WriteSPI(RC663_IRQ1, 0x7F); //&lt;BR /&gt; &lt;BR /&gt; WriteSPI(RC663_FIFOData, 0x93); //Write "Anticollision CL1" cmd into FIFO (SEL=93, NVB=20,cascade level-1)&lt;BR /&gt; WriteSPI(RC663_FIFOData, 0x20); // 4 Byte UID CL1&lt;BR /&gt; WriteSPI(RC663_Command, RC663_Transceive); //Start tranceive command&lt;BR /&gt; RC663IrqWait(0x18, 0x2); // Wait for idle, tx, or timer1&lt;/P&gt;&lt;P&gt;len = ReadSPI(RC663_FIFOLength); //read FIFO length&lt;BR /&gt; if (len != 5)&lt;BR /&gt; return 0x01; // No transponder&lt;BR /&gt; &lt;BR /&gt; for (int i = 0; i &amp;lt; len; i++)&lt;BR /&gt; {&lt;BR /&gt; RC663.buffer[i+2] = ReadSPI(RC663_FIFOData); // Read FIFO,Expected - Complete UID (one PICC in HF)&lt;BR /&gt; }&lt;BR /&gt; //now we got UID ,we continue to use this UID to select the card&lt;BR /&gt; //this command needs CRC appended&lt;BR /&gt; WriteSPI(RC663_TxCrcPreset, 0x19); // Preset value is6363,use crc16,crc is apended to the data stream&lt;BR /&gt; WriteSPI(RC663_RxCrcPreset, 0x19); //&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_Command, RC663_Idle); // Terminate any running command.&lt;BR /&gt; WriteSPI(RC663_FIFOControl, 0xB0); // Flush_FiFo&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_FIFOData, 0x93); // Write "Select CL1" cmd into FIFO (0x93 / 0x70)&lt;BR /&gt; WriteSPI(RC663_FIFOData, 0x70); // &lt;BR /&gt; &lt;BR /&gt; for (int i = 0; i &amp;lt; len; i++) // &lt;BR /&gt; {&lt;BR /&gt; WriteSPI(RC663_FIFOData, RC663.buffer[i+2]); // Add UID0-UID3 + BCC or CT + UID0-UID2 + BCC&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; WriteSPI(RC663_Command, RC663_Transceive); //Start tranceive command ,expecting to receive SAK ,select acknowlegement&lt;BR /&gt; RC663IrqWait(0x18, 0x2); // Wait for idle, tx, or timer1&lt;BR /&gt; len = ReadSPI(RC663_FIFOLength); // Read FIFO length -&amp;gt; should be 0x01 for SAK returned&lt;BR /&gt; &lt;BR /&gt; if (len == 0x01)&lt;BR /&gt; RC663.SAK = ReadSPI(RC663_FIFOData);// Read FIFO,Expecting SAK, here wo should next level of anti-collision&lt;BR /&gt; else&lt;BR /&gt; return 0x01; // No transponder&lt;BR /&gt; &lt;BR /&gt; if ((RC663.SAK &amp;amp; 0x04) == 0x00) // SAK's bit2=0,then UID is complete&lt;BR /&gt; {&lt;BR /&gt; for (int i = 0; i &amp;lt; 4; i++)&lt;BR /&gt; {&lt;BR /&gt; RC663.UID[i] = RC663.buffer[i+2]; // Save UID (4 bytes))&lt;BR /&gt; }&lt;BR /&gt; RC663.UIDlen = 4; // Save UID length&lt;BR /&gt; return 0x00; // Transponder succesfully selected&lt;BR /&gt; }&lt;BR /&gt; // if SAK's bit2=1,then UID is not finished yet&lt;BR /&gt; if ((RC663.SAK &amp;amp; 0x04) == 0x04) // Cascade level-2&lt;BR /&gt; {&lt;BR /&gt; Delay(1); // Wait 1 ms before sending data again - Request Guard Time &amp;gt; 0,5 ms&lt;BR /&gt; WriteSPI(RC663_TxCrcPreset, 0x18); // Preset value is6363,use crc16,crc is _NOT_ appended to the data stream&lt;BR /&gt; WriteSPI(RC663_RxCrcPreset, 0x18); //&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_Command, RC663_Idle);// Terminate any running command.&lt;BR /&gt; WriteSPI(RC663_FIFOControl, 0xB0); // Flush_FiFo&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_IRQ0, 0x7F); // Clear IRQ0 flags&lt;BR /&gt; WriteSPI(RC663_IRQ1, 0x7F); // Clear IRQ1 flags&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_FIFOData, 0x95); // Write "Anticollision CL2" cmd into FIFO (SEL=95 NVB=20,cascade level-2)&lt;BR /&gt; WriteSPI(RC663_FIFOData, 0x20); // 7 Byte UID CL2&lt;BR /&gt; WriteSPI(RC663_Command, RC663_Transceive); //Start tranceive command&lt;BR /&gt; RC663IrqWait(0x18, 0x2); // Wait for idle, tx, or timer1&lt;/P&gt;&lt;P&gt;len = ReadSPI(RC663_FIFOLength); //read FIFO length&lt;BR /&gt; if (len != 5)&lt;BR /&gt; return 0x01; // No transponder&lt;BR /&gt; &lt;BR /&gt; for (int i = 0; i &amp;lt; len; i++)&lt;BR /&gt; {&lt;BR /&gt; RC663.buffer[i+7] = ReadSPI(RC663_FIFOData); // Read FIFO,Expected - Last part of UID (one PICC in HF)&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;//now we got UID ,we continue to use this UID to select the card&lt;BR /&gt; //this command needs CRC appended&lt;BR /&gt; WriteSPI(RC663_TxCrcPreset, 0x19); //preset value is6363,use crc16,crc is apended to the data stream&lt;BR /&gt; WriteSPI(RC663_RxCrcPreset, 0x19); //&lt;BR /&gt; &lt;BR /&gt; WriteSPI(RC663_Command, RC663_Idle);// Terminate any running command.&lt;BR /&gt; WriteSPI(RC663_FIFOControl, 0xB0); // Flush_FiFo&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_FIFOData, 0x95); // Write "Select CL2" cmd into FIFO (0x95 / 0x70)&lt;BR /&gt; WriteSPI(RC663_FIFOData, 0x70); //&lt;/P&gt;&lt;P&gt;for (int i = 0; i &amp;lt; len; i++)&lt;BR /&gt; {&lt;BR /&gt; WriteSPI(RC663_FIFOData, RC663.buffer[i+7]); // Add CT + UID0-UID2 + BCC&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;WriteSPI(RC663_Command, RC663_Transceive); //Start tranceive command ,expecting to receive SAK ,select acknowlegement&lt;BR /&gt; RC663IrqWait(0x18, 0x2); // Wait for idle, tx, or timer1&lt;BR /&gt; len = ReadSPI(RC663_FIFOLength); //read FIFO length&lt;/P&gt;&lt;P&gt;if (len == 0x01)&lt;BR /&gt; RC663.SAK = ReadSPI(RC663_FIFOData);// Read FIFO,Expecting SAK,here wo should next level of anti-collision&lt;BR /&gt; else&lt;BR /&gt; return 0x01; // No transponder&lt;BR /&gt; &lt;BR /&gt; if ((RC663.SAK &amp;amp; 0x04) == 0x00) // SAK's bit2=0,then UID is complete&lt;BR /&gt; {&lt;BR /&gt; for (int i = 0; i &amp;lt; 3; i++)&lt;BR /&gt; {&lt;BR /&gt; RC663.UID[i] = RC663.buffer[i+3]; // Save UID (3 bytes))&lt;BR /&gt; }&lt;BR /&gt; for (int i = 3; i &amp;lt; 7; i++)&lt;BR /&gt; {&lt;BR /&gt; RC663.UID[i] = RC663.buffer[i+4]; // Save UID (4 bytes))&lt;BR /&gt; }&lt;BR /&gt; RC663.UIDlen = 7; // Save UID length&lt;BR /&gt; return 0x00; // Transponder succesfully selected&lt;BR /&gt; } &lt;BR /&gt; Nop();&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; break;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Søren&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Mar 2020 09:02:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968616#M6185</guid>
      <dc:creator>sb2</dc:creator>
      <dc:date>2020-03-06T09:02:41Z</dc:date>
    </item>
    <item>
      <title>Re: Use CLRC663 to read HID iClass UID</title>
      <link>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968617#M6186</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Soren for sharing your code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Update- I finally made&amp;nbsp;it work using the code&amp;nbsp;here:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://github.com/iwanders/MFRC630" title="https://github.com/iwanders/MFRC630"&gt;GitHub - iwanders/MFRC630: A library for NXP's MFRC630 NFC IC.&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However,&amp;nbsp;there was only some lines missing in this code(At least for my case) which I added and then that was it. The problem was the RF field needed to get on before recognising the card and&amp;nbsp; also I loaded the protocol and rx and tx speed (AN1657 for reference).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Mar 2020 08:40:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/Use-CLRC663-to-read-HID-iClass-UID/m-p/968617#M6186</guid>
      <dc:creator>mina_farah</dc:creator>
      <dc:date>2020-03-09T08:40:31Z</dc:date>
    </item>
  </channel>
</rss>

