<?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>NFCのトピックCLRC663 locks I2C</title>
    <link>https://community.nxp.com/t5/NFC/CLRC663-locks-I2C/m-p/1862683#M11671</link>
    <description>&lt;DIV&gt;Hello:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have a code implementation for reading UID and write/read data for MIFARE CLASSIC tags that works fine using CLRC663 and SPI communication.&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am trying to use it with I2C communication but i have problems with the CLRC663. It is locking the bus after readings .&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I can write data to CLRC663's registers and i receive I2C AKCs ( even i can perform NFC TX transmissions), but the CLRC663 breaks the bus after reading operations. CLRC663 sends a byte of data, but then it indefinitely holds SDA Low (SCL keeps high) and the only way i have to unlock the bus is manually sending pulses through SCL (revive_I2C() function provided or with a writing call).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am following the information about the protocol provided in the datasheet of CLRC663 (8.4.4.8 I2C-register read access part).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have checked the data with the osciloscope and I cut off microcontroler'SDA line in order to check which system is locking the bus. I also have tested the I2C communicaton with another devices and the bus work fine.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Could you help me? What could the error be?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;CODE EXAMPLE&lt;/DIV&gt;&lt;DIV&gt;********************************************************&lt;/DIV&gt;&lt;DIV&gt;void revive_I2C()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (input(I2C_SCL) &amp;amp;&amp;amp; !input(I2C_SDA)) //IF I2C LOCKED&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; 9; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; output_low(I2C_SCL);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; delay_us(10);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; output_float(I2C_SCL);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; delay_us(10);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; i2c_stop();&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void main()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;int value;&lt;/DIV&gt;&lt;DIV&gt;#define I2C_CLR663_DIR_R 0b01010001&lt;/DIV&gt;&lt;DIV&gt;#define I2C_CLR663_DIR_W 0b01010000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_start();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_write(I2C_CLR663_DIR_W);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_write(CLRC663_REG_STATUS);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_stop();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_start();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_write(I2C_CLR663_DIR_R);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; value = i2c_read();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_stop();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; printf("\n Readed: %x", value);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; while(1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {;}&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;***************************************************&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The hardware i am using is a PIC microcontroler (with CCS) connected to a custom PCB with a CLRC66303 IC and an antenna. The I2C pullups are 1K resistors. IFx and IFSELx pin connections configured for I2C according with the CLRC663 datasheet. I tried severeal CLRC663 from several providers.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The IF/IFSEL connections are the following:&lt;/DIV&gt;&lt;DIV&gt;IF0 - GND IFSEL0 - 3.3V&lt;/DIV&gt;&lt;DIV&gt;IF1 - SCL IFSEL1 - GND&lt;/DIV&gt;&lt;DIV&gt;IF2 - GND&lt;/DIV&gt;&lt;DIV&gt;IF3 - SDA&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 09 May 2024 16:17:57 GMT</pubDate>
    <dc:creator>dcarro</dc:creator>
    <dc:date>2024-05-09T16:17:57Z</dc:date>
    <item>
      <title>CLRC663 locks I2C</title>
      <link>https://community.nxp.com/t5/NFC/CLRC663-locks-I2C/m-p/1862683#M11671</link>
      <description>&lt;DIV&gt;Hello:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have a code implementation for reading UID and write/read data for MIFARE CLASSIC tags that works fine using CLRC663 and SPI communication.&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am trying to use it with I2C communication but i have problems with the CLRC663. It is locking the bus after readings .&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I can write data to CLRC663's registers and i receive I2C AKCs ( even i can perform NFC TX transmissions), but the CLRC663 breaks the bus after reading operations. CLRC663 sends a byte of data, but then it indefinitely holds SDA Low (SCL keeps high) and the only way i have to unlock the bus is manually sending pulses through SCL (revive_I2C() function provided or with a writing call).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am following the information about the protocol provided in the datasheet of CLRC663 (8.4.4.8 I2C-register read access part).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have checked the data with the osciloscope and I cut off microcontroler'SDA line in order to check which system is locking the bus. I also have tested the I2C communicaton with another devices and the bus work fine.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Could you help me? What could the error be?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;CODE EXAMPLE&lt;/DIV&gt;&lt;DIV&gt;********************************************************&lt;/DIV&gt;&lt;DIV&gt;void revive_I2C()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (input(I2C_SCL) &amp;amp;&amp;amp; !input(I2C_SDA)) //IF I2C LOCKED&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; 9; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; output_low(I2C_SCL);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; delay_us(10);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; output_float(I2C_SCL);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; delay_us(10);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; i2c_stop();&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void main()&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;int value;&lt;/DIV&gt;&lt;DIV&gt;#define I2C_CLR663_DIR_R 0b01010001&lt;/DIV&gt;&lt;DIV&gt;#define I2C_CLR663_DIR_W 0b01010000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_start();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_write(I2C_CLR663_DIR_W);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_write(CLRC663_REG_STATUS);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_stop();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_start();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_write(I2C_CLR663_DIR_R);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; value = i2c_read();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; i2c_stop();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; printf("\n Readed: %x", value);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; while(1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {;}&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;***************************************************&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The hardware i am using is a PIC microcontroler (with CCS) connected to a custom PCB with a CLRC66303 IC and an antenna. The I2C pullups are 1K resistors. IFx and IFSELx pin connections configured for I2C according with the CLRC663 datasheet. I tried severeal CLRC663 from several providers.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The IF/IFSEL connections are the following:&lt;/DIV&gt;&lt;DIV&gt;IF0 - GND IFSEL0 - 3.3V&lt;/DIV&gt;&lt;DIV&gt;IF1 - SCL IFSEL1 - GND&lt;/DIV&gt;&lt;DIV&gt;IF2 - GND&lt;/DIV&gt;&lt;DIV&gt;IF3 - SDA&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 09 May 2024 16:17:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/CLRC663-locks-I2C/m-p/1862683#M11671</guid>
      <dc:creator>dcarro</dc:creator>
      <dc:date>2024-05-09T16:17:57Z</dc:date>
    </item>
    <item>
      <title>Re: CLRC663 locks I2C</title>
      <link>https://community.nxp.com/t5/NFC/CLRC663-locks-I2C/m-p/1875538#M11725</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN&gt;I&amp;nbsp;&lt;/SPAN&gt;would suggest our customer use NFC reader library to develop their application,&amp;nbsp; it is easier to use.&lt;/DIV&gt;
&lt;DIV&gt;If you use the RC663 without library, please refer to AN12657.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;For CLRC663 connects to host MCU through I2C, we need to check&amp;nbsp; CLRC663 pins 23 and 24 are for I2C ,&amp;nbsp; pins 28 to 31 can be used either by a secondary I2C, SPI, or UART.&amp;nbsp; Please keep in mind that pins 26 and 27.&amp;nbsp; If you are using our evaluation board and trying to communicate with an external MCU, it is required to modify some resistor configuration.&lt;/DIV&gt;
&lt;DIV&gt;These are shown in the next community document.&lt;BR clear="none" /&gt;&lt;A href="https://community.nxp.com/t5/NXP-Designs-Knowledge-Base/How-to-port-the-NFC-Reader-Library-to-Kinetis-K64F-MCU/ta-p/1119073" target="_blank" rel="noopener" shape="rect"&gt;https://community.nxp.com/t5/NXP-Designs-Knowledge-Base/How-to-port-the-NFC-Reader-Library-to-Kinetis-K64F-MCU/ta-p/1119073&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;If you can read and write CLRC663 registers through i2c then i2c interface is working.&amp;nbsp; &amp;nbsp;If not working well, I would suggest you check the bus frequency.&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 May 2024 11:17:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/NFC/CLRC663-locks-I2C/m-p/1875538#M11725</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2024-05-27T11:17:40Z</dc:date>
    </item>
  </channel>
</rss>

